@azure/communication-react 1.18.0-alpha-202407191547 → 1.18.0-alpha-202407262302
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/communication-react.d.ts +15 -23
 - package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-ChK7xe6Z.js → ChatMessageComponentAsRichTextEditBox-CmXCpkwp.js} +5 -33
 - package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-CmXCpkwp.js.map +1 -0
 - package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-BLCHZv_g.js → RichTextSendBoxWrapper-DI4k0qyf.js} +2 -2
 - package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-BLCHZv_g.js.map → RichTextSendBoxWrapper-DI4k0qyf.js.map} +1 -1
 - package/dist/dist-cjs/communication-react/{index-BWVQuckY.js → index-BSczaURy.js} +184 -249
 - package/dist/dist-cjs/communication-react/index-BSczaURy.js.map +1 -0
 - package/dist/dist-cjs/communication-react/index.js +1 -1
 - package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
 - package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
 - package/dist/dist-esm/calling-component-bindings/src/baseSelectors.d.ts +1 -1
 - package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +3 -3
 - package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
 - package/dist/dist-esm/calling-component-bindings/src/notificationStackSelector.js +2 -2
 - package/dist/dist-esm/calling-component-bindings/src/notificationStackSelector.js.map +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +1 -3
 - package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/CallContext.js +2 -2
 - package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/Converter.js +1 -1
 - package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
 - package/dist/dist-esm/chat-stateful-client/src/ChatClientState.d.ts +3 -5
 - package/dist/dist-esm/chat-stateful-client/src/ChatClientState.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/Attachment/AttachmentCard.js +8 -14
 - package/dist/dist-esm/react-components/src/components/Attachment/AttachmentCard.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js +4 -35
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js +1 -6
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/MeetingConferencePhoneInfo.d.ts +8 -8
 - package/dist/dist-esm/react-components/src/components/MeetingConferencePhoneInfo.js +4 -4
 - package/dist/dist-esm/react-components/src/components/MeetingConferencePhoneInfo.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js +1 -0
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +14 -21
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.d.ts +2 -2
 - package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.js +17 -15
 - package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/styles/Common.style.d.ts +1 -1
 - package/dist/dist-esm/react-components/src/components/styles/Common.style.js +1 -2
 - package/dist/dist-esm/react-components/src/components/styles/Common.style.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +2 -5
 - package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js +3 -0
 - package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.d.ts +2 -6
 - package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js +12 -57
 - package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js.map +1 -1
 - package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +1 -1
 - package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
 - package/dist/dist-esm/react-components/src/localization/locales/ar-SA/strings.json +64 -102
 - package/dist/dist-esm/react-components/src/localization/locales/cs-CZ/strings.json +62 -100
 - package/dist/dist-esm/react-components/src/localization/locales/de-DE/strings.json +62 -100
 - package/dist/dist-esm/react-components/src/localization/locales/en-GB/strings.json +62 -100
 - package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +1 -1
 - package/dist/dist-esm/react-components/src/localization/locales/es-ES/strings.json +62 -100
 - package/dist/dist-esm/react-components/src/localization/locales/fi-FI/strings.json +62 -100
 - package/dist/dist-esm/react-components/src/localization/locales/fr-FR/strings.json +65 -103
 - package/dist/dist-esm/react-components/src/localization/locales/he-IL/strings.json +62 -100
 - package/dist/dist-esm/react-components/src/localization/locales/it-IT/strings.json +62 -100
 - package/dist/dist-esm/react-components/src/localization/locales/ja-JP/strings.json +64 -102
 - package/dist/dist-esm/react-components/src/localization/locales/ko-KR/strings.json +69 -107
 - package/dist/dist-esm/react-components/src/localization/locales/nb-NO/strings.json +62 -100
 - package/dist/dist-esm/react-components/src/localization/locales/nl-NL/strings.json +68 -106
 - package/dist/dist-esm/react-components/src/localization/locales/pl-PL/strings.json +67 -105
 - package/dist/dist-esm/react-components/src/localization/locales/pt-BR/strings.json +65 -103
 - package/dist/dist-esm/react-components/src/localization/locales/ru-RU/strings.json +63 -101
 - package/dist/dist-esm/react-components/src/localization/locales/sv-SE/strings.json +62 -100
 - package/dist/dist-esm/react-components/src/localization/locales/tr-TR/strings.json +63 -101
 - package/dist/dist-esm/react-components/src/localization/locales/zh-CN/strings.json +64 -102
 - package/dist/dist-esm/react-components/src/localization/locales/zh-TW/strings.json +63 -101
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.js +4 -4
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/NetworkReconnectTile.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/useMeetingPhoneInfo.js +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/components/SidePane/useMeetingPhoneInfo.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +10 -10
 - package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/MeetingPhoneInfoPaneContent.js +4 -4
 - package/dist/dist-esm/react-composites/src/composites/common/MeetingPhoneInfoPaneContent.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +2 -6
 - package/dist/dist-esm/react-composites/src/composites/common/icons.js +1 -5
 - package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/ar-SA/strings.json +5 -10
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/cs-CZ/strings.json +1 -6
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/de-DE/strings.json +1 -6
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/en-GB/strings.json +1 -6
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/es-ES/strings.json +1 -6
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/fi-FI/strings.json +5 -10
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/fr-FR/strings.json +5 -10
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/he-IL/strings.json +5 -10
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/it-IT/strings.json +5 -10
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/ja-JP/strings.json +1 -6
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/ko-KR/strings.json +5 -10
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/nb-NO/strings.json +1 -6
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/nl-NL/strings.json +1 -6
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/pl-PL/strings.json +1 -6
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/pt-BR/strings.json +5 -10
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/ru-RU/strings.json +1 -6
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/sv-SE/strings.json +5 -10
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/tr-TR/strings.json +1 -6
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-CN/strings.json +5 -10
 - package/dist/dist-esm/react-composites/src/composites/localization/locales/zh-TW/strings.json +5 -10
 - package/package.json +7 -7
 - package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-ChK7xe6Z.js.map +0 -1
 - package/dist/dist-cjs/communication-react/index-BWVQuckY.js.map +0 -1
 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"CallContext.js","sourceRoot":"","sources":["../../../../../calling-stateful-client/src/CallContext.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CommunicationIdentifierKind } from '@azure/communication-common';\nimport {\n  AudioDeviceInfo,\n  DeviceAccess,\n  DominantSpeakersInfo,\n  ParticipantRole,\n  ScalingMode,\n  VideoDeviceInfo\n} from '@azure/communication-calling';\nimport { RaisedHand } from '@azure/communication-calling';\n\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { TeamsMeetingAudioConferencingDetails } from '@azure/communication-calling';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { convertConferencePhoneInfo } from './Converter';\n\nimport { CapabilitiesChangeInfo, ParticipantCapabilities } from '@azure/communication-calling';\nimport { TeamsCaptionsInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(acs-close-captions) */\nimport { CaptionsKind, CaptionsInfo as AcsCaptionsInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(unsupported-browser) */\nimport { EnvironmentInfo } from '@azure/communication-calling';\nimport { AzureLogger, createClientLogger, getLogLevel } from '@azure/logger';\nimport EventEmitter from 'events';\nimport { enableMapSet, enablePatches, Patch, produce } from 'immer';\nimport {\n  CallEndReason,\n  CallState as CallStatus,\n  RemoteParticipantState as RemoteParticipantStatus\n} from '@azure/communication-calling';\nimport { _safeJSONStringify, toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport {\n  CallState,\n  CallClientState,\n  LocalVideoStreamState,\n  RemoteParticipantState,\n  RemoteVideoStreamState,\n  IncomingCallState,\n  VideoStreamRendererViewState,\n  CallAgentState,\n  CallErrors,\n  CallErrorTarget,\n  CallError\n} from './CallClientState';\nimport { CaptionsInfo } from './CallClientState';\nimport { ReactionState } from './CallClientState';\nimport { AcceptedTransfer } from './CallClientState';\nimport { callingStatefulLogger } from './Logger';\nimport { CallIdHistory } from './CallIdHistory';\nimport { LocalVideoStreamVideoEffectsState } from './CallClientState';\nimport { convertFromTeamsSDKToCaptionInfoState } from './Converter';\n/* @conditional-compile-remove(acs-close-captions) */\nimport { convertFromSDKToCaptionInfoState } from './Converter';\nimport { convertFromSDKToRaisedHandState } from './Converter';\nimport { ReactionMessage } from '@azure/communication-calling';\nimport { SpotlightedParticipant } from '@azure/communication-calling';\n/* @conditional-compile-remove(local-recording-notification) */\nimport { LocalRecordingInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(local-recording-notification) */\nimport { RecordingInfo } from '@azure/communication-calling';\n\nenableMapSet();\n// Needed to generate state diff for verbose logging.\nenablePatches();\n\n// TODO: How can we make this configurable?\n/**\n * @private\n */\nexport const MAX_CALL_HISTORY_LENGTH = 10;\n/**\n * @private\n */\nexport const REACTION_ANIMATION_TIME_MS = 4133;\n\n/**\n * @private\n */\nexport class CallContext {\n  private _logger: AzureLogger;\n  private _state: CallClientState;\n  private _emitter: EventEmitter;\n  private _atomicId: number;\n  private _callIdHistory: CallIdHistory = new CallIdHistory();\n  private _timeOutId: { [key: string]: NodeJS.Timeout } = {};\n\n  constructor(\n    userId: CommunicationIdentifierKind,\n    maxListeners = 50,\n    /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId?: string\n  ) {\n    this._logger = createClientLogger('communication-react:calling-context');\n    this._state = {\n      calls: {},\n      callsEnded: {},\n      incomingCalls: {},\n      incomingCallsEnded: {},\n      deviceManager: {\n        isSpeakerSelectionAvailable: false,\n        cameras: [],\n        microphones: [],\n        speakers: [],\n        unparentedViews: []\n      },\n      callAgent: undefined,\n      userId: userId,\n      /* @conditional-compile-remove(unsupported-browser) */ environmentInfo: undefined,\n      /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId: alternateCallerId,\n      latestErrors: {} as CallErrors\n    };\n    this._emitter = new EventEmitter();\n    this._emitter.setMaxListeners(maxListeners);\n    this._atomicId = 0;\n  }\n\n  public getState(): CallClientState {\n    return this._state;\n  }\n\n  public modifyState(modifier: (draft: CallClientState) => void): void {\n    const priorState = this._state;\n    this._state = produce(this._state, modifier, (patches: Patch[]) => {\n      if (getLogLevel() === 'verbose') {\n        // Log to `info` because AzureLogger.verbose() doesn't show up in console.\n        this._logger.info(`State change: ${_safeJSONStringify(patches)}`);\n      }\n    });\n    if (this._state !== priorState) {\n      this._emitter.emit('stateChanged', this._state);\n    }\n  }\n\n  public onStateChange(handler: (state: CallClientState) => void): void {\n    this._emitter.on('stateChanged', handler);\n  }\n\n  public offStateChange(handler: (state: CallClientState) => void): void {\n    this._emitter.off('stateChanged', handler);\n  }\n\n  // Disposing of the CallAgentDeclarative will not clear the state. If we create a new CallAgentDeclarative, we should\n  // make sure the state is clean because any left over state (if previous CallAgentDeclarative was disposed) may be\n  // invalid.\n  public clearCallRelatedState(): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.calls = {};\n      draft.incomingCalls = {};\n      draft.callsEnded = {};\n      draft.incomingCallsEnded = {};\n    });\n  }\n\n  public setCallAgent(callAgent: CallAgentState): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.callAgent = callAgent;\n    });\n  }\n\n  public setCall(call: CallState): void {\n    this.modifyState((draft: CallClientState) => {\n      const latestCallId = this._callIdHistory.latestCallId(call.id);\n      const existingCall = draft.calls[latestCallId];\n      if (existingCall) {\n        existingCall.callerInfo = call.callerInfo;\n        existingCall.state = call.state;\n        existingCall.callEndReason = call.callEndReason;\n        existingCall.direction = call.direction;\n        existingCall.isMuted = call.isMuted;\n        existingCall.isScreenSharingOn = call.isScreenSharingOn;\n        existingCall.localVideoStreams = call.localVideoStreams;\n        existingCall.remoteParticipants = call.remoteParticipants;\n        existingCall.transcription.isTranscriptionActive = call.transcription.isTranscriptionActive;\n        existingCall.optimalVideoCount.maxRemoteVideoStreams = call.optimalVideoCount.maxRemoteVideoStreams;\n        existingCall.recording.isRecordingActive = call.recording.isRecordingActive;\n        existingCall.raiseHand.raisedHands = call.raiseHand.raisedHands;\n        existingCall.pptLive.isActive = call.pptLive.isActive;\n        existingCall.raiseHand.localParticipantRaisedHand = call.raiseHand.localParticipantRaisedHand;\n        existingCall.role = call.role;\n        /* @conditional-compile-remove(total-participant-count) */\n        existingCall.totalParticipantCount = call.totalParticipantCount;\n        // We don't update the startTime and endTime if we are updating an existing active call\n        existingCall.captionsFeature.currentSpokenLanguage = call.captionsFeature.currentSpokenLanguage;\n        existingCall.captionsFeature.currentCaptionLanguage = call.captionsFeature.currentCaptionLanguage;\n        /* @conditional-compile-remove(meeting-id) */\n        existingCall.info = call.info;\n        /* @conditional-compile-remove(teams-meeting-conference) */\n        existingCall.meetingConference = call.meetingConference;\n      } else {\n        draft.calls[latestCallId] = call;\n      }\n    });\n  }\n\n  public removeCall(callId: string): void {\n    this.modifyState((draft: CallClientState) => {\n      delete draft.calls[this._callIdHistory.latestCallId(callId)];\n    });\n  }\n\n  public setCallEnded(callId: string, callEndReason: CallEndReason | undefined): void {\n    const latestCallId = this._callIdHistory.latestCallId(callId);\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[latestCallId];\n      if (call) {\n        call.endTime = new Date();\n        call.callEndReason = callEndReason;\n        delete draft.calls[latestCallId];\n        // Performance note: This loop should run only once because the number of entries\n        // is never allowed to exceed MAX_CALL_HISTORY_LENGTH. A loop is used for correctness.\n        while (Object.keys(draft.callsEnded).length >= MAX_CALL_HISTORY_LENGTH) {\n          delete draft.callsEnded[findOldestCallEnded(draft.callsEnded)];\n        }\n        draft.callsEnded[latestCallId] = call;\n      }\n    });\n  }\n\n  public setCallState(callId: string, state: CallStatus): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.state = state;\n      }\n    });\n  }\n\n  public setCallId(newCallId: string, oldCallId: string): void {\n    this._callIdHistory.updateCallIdHistory(newCallId, oldCallId);\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[oldCallId];\n      if (call) {\n        call.id = newCallId;\n        delete draft.calls[oldCallId];\n        draft.calls[newCallId] = call;\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(unsupported-browser) */\n  public setEnvironmentInfo(envInfo: EnvironmentInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.environmentInfo = envInfo;\n    });\n  }\n\n  public setCallIsScreenSharingOn(callId: string, isScreenSharingOn: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.isScreenSharingOn = isScreenSharingOn;\n      }\n    });\n  }\n\n  public setCallRemoteParticipants(\n    callId: string,\n    addRemoteParticipant: RemoteParticipantState[],\n    removeRemoteParticipant: string[]\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        removeRemoteParticipant.forEach((id: string) => {\n          delete call.remoteParticipants[id];\n        });\n        addRemoteParticipant.forEach((participant: RemoteParticipantState) => {\n          call.remoteParticipants[toFlatCommunicationIdentifier(participant.identifier)] = participant;\n        });\n        // TODO: need to remove after contentSharingRole avaible in WebCalling SDK.\n        if (!call.contentSharingRemoteParticipant) {\n          call.contentSharingRemoteParticipant = toFlatCommunicationIdentifier(addRemoteParticipant[0].identifier);\n        }\n      }\n    });\n  }\n\n  public setCallRemoteParticipantsEnded(\n    callId: string,\n    addRemoteParticipant: RemoteParticipantState[],\n    removeRemoteParticipant: string[]\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        removeRemoteParticipant.forEach((id: string) => {\n          delete call.remoteParticipantsEnded[id];\n        });\n        addRemoteParticipant.forEach((participant: RemoteParticipantState) => {\n          call.remoteParticipantsEnded[toFlatCommunicationIdentifier(participant.identifier)] = participant;\n        });\n      }\n    });\n  }\n\n  public setCallLocalVideoStream(\n    callId: string,\n    streamsAdded: LocalVideoStreamState[],\n    streamsRemoved: LocalVideoStreamState[]\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        for (const removedStream of streamsRemoved) {\n          const index = call.localVideoStreams.findIndex((i) => i.mediaStreamType === removedStream.mediaStreamType);\n          if (index > -1) {\n            call.localVideoStreams.splice(index, 1);\n          }\n        }\n\n        for (const addedStream of streamsAdded) {\n          const index = call.localVideoStreams.findIndex((i) => i.mediaStreamType === addedStream.mediaStreamType);\n          if (index > -1) {\n            call.localVideoStreams[index] = addedStream;\n          } else {\n            call.localVideoStreams.push(addedStream);\n          }\n        }\n      }\n    });\n  }\n\n  public setCallLocalVideoStreamVideoEffects(callId: string, videoEffects: LocalVideoStreamVideoEffectsState): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const stream = call.localVideoStreams?.find((i) => i.mediaStreamType === 'Video');\n        if (stream) {\n          stream.videoEffects = videoEffects;\n        }\n      }\n    });\n  }\n\n  public setCallIsMicrophoneMuted(callId: string, isMicrophoneMuted: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.isMuted = isMicrophoneMuted;\n      }\n    });\n  }\n\n  public setRole(callId: string, role: ParticipantRole): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.role = role;\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(total-participant-count) */\n  public setTotalParticipantCount(callId: string, totalParticipantCount: number): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.totalParticipantCount = totalParticipantCount;\n      }\n    });\n  }\n\n  public setCallDominantSpeakers(callId: string, dominantSpeakers: DominantSpeakersInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.dominantSpeakers = dominantSpeakers;\n      }\n    });\n  }\n\n  public setCallRecordingActive(callId: string, isRecordingActive: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.recording.isRecordingActive = isRecordingActive;\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(local-recording-notification) */\n  public setCallRecordingInfos(\n    callId: string,\n    recordingInfosAdded: RecordingInfo[],\n    lastStoppedRecording: RecordingInfo[]\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.recording.activeRecordings = recordingInfosAdded;\n        call.recording.lastStoppedRecording = lastStoppedRecording;\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(local-recording-notification) */\n  public setCallLocalRecordingActive(callId: string, isRecordingActive: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.localRecording.isLocalRecordingActive = isRecordingActive;\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(local-recording-notification) */\n  public setCallLocalRecordingInfos(\n    callId: string,\n    localRecordingInfosAdded: LocalRecordingInfo[],\n    lastStoppedRecording: LocalRecordingInfo[]\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.localRecording.activeLocalRecordings = localRecordingInfosAdded;\n        call.localRecording.lastStoppedLocalRecording = lastStoppedRecording;\n      }\n    });\n  }\n\n  public setCallPPTLiveActive(callId: string, isActive: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.pptLive.isActive = isActive;\n      }\n    });\n  }\n\n  public setCallParticipantPPTLive(callId: string, target: HTMLElement | undefined): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      const participantKey = call.contentSharingRemoteParticipant;\n      if (call && participantKey) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          participant.contentSharingStream = target;\n        }\n      }\n    });\n  }\n\n  public setCallRaisedHands(callId: string, raisedHands: RaisedHand[]): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.raiseHand.raisedHands = raisedHands.map((raisedHand) => {\n          return convertFromSDKToRaisedHandState(raisedHand);\n        });\n        const raisedHand = raisedHands.find(\n          (raisedHand) =>\n            toFlatCommunicationIdentifier(raisedHand.identifier) === toFlatCommunicationIdentifier(this._state.userId)\n        );\n        if (raisedHand) {\n          call.raiseHand.localParticipantRaisedHand = convertFromSDKToRaisedHandState(raisedHand);\n        } else {\n          call.raiseHand.localParticipantRaisedHand = undefined;\n        }\n      }\n    });\n  }\n\n  public setParticipantIsRaisedHand(callId: string, participantKey: string, raisedHand: RaisedHand | undefined): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          participant.raisedHand = raisedHand ? convertFromSDKToRaisedHandState(raisedHand) : raisedHand;\n        }\n      }\n    });\n  }\n\n  public setReceivedReactionFromParticipant(\n    callId: string,\n    participantKey: string,\n    reactionMessage: ReactionMessage | null\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n\n      if (!call) {\n        return;\n      }\n\n      clearTimeout(this._timeOutId[participantKey]);\n\n      const participant = call.remoteParticipants[participantKey];\n      const newReactionState: ReactionState | undefined = reactionMessage\n        ? { reactionMessage: reactionMessage, receivedOn: new Date() }\n        : undefined;\n\n      if (participantKey === toFlatCommunicationIdentifier(this._state.userId)) {\n        call.localParticipantReaction = newReactionState;\n      } else {\n        participant.reactionState = newReactionState;\n      }\n\n      if (reactionMessage) {\n        this._timeOutId[participantKey] = setTimeout(() => {\n          clearParticipantReactionState(this, callId, participantKey);\n        }, REACTION_ANIMATION_TIME_MS);\n      }\n    });\n  }\n\n  public setCallTranscriptionActive(callId: string, isTranscriptionActive: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.transcription.isTranscriptionActive = isTranscriptionActive;\n      }\n    });\n  }\n\n  public setCapabilities(\n    callId: string,\n    capabilities: ParticipantCapabilities,\n    capabilitiesChangeInfo: CapabilitiesChangeInfo\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.capabilitiesFeature = { capabilities, latestCapabilitiesChangeInfo: capabilitiesChangeInfo };\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(hide-attendee-name) */\n  public setHideAttendeeNames(callId: string, capabilitiesChangeInfo: CapabilitiesChangeInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (capabilitiesChangeInfo.oldValue.viewAttendeeNames !== capabilitiesChangeInfo.newValue.viewAttendeeNames) {\n        const viewAttendeeNames = capabilitiesChangeInfo.newValue.viewAttendeeNames;\n        if (\n          call &&\n          viewAttendeeNames &&\n          !viewAttendeeNames.isPresent &&\n          viewAttendeeNames.reason === 'MeetingRestricted'\n        ) {\n          call.hideAttendeeNames = true;\n        } else {\n          call.hideAttendeeNames = false;\n        }\n      }\n    });\n  }\n\n  public setSpotlight(\n    callId: string,\n    spotlightedParticipants: SpotlightedParticipant[],\n    maxParticipantsToSpotlight: number\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.spotlight = { ...call.spotlight, spotlightedParticipants, maxParticipantsToSpotlight };\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  public setTeamsMeetingConference(\n    callId: string,\n    teamsMeetingConferenceDetails: TeamsMeetingAudioConferencingDetails\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.meetingConference = { conferencePhones: convertConferencePhoneInfo(teamsMeetingConferenceDetails) };\n      }\n    });\n  }\n\n  public setParticipantSpotlighted(callId: string, spotlightedParticipant: SpotlightedParticipant): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[toFlatCommunicationIdentifier(spotlightedParticipant.identifier)];\n        if (participant) {\n          participant.spotlight = { spotlightedOrderPosition: spotlightedParticipant.order };\n        } else if (\n          call.spotlight &&\n          toFlatCommunicationIdentifier(draft.userId) ===\n            toFlatCommunicationIdentifier(spotlightedParticipant.identifier)\n        ) {\n          call.spotlight.localParticipantSpotlight = { spotlightedOrderPosition: spotlightedParticipant.order };\n        }\n      }\n    });\n  }\n\n  public setParticipantNotSpotlighted(callId: string, spotlightedParticipant: SpotlightedParticipant): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[toFlatCommunicationIdentifier(spotlightedParticipant.identifier)];\n        if (participant) {\n          participant.spotlight = undefined;\n        } else if (\n          call.spotlight &&\n          toFlatCommunicationIdentifier(draft.userId) ===\n            toFlatCommunicationIdentifier(spotlightedParticipant.identifier)\n        ) {\n          call.spotlight.localParticipantSpotlight = undefined;\n        }\n      }\n    });\n  }\n\n  public setCallScreenShareParticipant(callId: string, participantKey: string | undefined): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.screenShareRemoteParticipant = participantKey;\n      }\n    });\n  }\n\n  public setLocalVideoStreamRendererView(\n    callId: string,\n    localVideoMediaStreamType: string,\n    view: VideoStreamRendererViewState | undefined\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const localVideoStream = call.localVideoStreams.find(\n          (localVideoStream) => localVideoStream.mediaStreamType === localVideoMediaStreamType\n        );\n        if (localVideoStream) {\n          localVideoStream.view = view;\n        }\n      }\n    });\n  }\n\n  public setParticipantState(callId: string, participantKey: string, state: RemoteParticipantStatus): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          participant.state = state;\n        }\n      }\n    });\n  }\n\n  public setParticipantIsMuted(callId: string, participantKey: string, muted: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          participant.isMuted = muted;\n        }\n      }\n    });\n  }\n\n  public setOptimalVideoCount(callId: string, optimalVideoCount: number): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.optimalVideoCount.maxRemoteVideoStreams = optimalVideoCount;\n      }\n    });\n  }\n\n  public setParticipantRole(callId: string, participantKey: string, role: ParticipantRole): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          participant.role = role;\n        }\n      }\n    });\n  }\n\n  public setParticipantDisplayName(callId: string, participantKey: string, displayName: string): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          participant.displayName = displayName;\n        }\n      }\n    });\n  }\n\n  public setParticipantIsSpeaking(callId: string, participantKey: string, isSpeaking: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          participant.isSpeaking = isSpeaking;\n        }\n      }\n    });\n  }\n\n  public setParticipantVideoStream(callId: string, participantKey: string, stream: RemoteVideoStreamState): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          // Set is called by subscriber will not modify any rendered stream so if there is existing stream only\n          // modify the values that subscriber has access to.\n          const existingStream = participant.videoStreams[stream.id];\n          if (existingStream) {\n            existingStream.isAvailable = stream.isAvailable;\n            /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n            existingStream.isReceiving = stream.isReceiving;\n            existingStream.mediaStreamType = stream.mediaStreamType;\n          } else {\n            participant.videoStreams[stream.id] = stream;\n          }\n        }\n      }\n    });\n  }\n\n  public setRemoteVideoStreamIsAvailable(\n    callId: string,\n    participantKey: string,\n    streamId: number,\n    isAvailable: boolean\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          const stream = participant.videoStreams[streamId];\n          if (stream) {\n            stream.isAvailable = isAvailable;\n          }\n        }\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n  public setRemoteVideoStreamIsReceiving(\n    callId: string,\n    participantKey: string,\n    streamId: number,\n    isReceiving: boolean\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          const stream = participant.videoStreams[streamId];\n          if (stream) {\n            stream.isReceiving = isReceiving;\n          }\n        }\n      }\n    });\n  }\n\n  public setRemoteVideoStreamSize(\n    callId: string,\n    participantKey: string,\n    streamId: number,\n    size: { width: number; height: number }\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          const stream = participant.videoStreams[streamId];\n          if (stream) {\n            stream.streamSize = size;\n          }\n        }\n      }\n    });\n  }\n\n  public setRemoteVideoStreams(\n    callId: string,\n    participantKey: string,\n    addRemoteVideoStream: RemoteVideoStreamState[],\n    removeRemoteVideoStream: number[]\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          for (const id of removeRemoteVideoStream) {\n            delete participant.videoStreams[id];\n          }\n\n          for (const newStream of addRemoteVideoStream) {\n            // This should only be called by the subscriber and some properties are add by other components so if the\n            // stream already exists, only update the values that subscriber knows about.\n            const stream = participant.videoStreams[newStream.id];\n            if (stream) {\n              stream.mediaStreamType = newStream.mediaStreamType;\n              stream.isAvailable = newStream.isAvailable;\n              /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n              stream.isReceiving = newStream.isReceiving;\n            } else {\n              participant.videoStreams[newStream.id] = newStream;\n            }\n          }\n        }\n      }\n    });\n  }\n\n  public setRemoteVideoStreamRendererView(\n    callId: string,\n    participantKey: string,\n    streamId: number,\n    view: VideoStreamRendererViewState | undefined\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          const stream = participant.videoStreams[streamId];\n          if (stream) {\n            stream.view = view;\n          }\n        }\n      }\n    });\n  }\n\n  public setRemoteVideoStreamViewScalingMode(\n    callId: string,\n    participantKey: string,\n    streamId: number,\n    scalingMode: ScalingMode\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          const stream = participant.videoStreams[streamId];\n          if (stream && stream.view) {\n            stream.view.scalingMode = scalingMode;\n          }\n        }\n      }\n    });\n  }\n\n  public setIncomingCall(call: IncomingCallState): void {\n    this.modifyState((draft: CallClientState) => {\n      const existingCall = draft.incomingCalls[call.id];\n      if (existingCall) {\n        existingCall.callerInfo = call.callerInfo;\n      } else {\n        draft.incomingCalls[call.id] = call;\n      }\n    });\n  }\n\n  public removeIncomingCall(callId: string): void {\n    this.modifyState((draft: CallClientState) => {\n      delete draft.incomingCalls[callId];\n    });\n  }\n\n  public setIncomingCallEnded(callId: string, callEndReason: CallEndReason | undefined): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.incomingCalls[callId];\n      if (call) {\n        call.endTime = new Date();\n        call.callEndReason = callEndReason;\n        delete draft.incomingCalls[callId];\n        // Performance note: This loop should run only once because the number of entries\n        // is never allowed to exceed MAX_CALL_HISTORY_LENGTH. A loop is used for correctness.\n        while (Object.keys(draft.incomingCallsEnded).length >= MAX_CALL_HISTORY_LENGTH) {\n          delete draft.incomingCallsEnded[findOldestCallEnded(draft.incomingCallsEnded)];\n        }\n        draft.incomingCallsEnded[callId] = call;\n      }\n    });\n  }\n\n  public setDeviceManagerIsSpeakerSelectionAvailable(isSpeakerSelectionAvailable: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.isSpeakerSelectionAvailable = isSpeakerSelectionAvailable;\n    });\n  }\n\n  public setDeviceManagerSelectedMicrophone(selectedMicrophone?: AudioDeviceInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.selectedMicrophone = selectedMicrophone;\n    });\n  }\n\n  public setDeviceManagerSelectedSpeaker(selectedSpeaker?: AudioDeviceInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.selectedSpeaker = selectedSpeaker;\n    });\n  }\n\n  public setDeviceManagerSelectedCamera(selectedCamera?: VideoDeviceInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.selectedCamera = selectedCamera;\n    });\n  }\n\n  public setDeviceManagerCameras(cameras: VideoDeviceInfo[]): void {\n    this.modifyState((draft: CallClientState) => {\n      /**\n       * SDK initializes cameras with one dummy camera with value { id: 'camera:id', name: '', deviceType: 'USBCamera' } immediately after\n       * camera permissions are granted. So selectedCamera will have this value before the actual cameras are obtained. Therefore we should reset\n       * selectedCamera to the first camera when there are cameras AND when current selectedCamera does not exist in the new array of cameras *\n       */\n      if (cameras.length > 0 && !cameras.some((camera) => camera.id === draft.deviceManager.selectedCamera?.id)) {\n        draft.deviceManager.selectedCamera = cameras[0];\n      }\n      draft.deviceManager.cameras = cameras;\n    });\n  }\n\n  public setDeviceManagerMicrophones(microphones: AudioDeviceInfo[]): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.microphones = microphones;\n    });\n  }\n\n  public setDeviceManagerSpeakers(speakers: AudioDeviceInfo[]): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.speakers = speakers;\n    });\n  }\n\n  public setDeviceManagerDeviceAccess(deviceAccess: DeviceAccess): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.deviceAccess = deviceAccess;\n    });\n  }\n\n  public setDeviceManagerUnparentedView(\n    localVideoStream: LocalVideoStreamState,\n    view: VideoStreamRendererViewState | undefined\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.unparentedViews.push({\n        source: localVideoStream.source,\n        mediaStreamType: localVideoStream.mediaStreamType,\n        view: view\n      });\n    });\n  }\n\n  public deleteDeviceManagerUnparentedView(localVideoStream: LocalVideoStreamState): void {\n    this.modifyState((draft: CallClientState) => {\n      const foundIndex = draft.deviceManager.unparentedViews.findIndex(\n        (stream) => stream.mediaStreamType === localVideoStream.mediaStreamType\n      );\n      if (foundIndex !== -1) {\n        draft.deviceManager.unparentedViews.splice(foundIndex, 1);\n      }\n    });\n  }\n\n  public setDeviceManagerUnparentedViewVideoEffects(\n    localVideoStream: LocalVideoStreamState,\n    videoEffects: LocalVideoStreamVideoEffectsState\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const foundIndex = draft.deviceManager.unparentedViews.findIndex(\n        (stream) => stream.mediaStreamType === localVideoStream.mediaStreamType\n      );\n      if (foundIndex !== -1) {\n        draft.deviceManager.unparentedViews[foundIndex].videoEffects = videoEffects;\n      }\n    });\n  }\n\n  public getAndIncrementAtomicId(): number {\n    const id = this._atomicId;\n    this._atomicId++;\n    return id;\n  }\n\n  private processNewCaption(captions: CaptionsInfo[], newCaption: CaptionsInfo): void {\n    // time stamp when new caption comes in\n    newCaption.timestamp = new Date();\n    // if this is the first caption, push it in\n    if (captions.length === 0) {\n      captions.push(newCaption);\n    }\n    // if the last caption is final, then push the new one in\n    else if (captions[captions.length - 1].resultType === 'Final') {\n      captions.push(newCaption);\n    }\n    // if the last caption is Partial, then check if the speaker is the same as the new caption, if so, update the last caption\n    else {\n      if (\n        toFlatCommunicationIdentifier(\n          captions[captions.length - 1].speaker.identifier as CommunicationIdentifierKind\n        ) === toFlatCommunicationIdentifier(newCaption.speaker.identifier as CommunicationIdentifierKind)\n      ) {\n        captions[captions.length - 1] = newCaption;\n      }\n      // if different speaker, ignore the interjector until the current speaker finishes\n      // edge case: if we dont receive the final caption from the current speaker for 5 secs, we turn the current speaker caption to final and push in the new interjector\n      else {\n        if (Date.now() - captions[captions.length - 1].timestamp.getTime() > 5000) {\n          captions[captions.length - 1].resultType = 'Final';\n          captions.push(newCaption);\n        }\n      }\n    }\n\n    // If the array length exceeds 50, remove the oldest caption\n    if (captions.length > 50) {\n      captions.shift();\n    }\n  }\n\n  public addTeamsCaption(callId: string, caption: TeamsCaptionsInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const currentCaptionLanguage = call.captionsFeature.currentCaptionLanguage;\n        if (\n          caption.captionLanguage.toUpperCase() === currentCaptionLanguage.toUpperCase() ||\n          currentCaptionLanguage === '' ||\n          currentCaptionLanguage === undefined\n        ) {\n          this.processNewCaption(call.captionsFeature.captions, convertFromTeamsSDKToCaptionInfoState(caption));\n        }\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(acs-close-captions) */\n  public addCaption(callId: string, caption: AcsCaptionsInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        this.processNewCaption(call.captionsFeature.captions, convertFromSDKToCaptionInfoState(caption));\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(acs-close-captions) */\n  public setCaptionsKind(callId: string, kind: CaptionsKind): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.captionsKind = kind;\n      }\n    });\n  }\n\n  public clearCaptions(callId: string): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.captions = [];\n      }\n    });\n  }\n\n  setIsCaptionActive(callId: string, isCaptionsActive: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.isCaptionsFeatureActive = isCaptionsActive;\n      }\n    });\n  }\n\n  setStartCaptionsInProgress(callId: string, startCaptionsInProgress: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.startCaptionsInProgress = startCaptionsInProgress;\n      }\n    });\n  }\n\n  setSelectedSpokenLanguage(callId: string, spokenLanguage: string): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.currentSpokenLanguage = spokenLanguage;\n      }\n    });\n  }\n\n  setSelectedCaptionLanguage(callId: string, captionLanguage: string): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.currentCaptionLanguage = captionLanguage;\n      }\n    });\n  }\n\n  setAvailableCaptionLanguages(callId: string, captionLanguages: string[]): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.supportedCaptionLanguages = captionLanguages;\n      }\n    });\n  }\n\n  setAvailableSpokenLanguages(callId: string, spokenLanguages: string[]): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.supportedSpokenLanguages = spokenLanguages;\n      }\n    });\n  }\n\n  setAcceptedTransfer(callId: string, acceptedTransfer: AcceptedTransfer): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.transfer.acceptedTransfers[acceptedTransfer.callId] = acceptedTransfer;\n      }\n    });\n  }\n\n  /**\n   * Tees any errors encountered in an async function to the state.\n   *\n   * @param action Async function to execute.\n   * @param target The error target to tee error to.\n   * @returns Result of calling `f`. Also re-raises any exceptions thrown from `f`.\n   * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.\n   */\n  public withAsyncErrorTeedToState<Args extends unknown[], R>(\n    action: (...args: Args) => Promise<R>,\n    target: CallErrorTarget\n  ): (...args: Args) => Promise<R> {\n    return async (...args: Args): Promise<R> => {\n      try {\n        return await action(...args);\n      } catch (error) {\n        const callError = toCallError(target, error);\n        this.setLatestError(target, callError);\n        throw callError;\n      }\n    };\n  }\n\n  /**\n   * Tees any errors encountered in an function to the state.\n   *\n   * @param action Function to execute.\n   * @param target The error target to tee error to.\n   * @returns Result of calling `f`. Also re-raises any exceptions thrown from `f`.\n   * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.\n   */\n  public withErrorTeedToState<Args extends unknown[], R>(\n    action: (...args: Args) => R,\n    target: CallErrorTarget\n  ): (...args: Args) => R {\n    return (...args: Args): R => {\n      try {\n        callingStatefulLogger.info(`Calling stateful client target function called: ${target}`);\n        return action(...args);\n      } catch (error) {\n        const callError = toCallError(target, error);\n        this.setLatestError(target, callError);\n        throw callError;\n      }\n    };\n  }\n\n  /**\n   * Tees direct errors to state.\n   * @remarks\n   * This is typically used for errors that are caught and intended to be shown to the user.\n   *\n   * @param error The raw error to report.\n   * @param target The error target to tee error to.\n   *\n   * @private\n   */\n  public teeErrorToState = (error: Error, target: CallErrorTarget): void => {\n    const callError = toCallError(target, error);\n    this.setLatestError(target, callError);\n  };\n\n  private setLatestError(target: CallErrorTarget, error: CallError): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.latestErrors[target] = error;\n    });\n  }\n}\n\nconst toCallError = (target: CallErrorTarget, error: unknown): CallError => {\n  if (error instanceof Error) {\n    return new CallError(target, error);\n  }\n  return new CallError(target, new Error(error as string));\n};\n\nconst findOldestCallEnded = (calls: { [key: string]: { endTime?: Date } }): string => {\n  const callEntries = Object.entries(calls);\n  let [oldestCallId, oldestCall] = callEntries[0];\n  if (oldestCall.endTime === undefined) {\n    return oldestCallId;\n  }\n  for (const [callId, call] of callEntries.slice(1)) {\n    if (call.endTime === undefined) {\n      return callId;\n    }\n    if ((call.endTime?.getTime() ?? 0) < (oldestCall.endTime?.getTime() ?? 0)) {\n      [oldestCallId, oldestCall] = [callId, call];\n    }\n  }\n  return oldestCallId;\n};\n\nfunction clearParticipantReactionState(callContext: CallContext, callId: string, participantKey: string): void {\n  callContext.setReceivedReactionFromParticipant(callId, participantKey, null);\n}\n"]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"CallContext.js","sourceRoot":"","sources":["../../../../../calling-stateful-client/src/CallContext.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CommunicationIdentifierKind } from '@azure/communication-common';\nimport {\n  AudioDeviceInfo,\n  DeviceAccess,\n  DominantSpeakersInfo,\n  ParticipantRole,\n  ScalingMode,\n  VideoDeviceInfo\n} from '@azure/communication-calling';\nimport { RaisedHand } from '@azure/communication-calling';\n\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { TeamsMeetingAudioConferencingDetails } from '@azure/communication-calling';\n/* @conditional-compile-remove(teams-meeting-conference) */\nimport { convertConferencePhoneInfo } from './Converter';\n\nimport { CapabilitiesChangeInfo, ParticipantCapabilities } from '@azure/communication-calling';\nimport { TeamsCaptionsInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(acs-close-captions) */\nimport { CaptionsKind, CaptionsInfo as AcsCaptionsInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(unsupported-browser) */\nimport { EnvironmentInfo } from '@azure/communication-calling';\nimport { AzureLogger, createClientLogger, getLogLevel } from '@azure/logger';\nimport EventEmitter from 'events';\nimport { enableMapSet, enablePatches, Patch, produce } from 'immer';\nimport {\n  CallEndReason,\n  CallState as CallStatus,\n  RemoteParticipantState as RemoteParticipantStatus\n} from '@azure/communication-calling';\nimport { _safeJSONStringify, toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport {\n  CallState,\n  CallClientState,\n  LocalVideoStreamState,\n  RemoteParticipantState,\n  RemoteVideoStreamState,\n  IncomingCallState,\n  VideoStreamRendererViewState,\n  CallAgentState,\n  CallErrors,\n  CallErrorTarget,\n  CallError\n} from './CallClientState';\nimport { CaptionsInfo } from './CallClientState';\nimport { ReactionState } from './CallClientState';\nimport { AcceptedTransfer } from './CallClientState';\nimport { callingStatefulLogger } from './Logger';\nimport { CallIdHistory } from './CallIdHistory';\nimport { LocalVideoStreamVideoEffectsState } from './CallClientState';\nimport { convertFromTeamsSDKToCaptionInfoState } from './Converter';\n/* @conditional-compile-remove(acs-close-captions) */\nimport { convertFromSDKToCaptionInfoState } from './Converter';\nimport { convertFromSDKToRaisedHandState } from './Converter';\nimport { ReactionMessage } from '@azure/communication-calling';\nimport { SpotlightedParticipant } from '@azure/communication-calling';\n/* @conditional-compile-remove(local-recording-notification) */\nimport { LocalRecordingInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(local-recording-notification) */\nimport { RecordingInfo } from '@azure/communication-calling';\n\nenableMapSet();\n// Needed to generate state diff for verbose logging.\nenablePatches();\n\n// TODO: How can we make this configurable?\n/**\n * @private\n */\nexport const MAX_CALL_HISTORY_LENGTH = 10;\n/**\n * @private\n */\nexport const REACTION_ANIMATION_TIME_MS = 4133;\n\n/**\n * @private\n */\nexport class CallContext {\n  private _logger: AzureLogger;\n  private _state: CallClientState;\n  private _emitter: EventEmitter;\n  private _atomicId: number;\n  private _callIdHistory: CallIdHistory = new CallIdHistory();\n  private _timeOutId: { [key: string]: NodeJS.Timeout } = {};\n\n  constructor(\n    userId: CommunicationIdentifierKind,\n    maxListeners = 50,\n    /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId?: string\n  ) {\n    this._logger = createClientLogger('communication-react:calling-context');\n    this._state = {\n      calls: {},\n      callsEnded: {},\n      incomingCalls: {},\n      incomingCallsEnded: {},\n      deviceManager: {\n        isSpeakerSelectionAvailable: false,\n        cameras: [],\n        microphones: [],\n        speakers: [],\n        unparentedViews: []\n      },\n      callAgent: undefined,\n      userId: userId,\n      /* @conditional-compile-remove(unsupported-browser) */ environmentInfo: undefined,\n      /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId: alternateCallerId,\n      latestErrors: {} as CallErrors\n    };\n    this._emitter = new EventEmitter();\n    this._emitter.setMaxListeners(maxListeners);\n    this._atomicId = 0;\n  }\n\n  public getState(): CallClientState {\n    return this._state;\n  }\n\n  public modifyState(modifier: (draft: CallClientState) => void): void {\n    const priorState = this._state;\n    this._state = produce(this._state, modifier, (patches: Patch[]) => {\n      if (getLogLevel() === 'verbose') {\n        // Log to `info` because AzureLogger.verbose() doesn't show up in console.\n        this._logger.info(`State change: ${_safeJSONStringify(patches)}`);\n      }\n    });\n    if (this._state !== priorState) {\n      this._emitter.emit('stateChanged', this._state);\n    }\n  }\n\n  public onStateChange(handler: (state: CallClientState) => void): void {\n    this._emitter.on('stateChanged', handler);\n  }\n\n  public offStateChange(handler: (state: CallClientState) => void): void {\n    this._emitter.off('stateChanged', handler);\n  }\n\n  // Disposing of the CallAgentDeclarative will not clear the state. If we create a new CallAgentDeclarative, we should\n  // make sure the state is clean because any left over state (if previous CallAgentDeclarative was disposed) may be\n  // invalid.\n  public clearCallRelatedState(): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.calls = {};\n      draft.incomingCalls = {};\n      draft.callsEnded = {};\n      draft.incomingCallsEnded = {};\n    });\n  }\n\n  public setCallAgent(callAgent: CallAgentState): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.callAgent = callAgent;\n    });\n  }\n\n  public setCall(call: CallState): void {\n    this.modifyState((draft: CallClientState) => {\n      const latestCallId = this._callIdHistory.latestCallId(call.id);\n      const existingCall = draft.calls[latestCallId];\n      if (existingCall) {\n        existingCall.callerInfo = call.callerInfo;\n        existingCall.state = call.state;\n        existingCall.callEndReason = call.callEndReason;\n        existingCall.direction = call.direction;\n        existingCall.isMuted = call.isMuted;\n        existingCall.isScreenSharingOn = call.isScreenSharingOn;\n        existingCall.localVideoStreams = call.localVideoStreams;\n        existingCall.remoteParticipants = call.remoteParticipants;\n        existingCall.transcription.isTranscriptionActive = call.transcription.isTranscriptionActive;\n        existingCall.optimalVideoCount.maxRemoteVideoStreams = call.optimalVideoCount.maxRemoteVideoStreams;\n        existingCall.recording.isRecordingActive = call.recording.isRecordingActive;\n        existingCall.raiseHand.raisedHands = call.raiseHand.raisedHands;\n        existingCall.pptLive.isActive = call.pptLive.isActive;\n        existingCall.raiseHand.localParticipantRaisedHand = call.raiseHand.localParticipantRaisedHand;\n        existingCall.role = call.role;\n        /* @conditional-compile-remove(total-participant-count) */\n        existingCall.totalParticipantCount = call.totalParticipantCount;\n        // We don't update the startTime and endTime if we are updating an existing active call\n        existingCall.captionsFeature.currentSpokenLanguage = call.captionsFeature.currentSpokenLanguage;\n        existingCall.captionsFeature.currentCaptionLanguage = call.captionsFeature.currentCaptionLanguage;\n        /* @conditional-compile-remove(meeting-id) */\n        existingCall.info = call.info;\n        /* @conditional-compile-remove(teams-meeting-conference) */\n        existingCall.teamsMeetingConference = call.teamsMeetingConference;\n      } else {\n        draft.calls[latestCallId] = call;\n      }\n    });\n  }\n\n  public removeCall(callId: string): void {\n    this.modifyState((draft: CallClientState) => {\n      delete draft.calls[this._callIdHistory.latestCallId(callId)];\n    });\n  }\n\n  public setCallEnded(callId: string, callEndReason: CallEndReason | undefined): void {\n    const latestCallId = this._callIdHistory.latestCallId(callId);\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[latestCallId];\n      if (call) {\n        call.endTime = new Date();\n        call.callEndReason = callEndReason;\n        delete draft.calls[latestCallId];\n        // Performance note: This loop should run only once because the number of entries\n        // is never allowed to exceed MAX_CALL_HISTORY_LENGTH. A loop is used for correctness.\n        while (Object.keys(draft.callsEnded).length >= MAX_CALL_HISTORY_LENGTH) {\n          delete draft.callsEnded[findOldestCallEnded(draft.callsEnded)];\n        }\n        draft.callsEnded[latestCallId] = call;\n      }\n    });\n  }\n\n  public setCallState(callId: string, state: CallStatus): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.state = state;\n      }\n    });\n  }\n\n  public setCallId(newCallId: string, oldCallId: string): void {\n    this._callIdHistory.updateCallIdHistory(newCallId, oldCallId);\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[oldCallId];\n      if (call) {\n        call.id = newCallId;\n        delete draft.calls[oldCallId];\n        draft.calls[newCallId] = call;\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(unsupported-browser) */\n  public setEnvironmentInfo(envInfo: EnvironmentInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.environmentInfo = envInfo;\n    });\n  }\n\n  public setCallIsScreenSharingOn(callId: string, isScreenSharingOn: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.isScreenSharingOn = isScreenSharingOn;\n      }\n    });\n  }\n\n  public setCallRemoteParticipants(\n    callId: string,\n    addRemoteParticipant: RemoteParticipantState[],\n    removeRemoteParticipant: string[]\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        removeRemoteParticipant.forEach((id: string) => {\n          delete call.remoteParticipants[id];\n        });\n        addRemoteParticipant.forEach((participant: RemoteParticipantState) => {\n          call.remoteParticipants[toFlatCommunicationIdentifier(participant.identifier)] = participant;\n        });\n        // TODO: need to remove after contentSharingRole avaible in WebCalling SDK.\n        if (!call.contentSharingRemoteParticipant) {\n          call.contentSharingRemoteParticipant = toFlatCommunicationIdentifier(addRemoteParticipant[0].identifier);\n        }\n      }\n    });\n  }\n\n  public setCallRemoteParticipantsEnded(\n    callId: string,\n    addRemoteParticipant: RemoteParticipantState[],\n    removeRemoteParticipant: string[]\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        removeRemoteParticipant.forEach((id: string) => {\n          delete call.remoteParticipantsEnded[id];\n        });\n        addRemoteParticipant.forEach((participant: RemoteParticipantState) => {\n          call.remoteParticipantsEnded[toFlatCommunicationIdentifier(participant.identifier)] = participant;\n        });\n      }\n    });\n  }\n\n  public setCallLocalVideoStream(\n    callId: string,\n    streamsAdded: LocalVideoStreamState[],\n    streamsRemoved: LocalVideoStreamState[]\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        for (const removedStream of streamsRemoved) {\n          const index = call.localVideoStreams.findIndex((i) => i.mediaStreamType === removedStream.mediaStreamType);\n          if (index > -1) {\n            call.localVideoStreams.splice(index, 1);\n          }\n        }\n\n        for (const addedStream of streamsAdded) {\n          const index = call.localVideoStreams.findIndex((i) => i.mediaStreamType === addedStream.mediaStreamType);\n          if (index > -1) {\n            call.localVideoStreams[index] = addedStream;\n          } else {\n            call.localVideoStreams.push(addedStream);\n          }\n        }\n      }\n    });\n  }\n\n  public setCallLocalVideoStreamVideoEffects(callId: string, videoEffects: LocalVideoStreamVideoEffectsState): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const stream = call.localVideoStreams?.find((i) => i.mediaStreamType === 'Video');\n        if (stream) {\n          stream.videoEffects = videoEffects;\n        }\n      }\n    });\n  }\n\n  public setCallIsMicrophoneMuted(callId: string, isMicrophoneMuted: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.isMuted = isMicrophoneMuted;\n      }\n    });\n  }\n\n  public setRole(callId: string, role: ParticipantRole): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.role = role;\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(total-participant-count) */\n  public setTotalParticipantCount(callId: string, totalParticipantCount: number): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.totalParticipantCount = totalParticipantCount;\n      }\n    });\n  }\n\n  public setCallDominantSpeakers(callId: string, dominantSpeakers: DominantSpeakersInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.dominantSpeakers = dominantSpeakers;\n      }\n    });\n  }\n\n  public setCallRecordingActive(callId: string, isRecordingActive: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.recording.isRecordingActive = isRecordingActive;\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(local-recording-notification) */\n  public setCallRecordingInfos(\n    callId: string,\n    recordingInfosAdded: RecordingInfo[],\n    lastStoppedRecording: RecordingInfo[]\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.recording.activeRecordings = recordingInfosAdded;\n        call.recording.lastStoppedRecording = lastStoppedRecording;\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(local-recording-notification) */\n  public setCallLocalRecordingActive(callId: string, isRecordingActive: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.localRecording.isLocalRecordingActive = isRecordingActive;\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(local-recording-notification) */\n  public setCallLocalRecordingInfos(\n    callId: string,\n    localRecordingInfosAdded: LocalRecordingInfo[],\n    lastStoppedRecording: LocalRecordingInfo[]\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.localRecording.activeLocalRecordings = localRecordingInfosAdded;\n        call.localRecording.lastStoppedLocalRecording = lastStoppedRecording;\n      }\n    });\n  }\n\n  public setCallPPTLiveActive(callId: string, isActive: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.pptLive.isActive = isActive;\n      }\n    });\n  }\n\n  public setCallParticipantPPTLive(callId: string, target: HTMLElement | undefined): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      const participantKey = call.contentSharingRemoteParticipant;\n      if (call && participantKey) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          participant.contentSharingStream = target;\n        }\n      }\n    });\n  }\n\n  public setCallRaisedHands(callId: string, raisedHands: RaisedHand[]): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.raiseHand.raisedHands = raisedHands.map((raisedHand) => {\n          return convertFromSDKToRaisedHandState(raisedHand);\n        });\n        const raisedHand = raisedHands.find(\n          (raisedHand) =>\n            toFlatCommunicationIdentifier(raisedHand.identifier) === toFlatCommunicationIdentifier(this._state.userId)\n        );\n        if (raisedHand) {\n          call.raiseHand.localParticipantRaisedHand = convertFromSDKToRaisedHandState(raisedHand);\n        } else {\n          call.raiseHand.localParticipantRaisedHand = undefined;\n        }\n      }\n    });\n  }\n\n  public setParticipantIsRaisedHand(callId: string, participantKey: string, raisedHand: RaisedHand | undefined): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          participant.raisedHand = raisedHand ? convertFromSDKToRaisedHandState(raisedHand) : raisedHand;\n        }\n      }\n    });\n  }\n\n  public setReceivedReactionFromParticipant(\n    callId: string,\n    participantKey: string,\n    reactionMessage: ReactionMessage | null\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n\n      if (!call) {\n        return;\n      }\n\n      clearTimeout(this._timeOutId[participantKey]);\n\n      const participant = call.remoteParticipants[participantKey];\n      const newReactionState: ReactionState | undefined = reactionMessage\n        ? { reactionMessage: reactionMessage, receivedOn: new Date() }\n        : undefined;\n\n      if (participantKey === toFlatCommunicationIdentifier(this._state.userId)) {\n        call.localParticipantReaction = newReactionState;\n      } else {\n        participant.reactionState = newReactionState;\n      }\n\n      if (reactionMessage) {\n        this._timeOutId[participantKey] = setTimeout(() => {\n          clearParticipantReactionState(this, callId, participantKey);\n        }, REACTION_ANIMATION_TIME_MS);\n      }\n    });\n  }\n\n  public setCallTranscriptionActive(callId: string, isTranscriptionActive: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.transcription.isTranscriptionActive = isTranscriptionActive;\n      }\n    });\n  }\n\n  public setCapabilities(\n    callId: string,\n    capabilities: ParticipantCapabilities,\n    capabilitiesChangeInfo: CapabilitiesChangeInfo\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.capabilitiesFeature = { capabilities, latestCapabilitiesChangeInfo: capabilitiesChangeInfo };\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(hide-attendee-name) */\n  public setHideAttendeeNames(callId: string, capabilitiesChangeInfo: CapabilitiesChangeInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (capabilitiesChangeInfo.oldValue.viewAttendeeNames !== capabilitiesChangeInfo.newValue.viewAttendeeNames) {\n        const viewAttendeeNames = capabilitiesChangeInfo.newValue.viewAttendeeNames;\n        if (\n          call &&\n          viewAttendeeNames &&\n          !viewAttendeeNames.isPresent &&\n          viewAttendeeNames.reason === 'MeetingRestricted'\n        ) {\n          call.hideAttendeeNames = true;\n        } else {\n          call.hideAttendeeNames = false;\n        }\n      }\n    });\n  }\n\n  public setSpotlight(\n    callId: string,\n    spotlightedParticipants: SpotlightedParticipant[],\n    maxParticipantsToSpotlight: number\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.spotlight = { ...call.spotlight, spotlightedParticipants, maxParticipantsToSpotlight };\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(teams-meeting-conference) */\n  public setTeamsMeetingConference(\n    callId: string,\n    teamsMeetingConferenceDetails: TeamsMeetingAudioConferencingDetails\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.teamsMeetingConference = convertConferencePhoneInfo(teamsMeetingConferenceDetails);\n      }\n    });\n  }\n\n  public setParticipantSpotlighted(callId: string, spotlightedParticipant: SpotlightedParticipant): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[toFlatCommunicationIdentifier(spotlightedParticipant.identifier)];\n        if (participant) {\n          participant.spotlight = { spotlightedOrderPosition: spotlightedParticipant.order };\n        } else if (\n          call.spotlight &&\n          toFlatCommunicationIdentifier(draft.userId) ===\n            toFlatCommunicationIdentifier(spotlightedParticipant.identifier)\n        ) {\n          call.spotlight.localParticipantSpotlight = { spotlightedOrderPosition: spotlightedParticipant.order };\n        }\n      }\n    });\n  }\n\n  public setParticipantNotSpotlighted(callId: string, spotlightedParticipant: SpotlightedParticipant): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[toFlatCommunicationIdentifier(spotlightedParticipant.identifier)];\n        if (participant) {\n          participant.spotlight = undefined;\n        } else if (\n          call.spotlight &&\n          toFlatCommunicationIdentifier(draft.userId) ===\n            toFlatCommunicationIdentifier(spotlightedParticipant.identifier)\n        ) {\n          call.spotlight.localParticipantSpotlight = undefined;\n        }\n      }\n    });\n  }\n\n  public setCallScreenShareParticipant(callId: string, participantKey: string | undefined): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.screenShareRemoteParticipant = participantKey;\n      }\n    });\n  }\n\n  public setLocalVideoStreamRendererView(\n    callId: string,\n    localVideoMediaStreamType: string,\n    view: VideoStreamRendererViewState | undefined\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const localVideoStream = call.localVideoStreams.find(\n          (localVideoStream) => localVideoStream.mediaStreamType === localVideoMediaStreamType\n        );\n        if (localVideoStream) {\n          localVideoStream.view = view;\n        }\n      }\n    });\n  }\n\n  public setParticipantState(callId: string, participantKey: string, state: RemoteParticipantStatus): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          participant.state = state;\n        }\n      }\n    });\n  }\n\n  public setParticipantIsMuted(callId: string, participantKey: string, muted: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          participant.isMuted = muted;\n        }\n      }\n    });\n  }\n\n  public setOptimalVideoCount(callId: string, optimalVideoCount: number): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.optimalVideoCount.maxRemoteVideoStreams = optimalVideoCount;\n      }\n    });\n  }\n\n  public setParticipantRole(callId: string, participantKey: string, role: ParticipantRole): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          participant.role = role;\n        }\n      }\n    });\n  }\n\n  public setParticipantDisplayName(callId: string, participantKey: string, displayName: string): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          participant.displayName = displayName;\n        }\n      }\n    });\n  }\n\n  public setParticipantIsSpeaking(callId: string, participantKey: string, isSpeaking: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          participant.isSpeaking = isSpeaking;\n        }\n      }\n    });\n  }\n\n  public setParticipantVideoStream(callId: string, participantKey: string, stream: RemoteVideoStreamState): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          // Set is called by subscriber will not modify any rendered stream so if there is existing stream only\n          // modify the values that subscriber has access to.\n          const existingStream = participant.videoStreams[stream.id];\n          if (existingStream) {\n            existingStream.isAvailable = stream.isAvailable;\n            /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n            existingStream.isReceiving = stream.isReceiving;\n            existingStream.mediaStreamType = stream.mediaStreamType;\n          } else {\n            participant.videoStreams[stream.id] = stream;\n          }\n        }\n      }\n    });\n  }\n\n  public setRemoteVideoStreamIsAvailable(\n    callId: string,\n    participantKey: string,\n    streamId: number,\n    isAvailable: boolean\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          const stream = participant.videoStreams[streamId];\n          if (stream) {\n            stream.isAvailable = isAvailable;\n          }\n        }\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n  public setRemoteVideoStreamIsReceiving(\n    callId: string,\n    participantKey: string,\n    streamId: number,\n    isReceiving: boolean\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          const stream = participant.videoStreams[streamId];\n          if (stream) {\n            stream.isReceiving = isReceiving;\n          }\n        }\n      }\n    });\n  }\n\n  public setRemoteVideoStreamSize(\n    callId: string,\n    participantKey: string,\n    streamId: number,\n    size: { width: number; height: number }\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          const stream = participant.videoStreams[streamId];\n          if (stream) {\n            stream.streamSize = size;\n          }\n        }\n      }\n    });\n  }\n\n  public setRemoteVideoStreams(\n    callId: string,\n    participantKey: string,\n    addRemoteVideoStream: RemoteVideoStreamState[],\n    removeRemoteVideoStream: number[]\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          for (const id of removeRemoteVideoStream) {\n            delete participant.videoStreams[id];\n          }\n\n          for (const newStream of addRemoteVideoStream) {\n            // This should only be called by the subscriber and some properties are add by other components so if the\n            // stream already exists, only update the values that subscriber knows about.\n            const stream = participant.videoStreams[newStream.id];\n            if (stream) {\n              stream.mediaStreamType = newStream.mediaStreamType;\n              stream.isAvailable = newStream.isAvailable;\n              /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n              stream.isReceiving = newStream.isReceiving;\n            } else {\n              participant.videoStreams[newStream.id] = newStream;\n            }\n          }\n        }\n      }\n    });\n  }\n\n  public setRemoteVideoStreamRendererView(\n    callId: string,\n    participantKey: string,\n    streamId: number,\n    view: VideoStreamRendererViewState | undefined\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          const stream = participant.videoStreams[streamId];\n          if (stream) {\n            stream.view = view;\n          }\n        }\n      }\n    });\n  }\n\n  public setRemoteVideoStreamViewScalingMode(\n    callId: string,\n    participantKey: string,\n    streamId: number,\n    scalingMode: ScalingMode\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const participant = call.remoteParticipants[participantKey];\n        if (participant) {\n          const stream = participant.videoStreams[streamId];\n          if (stream && stream.view) {\n            stream.view.scalingMode = scalingMode;\n          }\n        }\n      }\n    });\n  }\n\n  public setIncomingCall(call: IncomingCallState): void {\n    this.modifyState((draft: CallClientState) => {\n      const existingCall = draft.incomingCalls[call.id];\n      if (existingCall) {\n        existingCall.callerInfo = call.callerInfo;\n      } else {\n        draft.incomingCalls[call.id] = call;\n      }\n    });\n  }\n\n  public removeIncomingCall(callId: string): void {\n    this.modifyState((draft: CallClientState) => {\n      delete draft.incomingCalls[callId];\n    });\n  }\n\n  public setIncomingCallEnded(callId: string, callEndReason: CallEndReason | undefined): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.incomingCalls[callId];\n      if (call) {\n        call.endTime = new Date();\n        call.callEndReason = callEndReason;\n        delete draft.incomingCalls[callId];\n        // Performance note: This loop should run only once because the number of entries\n        // is never allowed to exceed MAX_CALL_HISTORY_LENGTH. A loop is used for correctness.\n        while (Object.keys(draft.incomingCallsEnded).length >= MAX_CALL_HISTORY_LENGTH) {\n          delete draft.incomingCallsEnded[findOldestCallEnded(draft.incomingCallsEnded)];\n        }\n        draft.incomingCallsEnded[callId] = call;\n      }\n    });\n  }\n\n  public setDeviceManagerIsSpeakerSelectionAvailable(isSpeakerSelectionAvailable: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.isSpeakerSelectionAvailable = isSpeakerSelectionAvailable;\n    });\n  }\n\n  public setDeviceManagerSelectedMicrophone(selectedMicrophone?: AudioDeviceInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.selectedMicrophone = selectedMicrophone;\n    });\n  }\n\n  public setDeviceManagerSelectedSpeaker(selectedSpeaker?: AudioDeviceInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.selectedSpeaker = selectedSpeaker;\n    });\n  }\n\n  public setDeviceManagerSelectedCamera(selectedCamera?: VideoDeviceInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.selectedCamera = selectedCamera;\n    });\n  }\n\n  public setDeviceManagerCameras(cameras: VideoDeviceInfo[]): void {\n    this.modifyState((draft: CallClientState) => {\n      /**\n       * SDK initializes cameras with one dummy camera with value { id: 'camera:id', name: '', deviceType: 'USBCamera' } immediately after\n       * camera permissions are granted. So selectedCamera will have this value before the actual cameras are obtained. Therefore we should reset\n       * selectedCamera to the first camera when there are cameras AND when current selectedCamera does not exist in the new array of cameras *\n       */\n      if (cameras.length > 0 && !cameras.some((camera) => camera.id === draft.deviceManager.selectedCamera?.id)) {\n        draft.deviceManager.selectedCamera = cameras[0];\n      }\n      draft.deviceManager.cameras = cameras;\n    });\n  }\n\n  public setDeviceManagerMicrophones(microphones: AudioDeviceInfo[]): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.microphones = microphones;\n    });\n  }\n\n  public setDeviceManagerSpeakers(speakers: AudioDeviceInfo[]): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.speakers = speakers;\n    });\n  }\n\n  public setDeviceManagerDeviceAccess(deviceAccess: DeviceAccess): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.deviceAccess = deviceAccess;\n    });\n  }\n\n  public setDeviceManagerUnparentedView(\n    localVideoStream: LocalVideoStreamState,\n    view: VideoStreamRendererViewState | undefined\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.deviceManager.unparentedViews.push({\n        source: localVideoStream.source,\n        mediaStreamType: localVideoStream.mediaStreamType,\n        view: view\n      });\n    });\n  }\n\n  public deleteDeviceManagerUnparentedView(localVideoStream: LocalVideoStreamState): void {\n    this.modifyState((draft: CallClientState) => {\n      const foundIndex = draft.deviceManager.unparentedViews.findIndex(\n        (stream) => stream.mediaStreamType === localVideoStream.mediaStreamType\n      );\n      if (foundIndex !== -1) {\n        draft.deviceManager.unparentedViews.splice(foundIndex, 1);\n      }\n    });\n  }\n\n  public setDeviceManagerUnparentedViewVideoEffects(\n    localVideoStream: LocalVideoStreamState,\n    videoEffects: LocalVideoStreamVideoEffectsState\n  ): void {\n    this.modifyState((draft: CallClientState) => {\n      const foundIndex = draft.deviceManager.unparentedViews.findIndex(\n        (stream) => stream.mediaStreamType === localVideoStream.mediaStreamType\n      );\n      if (foundIndex !== -1) {\n        draft.deviceManager.unparentedViews[foundIndex].videoEffects = videoEffects;\n      }\n    });\n  }\n\n  public getAndIncrementAtomicId(): number {\n    const id = this._atomicId;\n    this._atomicId++;\n    return id;\n  }\n\n  private processNewCaption(captions: CaptionsInfo[], newCaption: CaptionsInfo): void {\n    // time stamp when new caption comes in\n    newCaption.timestamp = new Date();\n    // if this is the first caption, push it in\n    if (captions.length === 0) {\n      captions.push(newCaption);\n    }\n    // if the last caption is final, then push the new one in\n    else if (captions[captions.length - 1].resultType === 'Final') {\n      captions.push(newCaption);\n    }\n    // if the last caption is Partial, then check if the speaker is the same as the new caption, if so, update the last caption\n    else {\n      if (\n        toFlatCommunicationIdentifier(\n          captions[captions.length - 1].speaker.identifier as CommunicationIdentifierKind\n        ) === toFlatCommunicationIdentifier(newCaption.speaker.identifier as CommunicationIdentifierKind)\n      ) {\n        captions[captions.length - 1] = newCaption;\n      }\n      // if different speaker, ignore the interjector until the current speaker finishes\n      // edge case: if we dont receive the final caption from the current speaker for 5 secs, we turn the current speaker caption to final and push in the new interjector\n      else {\n        if (Date.now() - captions[captions.length - 1].timestamp.getTime() > 5000) {\n          captions[captions.length - 1].resultType = 'Final';\n          captions.push(newCaption);\n        }\n      }\n    }\n\n    // If the array length exceeds 50, remove the oldest caption\n    if (captions.length > 50) {\n      captions.shift();\n    }\n  }\n\n  public addTeamsCaption(callId: string, caption: TeamsCaptionsInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        const currentCaptionLanguage = call.captionsFeature.currentCaptionLanguage;\n        if (\n          caption.captionLanguage.toUpperCase() === currentCaptionLanguage.toUpperCase() ||\n          currentCaptionLanguage === '' ||\n          currentCaptionLanguage === undefined\n        ) {\n          this.processNewCaption(call.captionsFeature.captions, convertFromTeamsSDKToCaptionInfoState(caption));\n        }\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(acs-close-captions) */\n  public addCaption(callId: string, caption: AcsCaptionsInfo): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        this.processNewCaption(call.captionsFeature.captions, convertFromSDKToCaptionInfoState(caption));\n      }\n    });\n  }\n\n  /* @conditional-compile-remove(acs-close-captions) */\n  public setCaptionsKind(callId: string, kind: CaptionsKind): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.captionsKind = kind;\n      }\n    });\n  }\n\n  public clearCaptions(callId: string): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.captions = [];\n      }\n    });\n  }\n\n  setIsCaptionActive(callId: string, isCaptionsActive: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.isCaptionsFeatureActive = isCaptionsActive;\n      }\n    });\n  }\n\n  setStartCaptionsInProgress(callId: string, startCaptionsInProgress: boolean): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.startCaptionsInProgress = startCaptionsInProgress;\n      }\n    });\n  }\n\n  setSelectedSpokenLanguage(callId: string, spokenLanguage: string): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.currentSpokenLanguage = spokenLanguage;\n      }\n    });\n  }\n\n  setSelectedCaptionLanguage(callId: string, captionLanguage: string): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.currentCaptionLanguage = captionLanguage;\n      }\n    });\n  }\n\n  setAvailableCaptionLanguages(callId: string, captionLanguages: string[]): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.supportedCaptionLanguages = captionLanguages;\n      }\n    });\n  }\n\n  setAvailableSpokenLanguages(callId: string, spokenLanguages: string[]): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.captionsFeature.supportedSpokenLanguages = spokenLanguages;\n      }\n    });\n  }\n\n  setAcceptedTransfer(callId: string, acceptedTransfer: AcceptedTransfer): void {\n    this.modifyState((draft: CallClientState) => {\n      const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n      if (call) {\n        call.transfer.acceptedTransfers[acceptedTransfer.callId] = acceptedTransfer;\n      }\n    });\n  }\n\n  /**\n   * Tees any errors encountered in an async function to the state.\n   *\n   * @param action Async function to execute.\n   * @param target The error target to tee error to.\n   * @returns Result of calling `f`. Also re-raises any exceptions thrown from `f`.\n   * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.\n   */\n  public withAsyncErrorTeedToState<Args extends unknown[], R>(\n    action: (...args: Args) => Promise<R>,\n    target: CallErrorTarget\n  ): (...args: Args) => Promise<R> {\n    return async (...args: Args): Promise<R> => {\n      try {\n        return await action(...args);\n      } catch (error) {\n        const callError = toCallError(target, error);\n        this.setLatestError(target, callError);\n        throw callError;\n      }\n    };\n  }\n\n  /**\n   * Tees any errors encountered in an function to the state.\n   *\n   * @param action Function to execute.\n   * @param target The error target to tee error to.\n   * @returns Result of calling `f`. Also re-raises any exceptions thrown from `f`.\n   * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.\n   */\n  public withErrorTeedToState<Args extends unknown[], R>(\n    action: (...args: Args) => R,\n    target: CallErrorTarget\n  ): (...args: Args) => R {\n    return (...args: Args): R => {\n      try {\n        callingStatefulLogger.info(`Calling stateful client target function called: ${target}`);\n        return action(...args);\n      } catch (error) {\n        const callError = toCallError(target, error);\n        this.setLatestError(target, callError);\n        throw callError;\n      }\n    };\n  }\n\n  /**\n   * Tees direct errors to state.\n   * @remarks\n   * This is typically used for errors that are caught and intended to be shown to the user.\n   *\n   * @param error The raw error to report.\n   * @param target The error target to tee error to.\n   *\n   * @private\n   */\n  public teeErrorToState = (error: Error, target: CallErrorTarget): void => {\n    const callError = toCallError(target, error);\n    this.setLatestError(target, callError);\n  };\n\n  private setLatestError(target: CallErrorTarget, error: CallError): void {\n    this.modifyState((draft: CallClientState) => {\n      draft.latestErrors[target] = error;\n    });\n  }\n}\n\nconst toCallError = (target: CallErrorTarget, error: unknown): CallError => {\n  if (error instanceof Error) {\n    return new CallError(target, error);\n  }\n  return new CallError(target, new Error(error as string));\n};\n\nconst findOldestCallEnded = (calls: { [key: string]: { endTime?: Date } }): string => {\n  const callEntries = Object.entries(calls);\n  let [oldestCallId, oldestCall] = callEntries[0];\n  if (oldestCall.endTime === undefined) {\n    return oldestCallId;\n  }\n  for (const [callId, call] of callEntries.slice(1)) {\n    if (call.endTime === undefined) {\n      return callId;\n    }\n    if ((call.endTime?.getTime() ?? 0) < (oldestCall.endTime?.getTime() ?? 0)) {\n      [oldestCallId, oldestCall] = [callId, call];\n    }\n  }\n  return oldestCallId;\n};\n\nfunction clearParticipantReactionState(callContext: CallContext, callId: string, participantKey: string): void {\n  callContext.setReceivedReactionFromParticipant(callId, participantKey, null);\n}\n"]}
         
     | 
| 
         @@ -133,7 +133,7 @@ export function convertSdkCallToDeclarativeCall(call) { 
     | 
|
| 
       133 
133 
     | 
    
         
             
                    /* @conditional-compile-remove(meeting-id) */
         
     | 
| 
       134 
134 
     | 
    
         
             
                    info: callInfo,
         
     | 
| 
       135 
135 
     | 
    
         
             
                    /* @conditional-compile-remove(teams-meeting-conference) */
         
     | 
| 
       136 
     | 
    
         
            -
                     
     | 
| 
      
 136 
     | 
    
         
            +
                    teamsMeetingConference: []
         
     | 
| 
       137 
137 
     | 
    
         
             
                };
         
     | 
| 
       138 
138 
     | 
    
         
             
            }
         
     | 
| 
       139 
139 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"Converter.js","sourceRoot":"","sources":["../../../../../calling-stateful-client/src/Converter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n  RemoteParticipant as SdkRemoteParticipant,\n  RemoteVideoStream as SdkRemoteVideoStream,\n  LocalVideoStream as SdkLocalVideoStream,\n  VideoStreamRendererView\n} from '@azure/communication-calling';\nimport { TeamsCaptionsInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(acs-close-captions) */\nimport { CaptionsInfo as AcsCaptionsInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(teams-identity-support) */\nimport { CallKind } from '@azure/communication-calling';\n/* @conditional-compile-remove(meeting-id) */\nimport { TeamsCallInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(calling-beta-sdk) */\nimport { CallInfo } from '@azure/communication-calling';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport {\n  CallState,\n  RemoteParticipantState as DeclarativeRemoteParticipant,\n  RemoteVideoStreamState as DeclarativeRemoteVideoStream,\n  LocalVideoStreamState as DeclarativeLocalVideoStream,\n  IncomingCallState as DeclarativeIncomingCall,\n  VideoStreamRendererViewState as DeclarativeVideoStreamRendererView\n} from './CallClientState';\nimport { CaptionsInfo } from './CallClientState';\n\n/* @conditional-compile-remove(teams-identity-support) */ /* @conditional-compile-remove(meeting-id) */\nimport { _isACSCall } from './TypeGuards';\n/* @conditional-compile-remove(meeting-id) */ /* @conditional-compile-remove(acs-close-captions) */\nimport { _isTeamsCall } from './TypeGuards';\nimport { CallCommon, IncomingCallCommon } from './BetaToStableTypes';\n\nimport { Features } from '@azure/communication-calling';\n\nimport { VideoEffectName } from '@azure/communication-calling';\n\nimport { LocalVideoStreamVideoEffectsState } from './CallClientState';\nimport { RaisedHand } from '@azure/communication-calling';\nimport { RaisedHandState } from './CallClientState';\nimport { TeamsMeetingAudioConferencingDetails } from '@azure/communication-calling';\nimport { ConferencePhoneInfo } from './CallClientState';\n\n/**\n * @private\n */\nexport function convertSdkLocalStreamToDeclarativeLocalStream(\n  stream: SdkLocalVideoStream\n): DeclarativeLocalVideoStream {\n  const localVideoStreamEffectsAPI = stream.feature(Features.VideoEffects);\n\n  return {\n    source: stream.source,\n    mediaStreamType: stream.mediaStreamType,\n    view: undefined,\n\n    videoEffects: convertFromSDKToDeclarativeVideoStreamVideoEffects(localVideoStreamEffectsAPI.activeEffects)\n  };\n}\n\n/**\n * @private\n */\nexport function convertSdkRemoteStreamToDeclarativeRemoteStream(\n  stream: SdkRemoteVideoStream\n): DeclarativeRemoteVideoStream {\n  return {\n    id: stream.id,\n    mediaStreamType: stream.mediaStreamType,\n    isAvailable: stream.isAvailable,\n    /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n    isReceiving: stream.isReceiving,\n    view: undefined,\n    streamSize: stream.size\n  };\n}\n\n/**\n * @private\n */\nexport function convertSdkParticipantToDeclarativeParticipant(\n  participant: SdkRemoteParticipant\n): DeclarativeRemoteParticipant {\n  const declarativeVideoStreams: { [key: number]: DeclarativeRemoteVideoStream } = {};\n  for (const videoStream of participant.videoStreams) {\n    declarativeVideoStreams[videoStream.id] = convertSdkRemoteStreamToDeclarativeRemoteStream(videoStream);\n  }\n  return {\n    identifier: participant.identifier,\n    displayName: participant.displayName,\n    state: participant.state,\n    callEndReason: participant.callEndReason,\n    videoStreams: declarativeVideoStreams,\n    isMuted: participant.isMuted,\n    isSpeaking: participant.isSpeaking,\n    raisedHand: undefined,\n    /* @conditional-compile-remove(hide-attendee-name) */\n    role: participant.role,\n    spotlight: undefined\n  };\n}\n\n/**\n * @private\n *\n * Note at the time of writing only one LocalVideoStream is supported by the SDK.\n */\nexport function convertSdkCallToDeclarativeCall(call: CallCommon): CallState {\n  const declarativeRemoteParticipants: { [key: string]: DeclarativeRemoteParticipant } = {};\n  call.remoteParticipants.forEach((participant: SdkRemoteParticipant) => {\n    declarativeRemoteParticipants[toFlatCommunicationIdentifier(participant.identifier)] =\n      convertSdkParticipantToDeclarativeParticipant(participant);\n  });\n  /* @conditional-compile-remove(hide-attendee-name) */\n  let hideAttendeeNames = false;\n  /* @conditional-compile-remove(hide-attendee-name) */\n  if (\n    call.feature(Features.Capabilities).capabilities &&\n    call.feature(Features.Capabilities).capabilities.viewAttendeeNames\n  ) {\n    const viewAttendeeNames = call.feature(Features.Capabilities).capabilities.viewAttendeeNames;\n    if (!viewAttendeeNames.isPresent && viewAttendeeNames.reason === 'MeetingRestricted') {\n      hideAttendeeNames = true;\n    }\n  }\n\n  let callInfo: TeamsCallInfo | undefined | /* @conditional-compile-remove(calling-beta-sdk) */ CallInfo;\n  if ('info' in call) {\n    callInfo = call.info as TeamsCallInfo | undefined | /* @conditional-compile-remove(calling-beta-sdk) */ CallInfo;\n  }\n\n  return {\n    id: call.id,\n    /* @conditional-compile-remove(teams-identity-support) */\n    kind: _isACSCall(call) ? ('Call' as CallKind) : ('TeamsCall' as CallKind),\n    callerInfo: call.callerInfo,\n    state: call.state,\n    callEndReason: call.callEndReason,\n    diagnostics: {\n      network: {\n        latest: {}\n      },\n      media: {\n        latest: {}\n      }\n    },\n    direction: call.direction,\n    isMuted: call.isMuted,\n    isScreenSharingOn: call.isScreenSharingOn,\n    localVideoStreams: call.localVideoStreams.map(convertSdkLocalStreamToDeclarativeLocalStream),\n    remoteParticipants: declarativeRemoteParticipants,\n    remoteParticipantsEnded: {},\n    recording: { isRecordingActive: false },\n    /* @conditional-compile-remove(local-recording-notification) */\n    localRecording: { isLocalRecordingActive: false },\n    pptLive: { isActive: false },\n    raiseHand: { raisedHands: [] },\n    localParticipantReaction: undefined,\n    transcription: { isTranscriptionActive: false },\n    screenShareRemoteParticipant: undefined,\n    startTime: new Date(),\n    endTime: undefined,\n    role: call.role,\n    captionsFeature: {\n      captions: [],\n      supportedSpokenLanguages: [],\n      supportedCaptionLanguages: [],\n      currentCaptionLanguage: '',\n      currentSpokenLanguage: '',\n      isCaptionsFeatureActive: false,\n      startCaptionsInProgress: false,\n      /* @conditional-compile-remove(acs-close-captions) */\n      captionsKind: _isTeamsCall(call) ? 'TeamsCaptions' : 'Captions'\n    },\n    transfer: {\n      acceptedTransfers: {}\n    },\n    optimalVideoCount: {\n      maxRemoteVideoStreams: call.feature(Features.OptimalVideoCount).optimalVideoCount\n    },\n    /* @conditional-compile-remove(hide-attendee-name) */\n    hideAttendeeNames,\n    /* @conditional-compile-remove(meeting-id) */\n    info: callInfo,\n    /* @conditional-compile-remove(teams-meeting-conference) */\n    meetingConference: { conferencePhones: [] }\n  };\n}\n\n/**\n * @private\n */\nexport function convertSdkIncomingCallToDeclarativeIncomingCall(call: IncomingCallCommon): DeclarativeIncomingCall {\n  return {\n    id: call.id,\n    callerInfo: call.callerInfo,\n    startTime: new Date(),\n    endTime: undefined\n  };\n}\n\n/**\n * @private\n */\nexport function convertFromSDKToDeclarativeVideoStreamRendererView(\n  view: VideoStreamRendererView\n): DeclarativeVideoStreamRendererView {\n  return {\n    scalingMode: view.scalingMode,\n    isMirrored: view.isMirrored,\n    target: view.target\n  };\n}\n\n/**\n * @private\n */\nexport function convertFromTeamsSDKToCaptionInfoState(caption: TeamsCaptionsInfo): CaptionsInfo {\n  return {\n    ...caption\n  };\n}\n\n/* @conditional-compile-remove(acs-close-captions) */\n/**\n * @private\n */\nexport function convertFromSDKToCaptionInfoState(caption: AcsCaptionsInfo): CaptionsInfo {\n  return {\n    captionText: caption.spokenText,\n    ...caption\n  };\n}\n\n/** @private */\nexport function convertFromSDKToDeclarativeVideoStreamVideoEffects(\n  videoEffects: VideoEffectName[]\n): LocalVideoStreamVideoEffectsState {\n  return {\n    activeEffects: videoEffects\n  };\n}\n\n/**\n * @private\n */\nexport function convertFromSDKToRaisedHandState(raisedHand: RaisedHand): RaisedHandState {\n  return {\n    raisedHandOrderPosition: raisedHand.order\n  };\n}\n\n/** @private */\nexport function convertConferencePhoneInfo(\n  meetingConferencePhoneInfo?: TeamsMeetingAudioConferencingDetails\n): ConferencePhoneInfo[] {\n  if (!meetingConferencePhoneInfo) {\n    return [];\n  }\n\n  return meetingConferencePhoneInfo.phoneNumbers.flatMap((phoneNumber) => {\n    const common = {\n      conferenceId: meetingConferencePhoneInfo.phoneConferenceId,\n      country: phoneNumber.countryName,\n      city: phoneNumber.cityName,\n      phoneNumber: '',\n      isTollFree: false\n    };\n    const toll = Object.assign({}, common);\n    toll.phoneNumber = phoneNumber.tollPhoneNumber?.phoneNumber ?? '';\n    toll.isTollFree = false;\n\n    const tollFree = Object.assign({}, common);\n    tollFree.phoneNumber = phoneNumber.tollFreePhoneNumber?.phoneNumber ?? '';\n    tollFree.isTollFree = true;\n\n    return [toll, tollFree].filter((phoneInfo) => phoneInfo.phoneNumber);\n  });\n}\n"]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"Converter.js","sourceRoot":"","sources":["../../../../../calling-stateful-client/src/Converter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n  RemoteParticipant as SdkRemoteParticipant,\n  RemoteVideoStream as SdkRemoteVideoStream,\n  LocalVideoStream as SdkLocalVideoStream,\n  VideoStreamRendererView\n} from '@azure/communication-calling';\nimport { TeamsCaptionsInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(acs-close-captions) */\nimport { CaptionsInfo as AcsCaptionsInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(teams-identity-support) */\nimport { CallKind } from '@azure/communication-calling';\n/* @conditional-compile-remove(meeting-id) */\nimport { TeamsCallInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(calling-beta-sdk) */\nimport { CallInfo } from '@azure/communication-calling';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport {\n  CallState,\n  RemoteParticipantState as DeclarativeRemoteParticipant,\n  RemoteVideoStreamState as DeclarativeRemoteVideoStream,\n  LocalVideoStreamState as DeclarativeLocalVideoStream,\n  IncomingCallState as DeclarativeIncomingCall,\n  VideoStreamRendererViewState as DeclarativeVideoStreamRendererView\n} from './CallClientState';\nimport { CaptionsInfo } from './CallClientState';\n\n/* @conditional-compile-remove(teams-identity-support) */ /* @conditional-compile-remove(meeting-id) */\nimport { _isACSCall } from './TypeGuards';\n/* @conditional-compile-remove(meeting-id) */ /* @conditional-compile-remove(acs-close-captions) */\nimport { _isTeamsCall } from './TypeGuards';\nimport { CallCommon, IncomingCallCommon } from './BetaToStableTypes';\n\nimport { Features } from '@azure/communication-calling';\n\nimport { VideoEffectName } from '@azure/communication-calling';\n\nimport { LocalVideoStreamVideoEffectsState } from './CallClientState';\nimport { RaisedHand } from '@azure/communication-calling';\nimport { RaisedHandState } from './CallClientState';\nimport { TeamsMeetingAudioConferencingDetails } from '@azure/communication-calling';\nimport { ConferencePhoneInfo } from './CallClientState';\n\n/**\n * @private\n */\nexport function convertSdkLocalStreamToDeclarativeLocalStream(\n  stream: SdkLocalVideoStream\n): DeclarativeLocalVideoStream {\n  const localVideoStreamEffectsAPI = stream.feature(Features.VideoEffects);\n\n  return {\n    source: stream.source,\n    mediaStreamType: stream.mediaStreamType,\n    view: undefined,\n\n    videoEffects: convertFromSDKToDeclarativeVideoStreamVideoEffects(localVideoStreamEffectsAPI.activeEffects)\n  };\n}\n\n/**\n * @private\n */\nexport function convertSdkRemoteStreamToDeclarativeRemoteStream(\n  stream: SdkRemoteVideoStream\n): DeclarativeRemoteVideoStream {\n  return {\n    id: stream.id,\n    mediaStreamType: stream.mediaStreamType,\n    isAvailable: stream.isAvailable,\n    /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n    isReceiving: stream.isReceiving,\n    view: undefined,\n    streamSize: stream.size\n  };\n}\n\n/**\n * @private\n */\nexport function convertSdkParticipantToDeclarativeParticipant(\n  participant: SdkRemoteParticipant\n): DeclarativeRemoteParticipant {\n  const declarativeVideoStreams: { [key: number]: DeclarativeRemoteVideoStream } = {};\n  for (const videoStream of participant.videoStreams) {\n    declarativeVideoStreams[videoStream.id] = convertSdkRemoteStreamToDeclarativeRemoteStream(videoStream);\n  }\n  return {\n    identifier: participant.identifier,\n    displayName: participant.displayName,\n    state: participant.state,\n    callEndReason: participant.callEndReason,\n    videoStreams: declarativeVideoStreams,\n    isMuted: participant.isMuted,\n    isSpeaking: participant.isSpeaking,\n    raisedHand: undefined,\n    /* @conditional-compile-remove(hide-attendee-name) */\n    role: participant.role,\n    spotlight: undefined\n  };\n}\n\n/**\n * @private\n *\n * Note at the time of writing only one LocalVideoStream is supported by the SDK.\n */\nexport function convertSdkCallToDeclarativeCall(call: CallCommon): CallState {\n  const declarativeRemoteParticipants: { [key: string]: DeclarativeRemoteParticipant } = {};\n  call.remoteParticipants.forEach((participant: SdkRemoteParticipant) => {\n    declarativeRemoteParticipants[toFlatCommunicationIdentifier(participant.identifier)] =\n      convertSdkParticipantToDeclarativeParticipant(participant);\n  });\n  /* @conditional-compile-remove(hide-attendee-name) */\n  let hideAttendeeNames = false;\n  /* @conditional-compile-remove(hide-attendee-name) */\n  if (\n    call.feature(Features.Capabilities).capabilities &&\n    call.feature(Features.Capabilities).capabilities.viewAttendeeNames\n  ) {\n    const viewAttendeeNames = call.feature(Features.Capabilities).capabilities.viewAttendeeNames;\n    if (!viewAttendeeNames.isPresent && viewAttendeeNames.reason === 'MeetingRestricted') {\n      hideAttendeeNames = true;\n    }\n  }\n\n  let callInfo: TeamsCallInfo | undefined | /* @conditional-compile-remove(calling-beta-sdk) */ CallInfo;\n  if ('info' in call) {\n    callInfo = call.info as TeamsCallInfo | undefined | /* @conditional-compile-remove(calling-beta-sdk) */ CallInfo;\n  }\n\n  return {\n    id: call.id,\n    /* @conditional-compile-remove(teams-identity-support) */\n    kind: _isACSCall(call) ? ('Call' as CallKind) : ('TeamsCall' as CallKind),\n    callerInfo: call.callerInfo,\n    state: call.state,\n    callEndReason: call.callEndReason,\n    diagnostics: {\n      network: {\n        latest: {}\n      },\n      media: {\n        latest: {}\n      }\n    },\n    direction: call.direction,\n    isMuted: call.isMuted,\n    isScreenSharingOn: call.isScreenSharingOn,\n    localVideoStreams: call.localVideoStreams.map(convertSdkLocalStreamToDeclarativeLocalStream),\n    remoteParticipants: declarativeRemoteParticipants,\n    remoteParticipantsEnded: {},\n    recording: { isRecordingActive: false },\n    /* @conditional-compile-remove(local-recording-notification) */\n    localRecording: { isLocalRecordingActive: false },\n    pptLive: { isActive: false },\n    raiseHand: { raisedHands: [] },\n    localParticipantReaction: undefined,\n    transcription: { isTranscriptionActive: false },\n    screenShareRemoteParticipant: undefined,\n    startTime: new Date(),\n    endTime: undefined,\n    role: call.role,\n    captionsFeature: {\n      captions: [],\n      supportedSpokenLanguages: [],\n      supportedCaptionLanguages: [],\n      currentCaptionLanguage: '',\n      currentSpokenLanguage: '',\n      isCaptionsFeatureActive: false,\n      startCaptionsInProgress: false,\n      /* @conditional-compile-remove(acs-close-captions) */\n      captionsKind: _isTeamsCall(call) ? 'TeamsCaptions' : 'Captions'\n    },\n    transfer: {\n      acceptedTransfers: {}\n    },\n    optimalVideoCount: {\n      maxRemoteVideoStreams: call.feature(Features.OptimalVideoCount).optimalVideoCount\n    },\n    /* @conditional-compile-remove(hide-attendee-name) */\n    hideAttendeeNames,\n    /* @conditional-compile-remove(meeting-id) */\n    info: callInfo,\n    /* @conditional-compile-remove(teams-meeting-conference) */\n    teamsMeetingConference: []\n  };\n}\n\n/**\n * @private\n */\nexport function convertSdkIncomingCallToDeclarativeIncomingCall(call: IncomingCallCommon): DeclarativeIncomingCall {\n  return {\n    id: call.id,\n    callerInfo: call.callerInfo,\n    startTime: new Date(),\n    endTime: undefined\n  };\n}\n\n/**\n * @private\n */\nexport function convertFromSDKToDeclarativeVideoStreamRendererView(\n  view: VideoStreamRendererView\n): DeclarativeVideoStreamRendererView {\n  return {\n    scalingMode: view.scalingMode,\n    isMirrored: view.isMirrored,\n    target: view.target\n  };\n}\n\n/**\n * @private\n */\nexport function convertFromTeamsSDKToCaptionInfoState(caption: TeamsCaptionsInfo): CaptionsInfo {\n  return {\n    ...caption\n  };\n}\n\n/* @conditional-compile-remove(acs-close-captions) */\n/**\n * @private\n */\nexport function convertFromSDKToCaptionInfoState(caption: AcsCaptionsInfo): CaptionsInfo {\n  return {\n    captionText: caption.spokenText,\n    ...caption\n  };\n}\n\n/** @private */\nexport function convertFromSDKToDeclarativeVideoStreamVideoEffects(\n  videoEffects: VideoEffectName[]\n): LocalVideoStreamVideoEffectsState {\n  return {\n    activeEffects: videoEffects\n  };\n}\n\n/**\n * @private\n */\nexport function convertFromSDKToRaisedHandState(raisedHand: RaisedHand): RaisedHandState {\n  return {\n    raisedHandOrderPosition: raisedHand.order\n  };\n}\n\n/** @private */\nexport function convertConferencePhoneInfo(\n  meetingConferencePhoneInfo?: TeamsMeetingAudioConferencingDetails\n): ConferencePhoneInfo[] {\n  if (!meetingConferencePhoneInfo) {\n    return [];\n  }\n\n  return meetingConferencePhoneInfo.phoneNumbers.flatMap((phoneNumber) => {\n    const common = {\n      conferenceId: meetingConferencePhoneInfo.phoneConferenceId,\n      country: phoneNumber.countryName,\n      city: phoneNumber.cityName,\n      phoneNumber: '',\n      isTollFree: false\n    };\n    const toll = Object.assign({}, common);\n    toll.phoneNumber = phoneNumber.tollPhoneNumber?.phoneNumber ?? '';\n    toll.isTollFree = false;\n\n    const tollFree = Object.assign({}, common);\n    tollFree.phoneNumber = phoneNumber.tollFreePhoneNumber?.phoneNumber ?? '';\n    tollFree.isTollFree = true;\n\n    return [toll, tollFree].filter((phoneInfo) => phoneInfo.phoneNumber);\n  });\n}\n"]}
         
     | 
| 
         @@ -95,12 +95,10 @@ export type ChatThreadProperties = { 
     | 
|
| 
       95 
95 
     | 
    
         
             
             *
         
     | 
| 
       96 
96 
     | 
    
         
             
             * @beta
         
     | 
| 
       97 
97 
     | 
    
         
             
             */
         
     | 
| 
       98 
     | 
    
         
            -
            export  
     | 
| 
       99 
     | 
    
         
            -
                /**
         
     | 
| 
       100 
     | 
    
         
            -
                 * Boolean to track whether or not messages are restricted to only text.
         
     | 
| 
       101 
     | 
    
         
            -
                 * */
         
     | 
| 
      
 98 
     | 
    
         
            +
            export type MessagingPolicy = {
         
     | 
| 
      
 99 
     | 
    
         
            +
                /** Boolean to track whether or not messages are restricted to only text. */
         
     | 
| 
       102 
100 
     | 
    
         
             
                textOnlyChat?: boolean;
         
     | 
| 
       103 
     | 
    
         
            -
            }
         
     | 
| 
      
 101 
     | 
    
         
            +
            };
         
     | 
| 
       104 
102 
     | 
    
         
             
            /**
         
     | 
| 
       105 
103 
     | 
    
         
             
             * Errors teed from API calls to the Chat SDK.
         
     | 
| 
       106 
104 
     | 
    
         
             
             *
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"ChatClientState.js","sourceRoot":"","sources":["../../../../../chat-stateful-client/src/ChatClientState.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"ChatClientState.js","sourceRoot":"","sources":["../../../../../chat-stateful-client/src/ChatClientState.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAoHlC;;;;GAIG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAclC,YAAY,MAAuB,EAAE,UAAiB,EAAE,SAAgB;QACtE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,8EAA8E;QAC9E,IAAI,CAAC,SAAS,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ChatMessageReadReceipt, ChatParticipant } from '@azure/communication-chat';\nimport { CommunicationIdentifierKind } from '@azure/communication-common';\nimport { ChatMessageWithStatus } from './types/ChatMessageWithStatus';\nimport { TypingIndicatorReceivedEvent } from '@azure/communication-chat';\n\n/**\n * Centralized state for {@link @azure/communication-chat#ChatClient}.\n *\n * @public\n */\nexport type ChatClientState = {\n  /**\n   * Identifier of the current user.\n   */\n  userId: CommunicationIdentifierKind;\n  /**\n   * DisplayName of the current user.\n   * The same value as what others see in {@link @azure/communication-chat#ChatParticipant.displayName}\n   */\n  displayName: string;\n  /**\n   * Chat threads joined by the current user.\n   * Object with {@link ChatThreadClientState} fields, keyed by {@link ChatThreadClientState.threadId}.\n   */\n  threads: { [key: string]: ChatThreadClientState };\n  /**\n   * Stores the latest error for each API method.\n   *\n   * See documentation of {@link ChatErrors} for details.\n   */\n  latestErrors: ChatErrors;\n};\n\n/**\n * Centralized state for {@link @azure/communication-chat#ChatThreadClient}.\n *\n * @public\n */\nexport type ChatThreadClientState = {\n  /**\n   * Messages in this thread.\n   * Object with {@link ChatMessageWithStatus} entries\n   * Local messages are keyed by keyed by {@link ChatMessageWithStatus.clientMessageId}.\n   * Remote messages are keyed by {@link @azure/communication-chat#ChatMessage.id}.\n   */\n  chatMessages: { [key: string]: ChatMessageWithStatus };\n  /**\n   * Participants of this chat thread.\n   *\n   * Object with {@link @azure/communication-chat#ChatParticipant} fields,\n   * keyed by {@link @azure/communication-chat#ChatParticipant.id}.\n   */\n  participants: { [key: string]: ChatParticipant };\n  /**\n   * Id of this chat thread. Returned from {@link @azure/communication-chat#ChatThreadClient.threadId}\n   */\n  threadId: string;\n  /**\n   * An object containing properties of this chat thread.\n   */\n  properties?: ChatThreadProperties;\n  /**\n   * An array of ReadReceipts of this chat thread. Returned from {@link @azure/communication-chat#ChatThreadClient.listReadReceipts}\n   */\n  readReceipts: ChatMessageReadReceipt[];\n  /**\n   * An array of typingIndicators of this chat thread. Captured from event listener of {@link @azure/communication-chat#ChatClient}\n   * Stateful client only stores recent 8000ms real-time typing indicators data.\n   */\n  typingIndicators: TypingIndicatorReceivedEvent[];\n  /**\n   * Latest timestamp when other users read messages sent by current user.\n   */\n  latestReadTime: Date;\n};\n\n/**\n * Properties of a chat thread.\n *\n * We define a minimal one that helps us hide the different types used by underlying API.\n *\n * @public\n */\nexport type ChatThreadProperties = {\n  topic?: string;\n  /* @conditional-compile-remove(rich-text-editor-image-upload) */\n  createdBy?: CommunicationIdentifierKind;\n  /* @conditional-compile-remove(rich-text-editor-image-upload) */\n  messagingPolicy?: MessagingPolicy;\n};\n\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\n/**\n *\n * Messaging policy of a chat thread.\n *\n * @beta\n */\nexport type MessagingPolicy = {\n  /** Boolean to track whether or not messages are restricted to only text. */\n  textOnlyChat?: boolean;\n};\n\n/**\n * Errors teed from API calls to the Chat SDK.\n *\n * Each property in the object stores the latest error for a particular SDK API method.\n *\n * @public\n */\nexport type ChatErrors = {\n  [target in ChatErrorTarget]: ChatError;\n};\n\n/**\n * Error thrown from failed {@link StatefulChatClient} methods.\n *\n * @public\n */\nexport class ChatError extends Error {\n  /**\n   * The API method target that failed.\n   */\n  public target: ChatErrorTarget;\n  /**\n   * Error thrown by the failed SDK method.\n   */\n  public innerError: Error;\n  /**\n   * Timestamp added to the error by the stateful layer.\n   */\n  public timestamp: Date;\n\n  constructor(target: ChatErrorTarget, innerError: Error, timestamp?: Date) {\n    super();\n    this.target = target;\n    this.innerError = innerError;\n    // Testing note: It is easier to mock Date::now() than the Date() constructor.\n    this.timestamp = timestamp ?? new Date(Date.now());\n    this.name = 'ChatError';\n    this.message = `${this.target}: ${this.innerError.message}`;\n  }\n}\n\n/**\n * String literal type for all permissible keys in {@link ChatErrors}.\n *\n * @public\n */\nexport type ChatErrorTarget =\n  | 'ChatClient.createChatThread'\n  | 'ChatClient.deleteChatThread'\n  | 'ChatClient.getChatThreadClient'\n  | 'ChatClient.listChatThreads'\n  | 'ChatClient.off'\n  | 'ChatClient.on'\n  | 'ChatClient.startRealtimeNotifications'\n  | 'ChatClient.stopRealtimeNotifications'\n  | 'ChatThreadClient.addParticipants'\n  | 'ChatThreadClient.deleteMessage'\n  | 'ChatThreadClient.getMessage'\n  | 'ChatThreadClient.getProperties'\n  | 'ChatThreadClient.listMessages'\n  | 'ChatThreadClient.listParticipants'\n  | 'ChatThreadClient.listReadReceipts'\n  | 'ChatThreadClient.removeParticipant'\n  | 'ChatThreadClient.sendMessage'\n  | 'ChatThreadClient.sendReadReceipt'\n  | 'ChatThreadClient.sendTypingNotification'\n  | 'ChatThreadClient.updateMessage'\n  | /* @conditional-compile-remove(chat-beta-sdk) */ 'ChatThreadClient.updateProperties'\n  | 'ChatThreadClient.updateTopic'\n  | /* @conditional-compile-remove(chat-beta-sdk) */ 'ChatThreadClient.uploadImage'\n  | /* @conditional-compile-remove(chat-beta-sdk) */ 'ChatThreadClient.deleteImage';\n"]}
         
     | 
| 
         @@ -16,7 +16,7 @@ import React from 'react'; 
     | 
|
| 
       16 
16 
     | 
    
         
             
            import { Announcer } from '../Announcer';
         
     | 
| 
       17 
17 
     | 
    
         
             
            import { useEffect, useState, useMemo } from 'react';
         
     | 
| 
       18 
18 
     | 
    
         
             
            import { useLocaleAttachmentCardStringsTrampoline } from '../utils/common';
         
     | 
| 
       19 
     | 
    
         
            -
            import { useAttachmentCardStyles,  
     | 
| 
      
 19 
     | 
    
         
            +
            import { useAttachmentCardStyles, attachmentNameContainerClassName, ATTACHMENT_CARD_MIN_PROGRESS } from '../styles/AttachmentCard.styles';
         
     | 
| 
       20 
20 
     | 
    
         
             
            /**
         
     | 
| 
       21 
21 
     | 
    
         
             
             * @internal
         
     | 
| 
       22 
22 
     | 
    
         
             
             * A component for displaying an attachment card with attachment icon and progress bar.
         
     | 
| 
         @@ -56,24 +56,18 @@ export const _AttachmentCard = (props) => { 
     | 
|
| 
       56 
56 
     | 
    
         
             
                return (React.createElement("div", { "data-is-focusable": true },
         
     | 
| 
       57 
57 
     | 
    
         
             
                    React.createElement(Announcer, { announcementString: announcerString, ariaLive: 'polite' }),
         
     | 
| 
       58 
58 
     | 
    
         
             
                    React.createElement(Card, { className: mergeClasses(attachmentCardStyles.root, selfResizing ? attachmentCardStyles.dynamicWidth : attachmentCardStyles.staticWidth), size: "small", role: "listitem", appearance: "filled-alternative", "aria-label": attachment.name, "data-testid": 'attachment-card' },
         
     | 
| 
       59 
     | 
    
         
            -
                        React.createElement(CardHeader, { className: attachmentCardStyles.content, image: {
         
     | 
| 
       60 
     | 
    
         
            -
                                 
     | 
| 
       61 
     | 
    
         
            -
                                children: (React.createElement(Icon, { "data-ui-id": 'attachmenttype-icon', iconName: getFileTypeIconProps({
         
     | 
| 
      
 59 
     | 
    
         
            +
                        React.createElement(CardHeader, { className: attachmentCardStyles.content, image: React.createElement("div", { className: attachmentCardStyles.fileIcon },
         
     | 
| 
      
 60 
     | 
    
         
            +
                                React.createElement(Icon, { "data-ui-id": 'attachmenttype-icon', iconName: getFileTypeIconProps({
         
     | 
| 
       62 
61 
     | 
    
         
             
                                        extension: extension,
         
     | 
| 
       63 
62 
     | 
    
         
             
                                        size: 24,
         
     | 
| 
       64 
63 
     | 
    
         
             
                                        imageFileType: 'svg'
         
     | 
| 
       65 
     | 
    
         
            -
                                    }).iconName }))
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
                                id: 'attachment-' + attachment.id,
         
     | 
| 
       68 
     | 
    
         
            -
                                children: (React.createElement(TooltipHost, { content: attachment.name, calloutProps: {
         
     | 
| 
      
 64 
     | 
    
         
            +
                                    }).iconName })), header: React.createElement("div", { className: attachmentNameContainerClassName, id: 'attachment-' + attachment.id },
         
     | 
| 
      
 65 
     | 
    
         
            +
                                React.createElement(TooltipHost, { content: attachment.name, calloutProps: {
         
     | 
| 
       69 
66 
     | 
    
         
             
                                        gapSpace: 0,
         
     | 
| 
       70 
67 
     | 
    
         
             
                                        target: '#attachment-' + attachment.id
         
     | 
| 
       71 
     | 
    
         
            -
                                    } 
     | 
| 
       72 
     | 
    
         
            -
                                    React.createElement( 
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                                className: attachmentCardStyles.actions,
         
     | 
| 
       75 
     | 
    
         
            -
                                children: MappedMenuItems(menuActions, Object.assign(Object.assign({}, attachment), { url: (_e = attachment.url) !== null && _e !== void 0 ? _e : '' }), onActionHandlerFailed)
         
     | 
| 
       76 
     | 
    
         
            -
                            } })),
         
     | 
| 
      
 68 
     | 
    
         
            +
                                    } },
         
     | 
| 
      
 69 
     | 
    
         
            +
                                    React.createElement("div", { className: attachmentCardStyles.fileNameLabel },
         
     | 
| 
      
 70 
     | 
    
         
            +
                                        React.createElement(Text, { className: attachmentCardStyles.title, "aria-label": attachment.name }, attachment.name)))), action: React.createElement("div", { className: attachmentCardStyles.focusState }, MappedMenuItems(menuActions, Object.assign(Object.assign({}, attachment), { url: (_e = attachment.url) !== null && _e !== void 0 ? _e : '' }), onActionHandlerFailed)) })),
         
     | 
| 
       77 
71 
     | 
    
         
             
                    isUploadInProgress ? (React.createElement(CardFooter, null,
         
     | 
| 
       78 
72 
     | 
    
         
             
                        React.createElement(ProgressBar, { thickness: "medium", value: Math.max(progress !== null && progress !== void 0 ? progress : 0, ATTACHMENT_CARD_MIN_PROGRESS), shape: "rounded" }))) : (React.createElement(React.Fragment, null, " "))));
         
     | 
| 
       79 
73 
     | 
    
         
             
            };
         
     |