telegram-tt/dist/9954.2f4e700b1c117bc4f463.js.map
Alexander Zinchuk b7be72f5d9 [Build]
2022-08-17 10:37:02 +02:00

1 line
177 KiB
Plaintext

{"version":3,"file":"9954.2f4e700b1c117bc4f463.js","mappings":"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MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,KAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,KAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,GAAQ,KAAQ,GAAQ,KAAQ,GAAQ,KACxF,GAAQ,KAAQ,GAAQ,KAAQ,GAAQ,KAAQ,GAAQ,KAAQ,GAAQ,KAAQ,GAAQ,KACxF,GAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,QAG7DC,EAAgB,CAC3B,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACvC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5C,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5C,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5C,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACpD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAA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","sources":["webpack://telegram-t/./src/global/actions/api/calls.async.ts","webpack://telegram-t/./src/util/phoneCallEmojiConstants.ts","webpack://telegram-t/./src/global/actions/apiUpdaters/calls.async.ts","webpack://telegram-t/./src/util/vibrate.ts","webpack://telegram-t/./src/components/calls/group/MicrophoneButton.tsx","webpack://telegram-t/./src/components/calls/group/GroupCallParticipantMenu.tsx","webpack://telegram-t/./src/hooks/useThrottledCallback.ts","webpack://telegram-t/./src/hooks/useRunThrottled.ts","webpack://telegram-t/./src/components/calls/group/OutlinedMicrophoneIcon.tsx","webpack://telegram-t/./src/components/calls/group/GroupCallParticipant.tsx","webpack://telegram-t/./src/components/calls/group/GroupCallParticipantList.tsx","webpack://telegram-t/./src/components/calls/group/GroupCallParticipantVideo.tsx","webpack://telegram-t/./src/components/calls/group/GroupCallParticipantStreams.tsx","webpack://telegram-t/./src/components/calls/group/GroupCall.tsx","webpack://telegram-t/./src/components/calls/ActiveCallHeader.tsx","webpack://telegram-t/./src/components/calls/phone/PhoneCallButton.module.scss?9dea","webpack://telegram-t/./src/components/calls/phone/PhoneCallButton.tsx","webpack://telegram-t/./src/components/calls/phone/PhoneCall.module.scss?a250","webpack://telegram-t/./src/components/calls/phone/PhoneCall.tsx","webpack://telegram-t/./src/components/calls/phone/RatePhoneCallModal.module.scss?64f6","webpack://telegram-t/./src/components/calls/phone/RatePhoneCallModal.tsx","webpack://telegram-t/./src/lib/secret-sauce/index.js"],"sourcesContent":["import { addActionHandler, getGlobal, setGlobal } from '../../index';\nimport {\n joinGroupCall,\n startSharingScreen,\n leaveGroupCall,\n toggleStream,\n isStreamEnabled,\n setVolume, stopPhoneCall,\n} from '../../../lib/secret-sauce';\n\nimport { GROUP_CALL_VOLUME_MULTIPLIER } from '../../../config';\nimport { callApi } from '../../../api/gramjs';\nimport { selectChat, selectUser } from '../../selectors';\nimport {\n selectActiveGroupCall, selectPhoneCallUser,\n} from '../../selectors/calls';\nimport {\n removeGroupCall,\n updateActiveGroupCall,\n} from '../../reducers/calls';\nimport { getGroupCallAudioContext, getGroupCallAudioElement, removeGroupCallAudioElement } from '../ui/calls';\nimport { loadFullChat } from './chats';\n\naddActionHandler('leaveGroupCall', async (global, actions, payload) => {\n const {\n isFromLibrary, shouldDiscard, shouldRemove, rejoin,\n } = payload || {};\n const groupCall = selectActiveGroupCall(global);\n if (!groupCall) {\n return;\n }\n\n setGlobal(updateActiveGroupCall(global, { connectionState: 'disconnected' }, groupCall.participantsCount - 1));\n\n await callApi('leaveGroupCall', {\n call: groupCall,\n });\n\n if (shouldDiscard) {\n await callApi('discardGroupCall', {\n call: groupCall,\n });\n }\n\n global = getGlobal();\n if (shouldRemove) {\n global = removeGroupCall(global, groupCall.id);\n }\n\n removeGroupCallAudioElement();\n\n setGlobal({\n ...global,\n groupCalls: {\n ...global.groupCalls,\n activeGroupCallId: undefined,\n },\n isCallPanelVisible: undefined,\n });\n\n if (!isFromLibrary) {\n leaveGroupCall();\n }\n\n if (rejoin) {\n actions.joinGroupCall(rejoin);\n }\n});\n\naddActionHandler('toggleGroupCallVideo', async (global) => {\n const groupCall = selectActiveGroupCall(global);\n const user = selectUser(global, global.currentUserId!);\n if (!user || !groupCall) {\n return;\n }\n\n await toggleStream('video');\n\n await callApi('editGroupCallParticipant', {\n call: groupCall,\n videoStopped: !isStreamEnabled('video'),\n participant: user,\n });\n});\n\naddActionHandler('requestToSpeak', (global, actions, payload) => {\n const { value } = payload || { value: true };\n const groupCall = selectActiveGroupCall(global);\n const user = selectUser(global, global.currentUserId!);\n if (!user || !groupCall) {\n return;\n }\n\n void callApi('editGroupCallParticipant', {\n call: groupCall,\n raiseHand: value,\n participant: user,\n });\n});\n\naddActionHandler('setGroupCallParticipantVolume', (global, actions, payload) => {\n const { participantId, volume } = payload!;\n\n const groupCall = selectActiveGroupCall(global);\n const user = selectUser(global, participantId);\n if (!user || !groupCall) {\n return;\n }\n\n setVolume(participantId, Math.floor(volume / GROUP_CALL_VOLUME_MULTIPLIER) / 100);\n\n void callApi('editGroupCallParticipant', {\n call: groupCall,\n volume: Number(volume),\n participant: user,\n });\n});\n\naddActionHandler('toggleGroupCallMute', async (global, actions, payload) => {\n const { participantId, value } = payload || {};\n const groupCall = selectActiveGroupCall(global);\n const user = selectUser(global, participantId || global.currentUserId!);\n if (!user || !groupCall) {\n return;\n }\n\n const muted = value === undefined ? isStreamEnabled('audio', user.id) : value;\n\n if (!participantId) {\n await toggleStream('audio');\n } else {\n setVolume(participantId, muted ? 0 : 1);\n }\n\n await callApi('editGroupCallParticipant', {\n call: groupCall,\n muted,\n participant: user,\n });\n});\n\naddActionHandler('toggleGroupCallPresentation', async (global, actions, payload) => {\n const groupCall = selectActiveGroupCall(global);\n const user = selectUser(global, global.currentUserId!);\n if (!user || !groupCall) {\n return;\n }\n\n const value = payload?.value !== undefined ? payload?.value : !isStreamEnabled('presentation');\n if (value) {\n const params = await startSharingScreen();\n if (!params) {\n return;\n }\n\n await callApi('joinGroupCallPresentation', {\n call: groupCall,\n params,\n });\n } else {\n await toggleStream('presentation', false);\n await callApi('leaveGroupCallPresentation', {\n call: groupCall,\n });\n }\n\n await callApi('editGroupCallParticipant', {\n call: groupCall,\n presentationPaused: !isStreamEnabled('presentation'),\n participant: user,\n });\n});\n\naddActionHandler('connectToActiveGroupCall', async (global, actions) => {\n const groupCall = selectActiveGroupCall(global);\n if (!groupCall) return;\n\n if (groupCall.connectionState === 'discarded') {\n actions.showNotification({ message: 'This voice chat is not active' });\n return;\n }\n\n const audioElement = getGroupCallAudioElement();\n const audioContext = getGroupCallAudioContext();\n\n if (!audioElement || !audioContext) {\n return;\n }\n\n const {\n currentUserId,\n } = global;\n\n if (!currentUserId) return;\n\n const params = await joinGroupCall(currentUserId, audioContext, audioElement, actions.apiUpdate);\n\n const result = await callApi('joinGroupCall', {\n call: groupCall,\n params,\n inviteHash: groupCall.inviteHash,\n });\n\n if (!result) return;\n\n actions.loadMoreGroupCallParticipants();\n\n if (groupCall.chatId) {\n const chat = selectChat(getGlobal(), groupCall.chatId);\n if (!chat) return;\n await loadFullChat(chat);\n }\n});\n\naddActionHandler('connectToActivePhoneCall', async (global, actions) => {\n const { phoneCall } = global;\n\n if (!phoneCall) return;\n\n const user = selectPhoneCallUser(global);\n\n if (!user) return;\n\n const dhConfig = await callApi('getDhConfig');\n\n if (!dhConfig) return;\n\n await callApi('createPhoneCallState', [true]);\n\n const gAHash = await callApi('requestPhoneCall', [dhConfig])!;\n\n const result = await callApi('requestCall', { user, gAHash, isVideo: phoneCall.isVideo });\n\n if (!result) {\n actions.hangUp();\n }\n});\n\naddActionHandler('acceptCall', async (global) => {\n const { phoneCall } = global;\n\n if (!phoneCall) return;\n\n const dhConfig = await callApi('getDhConfig');\n if (!dhConfig) return;\n\n await callApi('createPhoneCallState', [false]);\n\n const gB = await callApi('acceptPhoneCall', [dhConfig])!;\n callApi('acceptCall', { call: phoneCall, gB });\n});\n\naddActionHandler('sendSignalingData', (global, actions, payload) => {\n const { phoneCall } = global;\n if (!phoneCall) {\n return;\n }\n\n const data = JSON.stringify(payload);\n\n (async () => {\n const encodedData = await callApi('encodePhoneCallData', [data]);\n\n if (!encodedData) return;\n\n callApi('sendSignalingData', { data: encodedData, call: phoneCall });\n })();\n});\n\naddActionHandler('closeCallRatingModal', (global) => {\n return {\n ...global,\n ratingPhoneCall: undefined,\n };\n});\n\naddActionHandler('setCallRating', (global, actions, payload) => {\n const { ratingPhoneCall } = global;\n if (!ratingPhoneCall) {\n return undefined;\n }\n\n const { rating, comment } = payload;\n\n callApi('setCallRating', { call: ratingPhoneCall, rating, comment });\n\n return {\n ...global,\n ratingPhoneCall: undefined,\n };\n});\n\naddActionHandler('hangUp', (global) => {\n const { phoneCall } = global;\n\n if (!phoneCall) return undefined;\n\n if (phoneCall.state === 'discarded') {\n callApi('destroyPhoneCallState');\n stopPhoneCall();\n return {\n ...global,\n phoneCall: undefined,\n isCallPanelVisible: undefined,\n };\n }\n\n callApi('destroyPhoneCallState');\n stopPhoneCall();\n callApi('discardCall', { call: phoneCall });\n\n if (phoneCall.state === 'requesting') {\n return {\n ...global,\n phoneCall: undefined,\n isCallPanelVisible: undefined,\n };\n }\n\n setTimeout(() => {\n setGlobal({\n ...getGlobal(),\n phoneCall: undefined,\n isCallPanelVisible: undefined,\n });\n }, 500);\n\n return undefined;\n});\n","export const EMOJI_DATA = new Uint16Array([\n 0xd83d, 0xde09, 0xd83d, 0xde0d, 0xd83d, 0xde1b, 0xd83d, 0xde2d, 0xd83d, 0xde31, 0xd83d, 0xde21,\n 0xd83d, 0xde0e, 0xd83d, 0xde34, 0xd83d, 0xde35, 0xd83d, 0xde08, 0xd83d, 0xde2c, 0xd83d, 0xde07,\n 0xd83d, 0xde0f, 0xd83d, 0xdc6e, 0xd83d, 0xdc77, 0xd83d, 0xdc82, 0xd83d, 0xdc76, 0xd83d, 0xdc68,\n 0xd83d, 0xdc69, 0xd83d, 0xdc74, 0xd83d, 0xdc75, 0xd83d, 0xde3b, 0xd83d, 0xde3d, 0xd83d, 0xde40,\n 0xd83d, 0xdc7a, 0xd83d, 0xde48, 0xd83d, 0xde49, 0xd83d, 0xde4a, 0xd83d, 0xdc80, 0xd83d, 0xdc7d,\n 0xd83d, 0xdca9, 0xd83d, 0xdd25, 0xd83d, 0xdca5, 0xd83d, 0xdca4, 0xd83d, 0xdc42, 0xd83d, 0xdc40,\n 0xd83d, 0xdc43, 0xd83d, 0xdc45, 0xd83d, 0xdc44, 0xd83d, 0xdc4d, 0xd83d, 0xdc4e, 0xd83d, 0xdc4c,\n 0xd83d, 0xdc4a, 0x270c, 0x270b, 0xd83d, 0xdc50, 0xd83d, 0xdc46, 0xd83d, 0xdc47, 0xd83d, 0xdc49,\n 0xd83d, 0xdc48, 0xd83d, 0xde4f, 0xd83d, 0xdc4f, 0xd83d, 0xdcaa, 0xd83d, 0xdeb6, 0xd83c, 0xdfc3,\n 0xd83d, 0xdc83, 0xd83d, 0xdc6b, 0xd83d, 0xdc6a, 0xd83d, 0xdc6c, 0xd83d, 0xdc6d, 0xd83d, 0xdc85,\n 0xd83c, 0xdfa9, 0xd83d, 0xdc51, 0xd83d, 0xdc52, 0xd83d, 0xdc5f, 0xd83d, 0xdc5e, 0xd83d, 0xdc60,\n 0xd83d, 0xdc55, 0xd83d, 0xdc57, 0xd83d, 0xdc56, 0xd83d, 0xdc59, 0xd83d, 0xdc5c, 0xd83d, 0xdc53,\n 0xd83c, 0xdf80, 0xd83d, 0xdc84, 0xd83d, 0xdc9b, 0xd83d, 0xdc99, 0xd83d, 0xdc9c, 0xd83d, 0xdc9a,\n 0xd83d, 0xdc8d, 0xd83d, 0xdc8e, 0xd83d, 0xdc36, 0xd83d, 0xdc3a, 0xd83d, 0xdc31, 0xd83d, 0xdc2d,\n 0xd83d, 0xdc39, 0xd83d, 0xdc30, 0xd83d, 0xdc38, 0xd83d, 0xdc2f, 0xd83d, 0xdc28, 0xd83d, 0xdc3b,\n 0xd83d, 0xdc37, 0xd83d, 0xdc2e, 0xd83d, 0xdc17, 0xd83d, 0xdc34, 0xd83d, 0xdc11, 0xd83d, 0xdc18,\n 0xd83d, 0xdc3c, 0xd83d, 0xdc27, 0xd83d, 0xdc25, 0xd83d, 0xdc14, 0xd83d, 0xdc0d, 0xd83d, 0xdc22,\n 0xd83d, 0xdc1b, 0xd83d, 0xdc1d, 0xd83d, 0xdc1c, 0xd83d, 0xdc1e, 0xd83d, 0xdc0c, 0xd83d, 0xdc19,\n 0xd83d, 0xdc1a, 0xd83d, 0xdc1f, 0xd83d, 0xdc2c, 0xd83d, 0xdc0b, 0xd83d, 0xdc10, 0xd83d, 0xdc0a,\n 0xd83d, 0xdc2b, 0xd83c, 0xdf40, 0xd83c, 0xdf39, 0xd83c, 0xdf3b, 0xd83c, 0xdf41, 0xd83c, 0xdf3e,\n 0xd83c, 0xdf44, 0xd83c, 0xdf35, 0xd83c, 0xdf34, 0xd83c, 0xdf33, 0xd83c, 0xdf1e, 0xd83c, 0xdf1a,\n 0xd83c, 0xdf19, 0xd83c, 0xdf0e, 0xd83c, 0xdf0b, 0x26a1, 0x2614, 0x2744, 0x26c4, 0xd83c, 0xdf00,\n 0xd83c, 0xdf08, 0xd83c, 0xdf0a, 0xd83c, 0xdf93, 0xd83c, 0xdf86, 0xd83c, 0xdf83, 0xd83d, 0xdc7b,\n 0xd83c, 0xdf85, 0xd83c, 0xdf84, 0xd83c, 0xdf81, 0xd83c, 0xdf88, 0xd83d, 0xdd2e, 0xd83c, 0xdfa5,\n 0xd83d, 0xdcf7, 0xd83d, 0xdcbf, 0xd83d, 0xdcbb, 0x260e, 0xd83d, 0xdce1, 0xd83d, 0xdcfa, 0xd83d,\n 0xdcfb, 0xd83d, 0xdd09, 0xd83d, 0xdd14, 0x23f3, 0x23f0, 0x231a, 0xd83d, 0xdd12, 0xd83d, 0xdd11,\n 0xd83d, 0xdd0e, 0xd83d, 0xdca1, 0xd83d, 0xdd26, 0xd83d, 0xdd0c, 0xd83d, 0xdd0b, 0xd83d, 0xdebf,\n 0xd83d, 0xdebd, 0xd83d, 0xdd27, 0xd83d, 0xdd28, 0xd83d, 0xdeaa, 0xd83d, 0xdeac, 0xd83d, 0xdca3,\n 0xd83d, 0xdd2b, 0xd83d, 0xdd2a, 0xd83d, 0xdc8a, 0xd83d, 0xdc89, 0xd83d, 0xdcb0, 0xd83d, 0xdcb5,\n 0xd83d, 0xdcb3, 0x2709, 0xd83d, 0xdceb, 0xd83d, 0xdce6, 0xd83d, 0xdcc5, 0xd83d, 0xdcc1, 0x2702,\n 0xd83d, 0xdccc, 0xd83d, 0xdcce, 0x2712, 0x270f, 0xd83d, 0xdcd0, 0xd83d, 0xdcda, 0xd83d, 0xdd2c,\n 0xd83d, 0xdd2d, 0xd83c, 0xdfa8, 0xd83c, 0xdfac, 0xd83c, 0xdfa4, 0xd83c, 0xdfa7, 0xd83c, 0xdfb5,\n 0xd83c, 0xdfb9, 0xd83c, 0xdfbb, 0xd83c, 0xdfba, 0xd83c, 0xdfb8, 0xd83d, 0xdc7e, 0xd83c, 0xdfae,\n 0xd83c, 0xdccf, 0xd83c, 0xdfb2, 0xd83c, 0xdfaf, 0xd83c, 0xdfc8, 0xd83c, 0xdfc0, 0x26bd, 0x26be,\n 0xd83c, 0xdfbe, 0xd83c, 0xdfb1, 0xd83c, 0xdfc9, 0xd83c, 0xdfb3, 0xd83c, 0xdfc1, 0xd83c, 0xdfc7,\n 0xd83c, 0xdfc6, 0xd83c, 0xdfca, 0xd83c, 0xdfc4, 0x2615, 0xd83c, 0xdf7c, 0xd83c, 0xdf7a, 0xd83c,\n 0xdf77, 0xd83c, 0xdf74, 0xd83c, 0xdf55, 0xd83c, 0xdf54, 0xd83c, 0xdf5f, 0xd83c, 0xdf57, 0xd83c,\n 0xdf71, 0xd83c, 0xdf5a, 0xd83c, 0xdf5c, 0xd83c, 0xdf61, 0xd83c, 0xdf73, 0xd83c, 0xdf5e, 0xd83c,\n 0xdf69, 0xd83c, 0xdf66, 0xd83c, 0xdf82, 0xd83c, 0xdf70, 0xd83c, 0xdf6a, 0xd83c, 0xdf6b, 0xd83c,\n 0xdf6d, 0xd83c, 0xdf6f, 0xd83c, 0xdf4e, 0xd83c, 0xdf4f, 0xd83c, 0xdf4a, 0xd83c, 0xdf4b, 0xd83c,\n 0xdf52, 0xd83c, 0xdf47, 0xd83c, 0xdf49, 0xd83c, 0xdf53, 0xd83c, 0xdf51, 0xd83c, 0xdf4c, 0xd83c,\n 0xdf50, 0xd83c, 0xdf4d, 0xd83c, 0xdf46, 0xd83c, 0xdf45, 0xd83c, 0xdf3d, 0xd83c, 0xdfe1, 0xd83c,\n 0xdfe5, 0xd83c, 0xdfe6, 0x26ea, 0xd83c, 0xdff0, 0x26fa, 0xd83c, 0xdfed, 0xd83d, 0xddfb, 0xd83d,\n 0xddfd, 0xd83c, 0xdfa0, 0xd83c, 0xdfa1, 0x26f2, 0xd83c, 0xdfa2, 0xd83d, 0xdea2, 0xd83d, 0xdea4,\n 0x2693, 0xd83d, 0xde80, 0x2708, 0xd83d, 0xde81, 0xd83d, 0xde82, 0xd83d, 0xde8b, 0xd83d, 0xde8e,\n 0xd83d, 0xde8c, 0xd83d, 0xde99, 0xd83d, 0xde97, 0xd83d, 0xde95, 0xd83d, 0xde9b, 0xd83d, 0xdea8,\n 0xd83d, 0xde94, 0xd83d, 0xde92, 0xd83d, 0xde91, 0xd83d, 0xdeb2, 0xd83d, 0xdea0, 0xd83d, 0xde9c,\n 0xd83d, 0xdea6, 0x26a0, 0xd83d, 0xdea7, 0x26fd, 0xd83c, 0xdfb0, 0xd83d, 0xddff, 0xd83c, 0xdfaa,\n 0xd83c, 0xdfad, 0xd83c, 0xddef, 0xd83c, 0xddf5, 0xd83c, 0xddf0, 0xd83c, 0xddf7, 0xd83c, 0xdde9,\n 0xd83c, 0xddea, 0xd83c, 0xdde8, 0xd83c, 0xddf3, 0xd83c, 0xddfa, 0xd83c, 0xddf8, 0xd83c, 0xddeb,\n 0xd83c, 0xddf7, 0xd83c, 0xddea, 0xd83c, 0xddf8, 0xd83c, 0xddee, 0xd83c, 0xddf9, 0xd83c, 0xddf7,\n 0xd83c, 0xddfa, 0xd83c, 0xddec, 0xd83c, 0xdde7, 0x0031, 0x20e3, 0x0032, 0x20e3, 0x0033, 0x20e3,\n 0x0034, 0x20e3, 0x0035, 0x20e3, 0x0036, 0x20e3, 0x0037, 0x20e3, 0x0038, 0x20e3, 0x0039, 0x20e3,\n 0x0030, 0x20e3, 0xd83d, 0xdd1f, 0x2757, 0x2753, 0x2665, 0x2666, 0xd83d, 0xdcaf, 0xd83d, 0xdd17,\n 0xd83d, 0xdd31, 0xd83d, 0xdd34, 0xd83d, 0xdd35, 0xd83d, 0xdd36, 0xd83d, 0xdd37,\n]);\n\nexport const EMOJI_OFFSETS = [\n 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22,\n 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46,\n 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70,\n 72, 74, 76, 78, 80, 82, 84, 86, 87, 88, 90, 92,\n 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116,\n 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140,\n 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164,\n 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188,\n 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212,\n 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236,\n 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 259,\n 260, 261, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280,\n 282, 284, 286, 288, 290, 292, 294, 295, 297, 299, 301, 303,\n 305, 306, 307, 308, 310, 312, 314, 316, 318, 320, 322, 324,\n 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348,\n 350, 351, 353, 355, 357, 359, 360, 362, 364, 365, 366, 368,\n 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392,\n 394, 396, 398, 400, 402, 404, 406, 407, 408, 410, 412, 414,\n 416, 418, 420, 422, 424, 426, 427, 429, 431, 433, 435, 437,\n 439, 441, 443, 445, 447, 449, 451, 453, 455, 457, 459, 461,\n 463, 465, 467, 469, 471, 473, 475, 477, 479, 481, 483, 485,\n 487, 489, 491, 493, 495, 497, 499, 501, 503, 505, 507, 508,\n 510, 511, 513, 515, 517, 519, 521, 522, 524, 526, 528, 529,\n 531, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552,\n 554, 556, 558, 560, 562, 564, 566, 567, 569, 570, 572, 574,\n 576, 578, 582, 586, 590, 594, 598, 602, 606, 610, 614, 618,\n 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 641,\n 642, 643, 644, 646, 648, 650, 652, 654, 656, 658,\n];\n","import { addActionHandler, getGlobal, setGlobal } from '../../index';\nimport { selectActiveGroupCall, selectGroupCallParticipant, selectPhoneCallUser } from '../../selectors/calls';\nimport { updateGroupCall, updateGroupCallParticipant } from '../../reducers/calls';\nimport { omit } from '../../../util/iteratees';\nimport type { ApiCallProtocol } from '../../../lib/secret-sauce';\nimport {\n handleUpdateGroupCallConnection,\n handleUpdateGroupCallParticipants,\n joinPhoneCall, processSignalingMessage,\n} from '../../../lib/secret-sauce';\nimport type { ApiPhoneCall } from '../../../api/types';\nimport { ARE_CALLS_SUPPORTED } from '../../../util/environment';\nimport { callApi } from '../../../api/gramjs';\nimport * as langProvider from '../../../util/langProvider';\nimport { EMOJI_DATA, EMOJI_OFFSETS } from '../../../util/phoneCallEmojiConstants';\n\naddActionHandler('apiUpdate', (global, actions, update) => {\n const { activeGroupCallId } = global.groupCalls;\n\n switch (update['@type']) {\n case 'updateGroupCallLeavePresentation': {\n actions.toggleGroupCallPresentation({ value: false });\n break;\n }\n case 'updateGroupCallStreams': {\n if (!update.userId || !activeGroupCallId) break;\n if (!selectGroupCallParticipant(global, activeGroupCallId, update.userId)) break;\n\n return updateGroupCallParticipant(global, activeGroupCallId, update.userId, omit(update, ['@type', 'userId']));\n }\n case 'updateGroupCallConnectionState': {\n if (!activeGroupCallId) break;\n\n if (update.connectionState === 'disconnected') {\n actions.leaveGroupCall({ isFromLibrary: true });\n break;\n }\n\n return updateGroupCall(global, activeGroupCallId, {\n connectionState: update.connectionState,\n isSpeakerDisabled: update.isSpeakerDisabled,\n });\n }\n case 'updateGroupCallParticipants': {\n const { groupCallId, participants } = update;\n if (activeGroupCallId === groupCallId) {\n void handleUpdateGroupCallParticipants(participants);\n }\n break;\n }\n case 'updateGroupCallConnection': {\n if (update.data.stream) {\n actions.showNotification({ message: 'Big live streams are not yet supported' });\n actions.leaveGroupCall();\n break;\n }\n void handleUpdateGroupCallConnection(update.data, update.presentation);\n\n const groupCall = selectActiveGroupCall(global);\n if (groupCall?.participants && Object.keys(groupCall.participants).length > 0) {\n void handleUpdateGroupCallParticipants(Object.values(groupCall.participants));\n }\n break;\n }\n case 'updatePhoneCallMediaState':\n return {\n ...global,\n phoneCall: {\n ...global.phoneCall,\n ...omit(update, ['@type']),\n } as ApiPhoneCall,\n };\n case 'updatePhoneCall': {\n if (!ARE_CALLS_SUPPORTED) return undefined;\n const { phoneCall, currentUserId } = global;\n\n const call: ApiPhoneCall = {\n ...phoneCall,\n ...update.call,\n };\n\n const isOutgoing = phoneCall?.adminId === currentUserId;\n\n global = {\n ...global,\n phoneCall: call,\n };\n\n if (phoneCall && phoneCall.id && call.id !== phoneCall.id) {\n if (call.state !== 'discarded') {\n callApi('discardCall', {\n call,\n isBusy: true,\n });\n }\n return undefined;\n }\n\n const {\n accessHash, state, connections, gB,\n } = call;\n\n if (state === 'active' || state === 'accepted') {\n if (!verifyPhoneCallProtocol(call.protocol)) {\n const user = selectPhoneCallUser(global);\n actions.hangUp();\n actions.showNotification({ message: langProvider.getTranslation('VoipPeerIncompatible', user?.firstName) });\n return undefined;\n }\n }\n\n if (state === 'discarded') {\n // Discarded from other device\n if (!phoneCall) return undefined;\n\n return {\n ...global,\n ...(call.needRating && { ratingPhoneCall: call }),\n isCallPanelVisible: undefined,\n };\n } else if (state === 'accepted' && accessHash && gB) {\n (async () => {\n const { gA, keyFingerprint, emojis } = await callApi('confirmPhoneCall', [gB, EMOJI_DATA, EMOJI_OFFSETS])!;\n\n global = getGlobal();\n const newCall = {\n ...global.phoneCall,\n emojis,\n } as ApiPhoneCall;\n\n setGlobal({\n ...global,\n phoneCall: newCall,\n });\n\n callApi('confirmCall', {\n call, gA, keyFingerprint,\n });\n })();\n } else if (state === 'active' && connections && phoneCall?.state !== 'active') {\n if (!isOutgoing) {\n callApi('receivedCall', { call });\n (async () => {\n const { emojis } = await callApi('confirmPhoneCall', [call!.gAOrB!, EMOJI_DATA, EMOJI_OFFSETS])!;\n\n global = getGlobal();\n const newCall = {\n ...global.phoneCall,\n emojis,\n } as ApiPhoneCall;\n\n setGlobal({\n ...global,\n phoneCall: newCall,\n });\n })();\n }\n void joinPhoneCall(\n connections, actions.sendSignalingData, isOutgoing, Boolean(call?.isVideo), actions.apiUpdate,\n );\n }\n\n return global;\n }\n case 'updatePhoneCallConnectionState': {\n const { connectionState } = update;\n\n if (!global.phoneCall) return global;\n\n if (connectionState === 'closed' || connectionState === 'disconnected' || connectionState === 'failed') {\n actions.hangUp();\n return undefined;\n }\n\n return {\n ...global,\n phoneCall: {\n ...global.phoneCall,\n isConnected: connectionState === 'connected',\n },\n };\n }\n case 'updatePhoneCallSignalingData': {\n const { phoneCall } = global;\n\n if (!phoneCall) {\n break;\n }\n\n callApi('decodePhoneCallData', [update.data])?.then(processSignalingMessage);\n break;\n }\n }\n\n return undefined;\n});\n\nfunction verifyPhoneCallProtocol(protocol?: ApiCallProtocol) {\n return protocol?.libraryVersions.some((version) => {\n return version === '4.0.0' || version === '4.0.1';\n });\n}\n","export const vibrateShort = () => {\n navigator.vibrate?.(50);\n};\n","import type { GroupCallConnectionState } from '../../../lib/secret-sauce';\nimport type { FC } from '../../../lib/teact/teact';\nimport React, {\n memo, useEffect, useMemo, useRef, useState,\n} from '../../../lib/teact/teact';\nimport { getActions, withGlobal } from '../../../global';\n\nimport { LOCAL_TGS_URLS } from '../../common/helpers/animatedAssets';\nimport buildClassName from '../../../util/buildClassName';\nimport { vibrateShort } from '../../../util/vibrate';\nimport usePrevious from '../../../hooks/usePrevious';\nimport { selectActiveGroupCall, selectGroupCallParticipant } from '../../../global/selectors/calls';\nimport useLang from '../../../hooks/useLang';\n\nimport AnimatedIcon from '../../common/AnimatedIcon';\n\nimport './MicrophoneButton.scss';\n\nconst CONNECTION_STATE_DEFAULT = 'discarded';\n\ntype StateProps = {\n connectionState?: GroupCallConnectionState;\n hasRequestedToSpeak: boolean;\n isMuted?: boolean;\n canSelfUnmute?: boolean;\n noAudioStream: boolean;\n};\n\nconst REQUEST_TO_SPEAK_THROTTLE = 3000;\nconst HOLD_TO_SPEAK_TIME = 200;\nconst ICON_SIZE = 48;\n\nconst MicrophoneButton: FC<StateProps> = ({\n noAudioStream,\n canSelfUnmute,\n isMuted,\n hasRequestedToSpeak,\n connectionState,\n}) => {\n const {\n toggleGroupCallMute,\n requestToSpeak,\n playGroupCallSound,\n } = getActions();\n\n const lang = useLang();\n const muteMouseDownState = useRef('up');\n\n const [isRequestingToSpeak, setIsRequestingToSpeak] = useState(false);\n const isConnecting = connectionState !== 'connected';\n const shouldRaiseHand = !canSelfUnmute && isMuted;\n const prevShouldRaiseHand = usePrevious(shouldRaiseHand);\n\n useEffect(() => {\n if (prevShouldRaiseHand && !shouldRaiseHand) {\n playGroupCallSound({ sound: 'allowTalk' });\n }\n }, [playGroupCallSound, prevShouldRaiseHand, shouldRaiseHand]);\n\n // Voice mini\n // unmuted -> muted [69, 99]\n // muted -> unmuted [36, 69]\n // raise -> muted [0, 36]\n // muted -> raise [99, 136]\n // unmuted -> raise [136, 172]\n // TODO should probably move to other component\n const playSegment: [number, number] = useMemo(() => {\n if (isRequestingToSpeak) {\n const r = Math.floor(Math.random() * 100);\n return (r < 32 ? [0, 120]\n : (r < 64 ? [120, 240]\n : (r < 97 ? [240, 420]\n : [420, 540]\n )\n )\n );\n }\n if (!prevShouldRaiseHand && shouldRaiseHand) {\n return noAudioStream ? [99, 135] : [136, 172];\n }\n if (prevShouldRaiseHand && !shouldRaiseHand) {\n return [0, 36];\n }\n if (!shouldRaiseHand) {\n return noAudioStream ? [69, 99] : [36, 69];\n }\n return [0, 0];\n }, [prevShouldRaiseHand, isRequestingToSpeak, noAudioStream, shouldRaiseHand]);\n\n const animatedIconName = isRequestingToSpeak ? 'HandFilled' : 'VoiceMini';\n\n const toggleMute = () => {\n vibrateShort();\n toggleGroupCallMute();\n };\n\n const handleMouseDownMute = () => {\n if (shouldRaiseHand) {\n if (isRequestingToSpeak) return;\n vibrateShort();\n requestToSpeak();\n setIsRequestingToSpeak(true);\n setTimeout(() => {\n setIsRequestingToSpeak(false);\n }, REQUEST_TO_SPEAK_THROTTLE);\n return;\n }\n muteMouseDownState.current = 'down';\n if (noAudioStream) {\n setTimeout(() => {\n if (muteMouseDownState.current === 'down') {\n muteMouseDownState.current = 'hold';\n toggleMute();\n }\n }, HOLD_TO_SPEAK_TIME);\n }\n };\n\n const handleMouseUpMute = () => {\n if (shouldRaiseHand) {\n return;\n }\n toggleMute();\n muteMouseDownState.current = 'up';\n };\n\n const buttonText = useMemo(() => {\n return lang(\n hasRequestedToSpeak ? 'VoipMutedTapedForSpeak' : (\n shouldRaiseHand ? 'VoipMutedByAdmin' : (\n noAudioStream ? 'VoipUnmute' : 'VoipTapToMute'\n )\n ),\n );\n }, [hasRequestedToSpeak, noAudioStream, lang, shouldRaiseHand]);\n\n return (\n <div className=\"button-wrapper microphone-wrapper\">\n <button\n className={buildClassName(\n 'MicrophoneButton',\n noAudioStream && 'crossed',\n canSelfUnmute && 'can-self-unmute',\n isConnecting && 'is-connecting',\n shouldRaiseHand && 'muted-by-admin',\n )}\n onMouseDown={handleMouseDownMute}\n onMouseUp={handleMouseUpMute}\n >\n <AnimatedIcon\n tgsUrl={LOCAL_TGS_URLS[animatedIconName]}\n size={ICON_SIZE}\n playSegment={playSegment}\n />\n </button>\n <div className=\"button-text\">\n {buttonText}\n </div>\n </div>\n );\n};\n\nexport default memo(withGlobal(\n (global): StateProps => {\n const groupCall = selectActiveGroupCall(global);\n\n const { connectionState } = groupCall || {};\n const meParticipant = groupCall && selectGroupCallParticipant(global, groupCall.id, global.currentUserId!);\n\n const {\n raiseHandRating, hasAudioStream, canSelfUnmute, isMuted,\n } = meParticipant || {};\n\n return {\n connectionState: connectionState || CONNECTION_STATE_DEFAULT,\n hasRequestedToSpeak: Boolean(raiseHandRating),\n noAudioStream: !hasAudioStream,\n canSelfUnmute,\n isMuted,\n };\n },\n)(MicrophoneButton));\n","import type { GroupCallParticipant } from '../../../lib/secret-sauce';\nimport type { FC } from '../../../lib/teact/teact';\nimport React, {\n memo, useCallback, useEffect, useState,\n} from '../../../lib/teact/teact';\nimport { getActions, withGlobal } from '../../../global';\n\nimport type { IAnchorPosition } from '../../../types';\n\nimport { GROUP_CALL_DEFAULT_VOLUME, GROUP_CALL_VOLUME_MULTIPLIER } from '../../../config';\nimport { LOCAL_TGS_URLS } from '../../common/helpers/animatedAssets';\nimport buildClassName from '../../../util/buildClassName';\nimport buildStyle from '../../../util/buildStyle';\nimport useRunThrottled from '../../../hooks/useRunThrottled';\nimport useFlag from '../../../hooks/useFlag';\nimport useLang from '../../../hooks/useLang';\nimport { selectIsAdminInActiveGroupCall } from '../../../global/selectors/calls';\n\nimport Menu from '../../ui/Menu';\nimport MenuItem from '../../ui/MenuItem';\nimport AnimatedIcon from '../../common/AnimatedIcon';\nimport DeleteMemberModal from '../../right/DeleteMemberModal';\n\nimport './GroupCallParticipantMenu.scss';\n\nconst SPEAKER_ICON_DISABLED_SEGMENT: [number, number] = [0, 17];\nconst SPEAKER_ICON_ENABLED_SEGMENT: [number, number] = [17, 34];\n\ntype OwnProps = {\n participant?: GroupCallParticipant;\n closeDropdown: VoidFunction;\n isDropdownOpen: boolean;\n anchor?: IAnchorPosition;\n};\n\ntype StateProps = {\n isAdmin: boolean;\n};\n\nconst VOLUME_ZERO = 0;\nconst VOLUME_LOW = 50;\nconst VOLUME_MEDIUM = 100;\nconst VOLUME_NORMAL = 150;\n\nconst VOLUME_CHANGE_THROTTLE = 500;\n\nconst SPEAKER_ICON_SIZE = 24;\n\nconst GroupCallParticipantMenu: FC<OwnProps & StateProps> = ({\n participant,\n closeDropdown,\n isDropdownOpen,\n anchor,\n isAdmin,\n}) => {\n const {\n toggleGroupCallMute,\n setGroupCallParticipantVolume,\n toggleGroupCallPanel,\n openChat,\n requestToSpeak,\n } = getActions();\n\n const lang = useLang();\n const [isDeleteUserModalOpen, openDeleteUserModal, closeDeleteUserModal] = useFlag();\n\n const id = participant?.id;\n const {\n isMutedByMe, isMuted, isSelf, canSelfUnmute,\n } = participant || {};\n const isRaiseHand = Boolean(participant?.raiseHandRating);\n const shouldRaiseHand = !canSelfUnmute && isMuted;\n\n const [localVolume, setLocalVolume] = useState(\n isMutedByMe ? VOLUME_ZERO : ((participant?.volume || GROUP_CALL_DEFAULT_VOLUME) / GROUP_CALL_VOLUME_MULTIPLIER),\n );\n\n useEffect(() => {\n setLocalVolume(isMutedByMe\n ? VOLUME_ZERO\n : ((participant?.volume || GROUP_CALL_DEFAULT_VOLUME) / GROUP_CALL_VOLUME_MULTIPLIER));\n // We only want to initialize local volume when switching participants and ignore following updates from server\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id]);\n\n const runThrottled = useRunThrottled(VOLUME_CHANGE_THROTTLE);\n\n const handleRemove = useCallback((e: React.SyntheticEvent<any>) => {\n e.stopPropagation();\n openDeleteUserModal();\n closeDropdown();\n }, [openDeleteUserModal, closeDropdown]);\n\n const handleCancelRequestToSpeak = useCallback((e: React.SyntheticEvent<any>) => {\n e.stopPropagation();\n requestToSpeak({\n value: false,\n });\n closeDropdown();\n }, [requestToSpeak, closeDropdown]);\n\n const handleMute = useCallback((e: React.SyntheticEvent<any>) => {\n e.stopPropagation();\n closeDropdown();\n\n if (!isAdmin) {\n setLocalVolume(isMutedByMe ? GROUP_CALL_DEFAULT_VOLUME / GROUP_CALL_VOLUME_MULTIPLIER : VOLUME_ZERO);\n }\n\n toggleGroupCallMute({\n participantId: id,\n value: isAdmin ? !shouldRaiseHand : !isMutedByMe,\n });\n }, [closeDropdown, toggleGroupCallMute, id, isAdmin, shouldRaiseHand, isMutedByMe]);\n\n const handleOpenProfile = useCallback((e: React.SyntheticEvent<any>) => {\n e.stopPropagation();\n toggleGroupCallPanel();\n openChat({\n id,\n });\n closeDropdown();\n }, [toggleGroupCallPanel, closeDropdown, openChat, id]);\n\n const isLocalVolumeZero = localVolume === VOLUME_ZERO;\n const speakerIconPlaySegment = isLocalVolumeZero ? SPEAKER_ICON_DISABLED_SEGMENT : SPEAKER_ICON_ENABLED_SEGMENT;\n\n const handleChangeVolume = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = Number(e.target.value);\n setLocalVolume(value);\n runThrottled(() => {\n if (value === VOLUME_ZERO) {\n toggleGroupCallMute({\n participantId: id,\n value: true,\n });\n } else {\n setGroupCallParticipantVolume({\n participantId: id,\n volume: Math.floor(value * GROUP_CALL_VOLUME_MULTIPLIER),\n });\n }\n });\n };\n\n return (\n <div>\n <Menu\n isOpen={isDropdownOpen}\n positionX=\"right\"\n autoClose\n style={buildStyle(anchor && `right: 1rem; top: ${anchor.y}px`)}\n onClose={closeDropdown}\n className=\"participant-menu\"\n >\n {!isSelf && !shouldRaiseHand && (\n <div className=\"group\">\n <div className={buildClassName(\n 'volume-control',\n localVolume < VOLUME_LOW && 'low',\n localVolume >= VOLUME_LOW && localVolume < VOLUME_MEDIUM && 'medium',\n localVolume >= VOLUME_MEDIUM && localVolume < VOLUME_NORMAL && 'normal',\n localVolume >= VOLUME_NORMAL && 'high',\n )}\n >\n <input\n type=\"range\"\n min=\"0\"\n max=\"200\"\n value={localVolume}\n onChange={handleChangeVolume}\n />\n <div className=\"info\">\n <AnimatedIcon\n tgsUrl={LOCAL_TGS_URLS.Speaker}\n playSegment={speakerIconPlaySegment}\n size={SPEAKER_ICON_SIZE}\n />\n <span>{localVolume}%</span>\n </div>\n </div>\n </div>\n )}\n <div className=\"group\">\n {(isRaiseHand && isSelf) && (\n <MenuItem\n icon=\"stop-raising-hand\"\n onClick={handleCancelRequestToSpeak}\n >\n {lang('VoipGroupCancelRaiseHand')}\n </MenuItem>\n )}\n {!isSelf && <MenuItem icon=\"user\" onClick={handleOpenProfile}>{lang('VoipGroupOpenProfile')}</MenuItem>}\n {!isSelf && (\n // TODO cross mic\n <MenuItem\n icon={isMuted ? (isAdmin ? 'allow-speak' : 'microphone-alt') : 'microphone-alt'}\n onClick={handleMute}\n >\n {isAdmin\n ? lang(shouldRaiseHand ? 'VoipGroupAllowToSpeak' : 'VoipMute')\n : lang(isMutedByMe ? 'VoipGroupUnmuteForMe' : 'VoipGroupMuteForMe')}\n </MenuItem>\n )}\n {!isSelf && isAdmin && (\n // TODO replace with hand\n <MenuItem icon=\"delete-user\" destructive onClick={handleRemove}>\n {lang('VoipGroupUserRemove')}\n </MenuItem>\n )}\n </div>\n </Menu>\n\n {!isSelf && isAdmin && (\n <DeleteMemberModal\n isOpen={isDeleteUserModalOpen}\n userId={id}\n onClose={closeDeleteUserModal}\n />\n )}\n </div>\n );\n};\n\nexport default memo(withGlobal<OwnProps>(\n (global): StateProps => {\n return {\n isAdmin: selectIsAdminInActiveGroupCall(global),\n };\n },\n)(GroupCallParticipantMenu));\n","import { useCallback, useMemo } from '../lib/teact/teact';\n\nimport { throttle } from '../util/schedulers';\n\nexport default function useThrottledCallback<T extends AnyToVoidFunction>(\n fn: T,\n deps: any[],\n ms: number,\n noFirst?: boolean,\n) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const fnMemo = useCallback(fn, deps);\n\n return useMemo(() => {\n return throttle(fnMemo, ms, !noFirst);\n }, [fnMemo, ms, noFirst]);\n}\n","import useThrottledCallback from './useThrottledCallback';\n\nexport default function useRunThrottled(ms: number, noFirst?: boolean) {\n return useThrottledCallback((cb: NoneToVoidFunction) => {\n cb();\n }, [], ms, noFirst);\n}\n","import type { GroupCallParticipant } from '../../../lib/secret-sauce';\nimport { THRESHOLD } from '../../../lib/secret-sauce';\nimport type { FC } from '../../../lib/teact/teact';\nimport React, { memo, useMemo } from '../../../lib/teact/teact';\n\nimport { LOCAL_TGS_URLS } from '../../common/helpers/animatedAssets';\nimport usePrevious from '../../../hooks/usePrevious';\n\nimport AnimatedIcon from '../../common/AnimatedIcon';\n\ntype OwnProps = {\n participant: GroupCallParticipant;\n noColor?: boolean;\n};\n\nconst OutlinedMicrophoneIcon: FC<OwnProps> = ({\n participant,\n noColor,\n}) => {\n const { isMuted, isMutedByMe } = participant;\n const isSpeaking = (participant.amplitude || 0) > THRESHOLD;\n const isRaiseHand = Boolean(participant.raiseHandRating);\n const prevIsRaiseHand = usePrevious(isRaiseHand);\n const canSelfUnmute = Boolean(participant?.canSelfUnmute);\n const shouldRaiseHand = !canSelfUnmute && isMuted;\n const prevIsMuted = usePrevious(isMuted);\n\n const playSegment: [number, number] = useMemo(() => {\n if (isMuted && !prevIsMuted) {\n return [43, 64];\n }\n\n if (!isMuted && prevIsMuted) {\n return [22, 42];\n }\n\n if (isRaiseHand && !prevIsRaiseHand) {\n return [65, 84];\n }\n\n if (!shouldRaiseHand && prevIsRaiseHand) {\n return [0, 21];\n }\n\n // TODO cancel request to speak should play in reverse\n // if (!isRaiseHand && prevIsRaiseHand) {\n // return [84, 65];\n // }\n\n return isMuted ? [22, 23] : [43, 44];\n // eslint-disable-next-line\n }, [isMuted, shouldRaiseHand, isRaiseHand]);\n\n const microphoneColor: [number, number, number] | undefined = useMemo(() => {\n return noColor ? [0xff, 0xff, 0xff] : (\n isRaiseHand ? [0x4d, 0xa6, 0xe0]\n : (shouldRaiseHand || isMutedByMe ? [0xFF, 0x70, 0x6F] : (\n isSpeaking ? [0x57, 0xBC, 0x6C] : [0x84, 0x8D, 0x94]\n ))\n );\n }, [noColor, isRaiseHand, shouldRaiseHand, isMutedByMe, isSpeaking]);\n\n return (\n <AnimatedIcon\n tgsUrl={LOCAL_TGS_URLS.VoiceOutlined}\n playSegment={playSegment}\n size={28}\n color={microphoneColor}\n />\n );\n};\n\nexport default memo(OutlinedMicrophoneIcon);\n","import type { GroupCallParticipant as TypeGroupCallParticipant } from '../../../lib/secret-sauce';\nimport { THRESHOLD } from '../../../lib/secret-sauce';\nimport type { FC } from '../../../lib/teact/teact';\nimport React, { memo, useMemo, useRef } from '../../../lib/teact/teact';\nimport { withGlobal } from '../../../global';\n\nimport type { ApiChat, ApiUser } from '../../../api/types';\n\nimport buildClassName from '../../../util/buildClassName';\nimport { selectChat, selectUser } from '../../../global/selectors';\nimport useLang from '../../../hooks/useLang';\nimport { GROUP_CALL_DEFAULT_VOLUME, GROUP_CALL_VOLUME_MULTIPLIER } from '../../../config';\n\nimport Avatar from '../../common/Avatar';\nimport OutlinedMicrophoneIcon from './OutlinedMicrophoneIcon';\n\nimport './GroupCallParticipant.scss';\n\ntype OwnProps = {\n participant: TypeGroupCallParticipant;\n openParticipantMenu: (anchor: HTMLDivElement, participant: TypeGroupCallParticipant) => void;\n};\n\ntype StateProps = {\n user?: ApiUser;\n chat?: ApiChat;\n};\n\nconst GroupCallParticipant: FC<OwnProps & StateProps> = ({\n openParticipantMenu,\n participant,\n user,\n chat,\n}) => {\n // eslint-disable-next-line no-null/no-null\n const anchorRef = useRef<HTMLDivElement>(null);\n const lang = useLang();\n\n const { isSelf, isMutedByMe, isMuted } = participant;\n const isSpeaking = (participant.amplitude || 0) > THRESHOLD;\n const isRaiseHand = Boolean(participant.raiseHandRating);\n\n const handleOnClick = () => {\n if (isSelf) return;\n openParticipantMenu(anchorRef.current!, participant);\n };\n\n const [aboutText, aboutColor] = useMemo(() => {\n if (isSelf) {\n return [lang('ThisIsYou'), 'blue'];\n }\n if (isMutedByMe) {\n return [lang('VoipGroupMutedForMe'), 'red'];\n }\n return isRaiseHand\n ? [lang('WantsToSpeak'), 'blue']\n : (!isMuted && isSpeaking ? [\n participant.volume && participant.volume !== GROUP_CALL_DEFAULT_VOLUME\n ? lang('SpeakingWithVolume',\n (participant.volume / GROUP_CALL_VOLUME_MULTIPLIER).toString())\n .replace('%%', '%') : lang('Speaking'),\n 'green',\n ]\n : (participant.about ? [participant.about, ''] : [lang('Listening'), 'blue']));\n }, [isSpeaking, participant.volume, lang, isSelf, isMutedByMe, isRaiseHand, isMuted, participant.about]);\n\n if (!user && !chat) {\n return undefined;\n }\n\n const name = user ? `${user.firstName || ''} ${user.lastName || ''}` : chat?.title;\n\n return (\n <div\n className={buildClassName(\n 'GroupCallParticipant',\n participant.canSelfUnmute && 'can-self-unmute',\n )}\n onClick={handleOnClick}\n ref={anchorRef}\n >\n <Avatar user={user} chat={chat} size=\"medium\" noVideo />\n <div className=\"info\">\n <span className=\"name\">{name}</span>\n <span className={buildClassName('about', aboutColor)}>{aboutText}</span>\n </div>\n <div className=\"microphone\">\n <OutlinedMicrophoneIcon participant={participant} />\n </div>\n </div>\n );\n};\n\nexport default memo(withGlobal<OwnProps>(\n (global, { participant }): StateProps => {\n return {\n user: participant.isUser ? selectUser(global, participant.id) : undefined,\n chat: !participant.isUser ? selectChat(global, participant.id) : undefined,\n };\n },\n)(GroupCallParticipant));\n","import type { GroupCallParticipant as TypeGroupCallParticipant } from '../../../lib/secret-sauce';\nimport type { FC } from '../../../lib/teact/teact';\nimport React, { memo, useMemo } from '../../../lib/teact/teact';\nimport { getActions, withGlobal } from '../../../global';\n\nimport useLang from '../../../hooks/useLang';\nimport { selectActiveGroupCall } from '../../../global/selectors/calls';\nimport useInfiniteScroll from '../../../hooks/useInfiniteScroll';\n\nimport GroupCallParticipant from './GroupCallParticipant';\nimport InfiniteScroll from '../../ui/InfiniteScroll';\n\ntype OwnProps = {\n openParticipantMenu: (anchor: HTMLDivElement, participant: TypeGroupCallParticipant) => void;\n};\n\ntype StateProps = {\n participantsCount: number;\n participants?: Record<string, TypeGroupCallParticipant>;\n canInvite?: boolean;\n};\n\nconst GroupCallParticipantList: FC<OwnProps & StateProps> = ({\n participants,\n participantsCount,\n openParticipantMenu,\n}) => {\n const {\n createGroupCallInviteLink,\n loadMoreGroupCallParticipants,\n } = getActions();\n\n const lang = useLang();\n\n const participantsIds = useMemo(() => {\n return Object.keys(participants || {});\n }, [participants]);\n\n const [viewportIds, getMore] = useInfiniteScroll(\n loadMoreGroupCallParticipants,\n participantsIds,\n participantsIds.length >= participantsCount,\n );\n\n return (\n <div className=\"participants\">\n <div className=\"invite-btn\" onClick={createGroupCallInviteLink}>\n <div className=\"icon\">\n <i className=\"icon-add-user\" />\n </div>\n <div className=\"text\">{lang('VoipGroupInviteMember')}</div>\n </div>\n\n <InfiniteScroll\n items={viewportIds}\n onLoadMore={getMore}\n >\n {viewportIds?.map(\n (participantId) => (\n participants![participantId] && (\n <GroupCallParticipant\n key={participantId}\n openParticipantMenu={openParticipantMenu}\n participant={participants![participantId]}\n />\n )\n ),\n )}\n </InfiniteScroll>\n\n </div>\n );\n};\n\nexport default memo(withGlobal<OwnProps>(\n (global): StateProps => {\n const { participantsCount, participants } = selectActiveGroupCall(global) || {};\n\n return {\n participants,\n participantsCount: participantsCount || 0,\n };\n },\n)(GroupCallParticipantList));\n","import type { GroupCallParticipant as TypeGroupCallParticipant } from '../../../lib/secret-sauce';\nimport { getUserStreams, THRESHOLD } from '../../../lib/secret-sauce';\nimport type { FC } from '../../../lib/teact/teact';\nimport React, { memo, useCallback } from '../../../lib/teact/teact';\nimport { withGlobal } from '../../../global';\n\nimport type { ApiChat, ApiUser } from '../../../api/types';\n\nimport buildClassName from '../../../util/buildClassName';\nimport { selectChat, selectUser } from '../../../global/selectors';\nimport useLang from '../../../hooks/useLang';\nimport { ENABLE_THUMBNAIL_VIDEO } from '../../../config';\n\nimport Avatar from '../../common/Avatar';\n\nimport './GroupCallParticipantVideo.scss';\n\ntype OwnProps = {\n participant: TypeGroupCallParticipant;\n type: 'video' | 'presentation';\n onClick?: (id: string, type: 'video' | 'presentation') => void;\n isFullscreen?: boolean;\n};\n\ntype StateProps = {\n user?: ApiUser;\n chat?: ApiChat;\n currentUserId?: string;\n isActive?: boolean;\n};\n\nconst GroupCallParticipantVideo: FC<OwnProps & StateProps> = ({\n type,\n onClick,\n user,\n chat,\n isActive,\n isFullscreen,\n}) => {\n const lang = useLang();\n\n const handleClick = useCallback(() => {\n if (onClick) {\n onClick(user?.id || chat!.id, type);\n }\n }, [chat, onClick, type, user?.id]);\n\n if (!user && !chat) return undefined;\n\n const streams = getUserStreams(user?.id || chat!.id);\n\n return (\n <div\n className={buildClassName('GroupCallParticipantVideo', isActive && 'active')}\n onClick={handleClick}\n >\n {isFullscreen && (\n <button className=\"back-button\">\n <i className=\"icon-arrow-left\" />\n {lang('Back')}\n </button>\n )}\n <Avatar user={user} chat={chat} className=\"thumbnail-avatar\" noVideo />\n {ENABLE_THUMBNAIL_VIDEO && (\n <div className=\"thumbnail-wrapper\">\n <video className=\"thumbnail\" muted autoPlay playsInline srcObject={streams?.[type]} />\n </div>\n )}\n <video className=\"video\" muted autoPlay playsInline srcObject={streams?.[type]} />\n <div className=\"info\">\n <i className=\"icon-microphone-alt\" />\n <span className=\"name\">{user?.firstName || chat?.title}</span>\n {type === 'presentation' && <i className=\"last-icon icon-active-sessions\" />}\n </div>\n </div>\n );\n};\n\nexport default memo(withGlobal<OwnProps>(\n (global, { participant }): StateProps => {\n return {\n currentUserId: global.currentUserId,\n user: participant.isUser ? selectUser(global, participant.id) : undefined,\n chat: !participant.isUser ? selectChat(global, participant.id) : undefined,\n isActive: (participant.amplitude || 0) > THRESHOLD,\n };\n },\n)(GroupCallParticipantVideo));\n","import type { GroupCallParticipant } from '../../../lib/secret-sauce';\nimport type { FC } from '../../../lib/teact/teact';\nimport React, {\n memo, useCallback, useMemo, useState,\n} from '../../../lib/teact/teact';\nimport { withGlobal } from '../../../global';\nimport GroupCallParticipantVideo from './GroupCallParticipantVideo';\nimport { selectActiveGroupCall } from '../../../global/selectors/calls';\nimport buildClassName from '../../../util/buildClassName';\n\ntype OwnProps = {\n onDoubleClick?: VoidFunction;\n};\n\ntype StateProps = {\n participants?: Record<string, GroupCallParticipant>;\n};\n\ntype SelectedVideo = {\n type: 'video' | 'presentation';\n id: string;\n};\n\nconst GroupCallParticipantStreams: FC<OwnProps & StateProps> = ({\n participants,\n onDoubleClick,\n}) => {\n const [selectedVideo, setSelectedVideo] = useState<SelectedVideo | undefined>(undefined);\n const presentationParticipants = useMemo(() => {\n return Object.values(participants || {}).filter((l) => l.hasPresentationStream);\n }, [participants]);\n const videoParticipants = useMemo(() => {\n return Object.values(participants || {}).filter((l) => l.hasVideoStream);\n }, [participants]);\n\n const totalVideoCount = videoParticipants.length + presentationParticipants.length;\n // TODO replace with more adequate solution.\n // There's a max of 30 videos or so right now\n const columnCount = totalVideoCount <= 2 ? 1 : (\n totalVideoCount <= 6 ? 2 : (\n totalVideoCount <= 9 ? 3 : 4\n )\n );\n\n const shouldSpanLastVideo = totalVideoCount === 3 || (columnCount === 2 && totalVideoCount % 2 !== 0);\n\n const handleClickVideo = useCallback((id: string, type: 'video' | 'presentation') => {\n if (!selectedVideo || (id !== selectedVideo.id || type !== selectedVideo.type)) {\n setSelectedVideo({\n id,\n type,\n });\n } else {\n setSelectedVideo(undefined);\n }\n }, [selectedVideo]);\n\n return (\n <div className=\"streams\" onDoubleClick={onDoubleClick}>\n <div\n className={buildClassName(\n 'videos',\n shouldSpanLastVideo && 'span-last-video',\n )}\n style={`--column-count: ${selectedVideo ? 1 : columnCount}`}\n >\n {selectedVideo && (\n <GroupCallParticipantVideo\n key={selectedVideo.id}\n isFullscreen\n onClick={handleClickVideo}\n participant={participants![selectedVideo.id]}\n type={selectedVideo.type}\n />\n )}\n\n {!selectedVideo ? presentationParticipants.map((participant) => (\n <GroupCallParticipantVideo\n key={participant.id}\n onClick={handleClickVideo}\n participant={participant}\n type=\"presentation\"\n />\n )) : undefined}\n {!selectedVideo ? videoParticipants.map((participant) => (\n <GroupCallParticipantVideo\n key={participant.id}\n onClick={handleClickVideo}\n participant={participant}\n type=\"video\"\n />\n )) : undefined}\n </div>\n </div>\n );\n};\n\nexport default memo(withGlobal<OwnProps>(\n (global): StateProps => {\n const { participants } = selectActiveGroupCall(global) || {};\n return {\n participants,\n };\n },\n)(GroupCallParticipantStreams));\n","import type {\n GroupCallConnectionState, GroupCallParticipant as TypeGroupCallParticipant,\n} from '../../../lib/secret-sauce';\nimport {\n IS_SCREENSHARE_SUPPORTED, switchCameraInput, toggleSpeaker,\n} from '../../../lib/secret-sauce';\nimport type { FC } from '../../../lib/teact/teact';\nimport React, {\n memo, useCallback, useEffect, useMemo, useRef, useState,\n} from '../../../lib/teact/teact';\nimport { getActions, withGlobal } from '../../../global';\nimport '../../../global/actions/calls';\n\nimport type { IAnchorPosition } from '../../../types';\n\nimport {\n IS_ANDROID,\n IS_IOS,\n IS_REQUEST_FULLSCREEN_SUPPORTED,\n IS_SINGLE_COLUMN_LAYOUT,\n} from '../../../util/environment';\nimport { LOCAL_TGS_URLS } from '../../common/helpers/animatedAssets';\nimport buildClassName from '../../../util/buildClassName';\nimport {\n selectGroupCall,\n selectGroupCallParticipant,\n selectIsAdminInActiveGroupCall,\n} from '../../../global/selectors/calls';\nimport useFlag from '../../../hooks/useFlag';\nimport useLang from '../../../hooks/useLang';\n\nimport Loading from '../../ui/Loading';\nimport Button from '../../ui/Button';\nimport DropdownMenu from '../../ui/DropdownMenu';\nimport MenuItem from '../../ui/MenuItem';\nimport Modal from '../../ui/Modal';\nimport MicrophoneButton from './MicrophoneButton';\nimport AnimatedIcon from '../../common/AnimatedIcon';\nimport Checkbox from '../../ui/Checkbox';\nimport GroupCallParticipantMenu from './GroupCallParticipantMenu';\nimport GroupCallParticipantList from './GroupCallParticipantList';\nimport GroupCallParticipantStreams from './GroupCallParticipantStreams';\n\nimport './GroupCall.scss';\n\nconst CAMERA_FLIP_PLAY_SEGMENT: [number, number] = [0, 10];\nconst PARTICIPANT_HEIGHT = 60;\n\nexport type OwnProps = {\n groupCallId: string;\n};\n\ntype StateProps = {\n isCallPanelVisible: boolean;\n connectionState: GroupCallConnectionState;\n title?: string;\n meParticipant?: TypeGroupCallParticipant;\n participantsCount?: number;\n isSpeakerEnabled?: boolean;\n isAdmin: boolean;\n participants: Record<string, TypeGroupCallParticipant>;\n};\n\nconst GroupCall: FC<OwnProps & StateProps> = ({\n groupCallId,\n isCallPanelVisible,\n connectionState,\n isSpeakerEnabled,\n title,\n meParticipant,\n isAdmin,\n participants,\n\n}) => {\n const {\n toggleGroupCallVideo,\n toggleGroupCallPresentation,\n leaveGroupCall,\n toggleGroupCallPanel,\n connectToActiveGroupCall,\n playGroupCallSound,\n } = getActions();\n\n const lang = useLang();\n // eslint-disable-next-line no-null/no-null\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [isLeaving, setIsLeaving] = useState(false);\n const [isFullscreen, openFullscreen, closeFullscreen] = useFlag();\n const [isSidebarOpen, openSidebar, closeSidebar] = useFlag(true);\n const hasVideoParticipants = participants && Object.values(participants).some((l) => l.video || l.presentation);\n const isLandscape = isFullscreen && !IS_SINGLE_COLUMN_LAYOUT && hasVideoParticipants;\n\n const [participantMenu, setParticipantMenu] = useState<{\n participant: TypeGroupCallParticipant;\n anchor: IAnchorPosition;\n } | undefined>();\n const [isParticipantMenuOpen, openParticipantMenu, closeParticipantMenu] = useFlag();\n\n const [isConfirmLeaveModalOpen, openConfirmLeaveModal, closeConfirmLeaveModal] = useFlag();\n const [isEndGroupCallModal, setIsEndGroupCallModal] = useState(false);\n const [shouldEndGroupCall, setShouldEndGroupCall] = useState(false);\n\n const hasVideo = meParticipant?.hasVideoStream;\n const hasPresentation = meParticipant?.hasPresentationStream;\n const isConnecting = connectionState !== 'connected';\n const canSelfUnmute = meParticipant?.canSelfUnmute;\n const shouldRaiseHand = !canSelfUnmute && meParticipant?.isMuted;\n\n const handleOpenParticipantMenu = useCallback((anchor: HTMLDivElement, participant: TypeGroupCallParticipant) => {\n const rect = anchor.getBoundingClientRect();\n const container = containerRef.current!;\n\n setParticipantMenu({\n anchor: { x: rect.left, y: rect.top - container.offsetTop + PARTICIPANT_HEIGHT },\n participant,\n });\n\n openParticipantMenu();\n }, [openParticipantMenu]);\n\n useEffect(() => {\n if (connectionState === 'connected') {\n playGroupCallSound({ sound: 'join' });\n } else if (connectionState === 'reconnecting') {\n playGroupCallSound({ sound: 'connecting' });\n }\n }, [connectionState, playGroupCallSound]);\n\n const handleCloseConfirmLeaveModal = useCallback(() => {\n closeConfirmLeaveModal();\n setIsEndGroupCallModal(false);\n }, [closeConfirmLeaveModal]);\n\n const MainButton: FC<{ onTrigger: () => void; isOpen?: boolean }> = useMemo(() => {\n return ({ onTrigger, isOpen }) => (\n <Button\n round\n size=\"smaller\"\n color=\"translucent\"\n className={isOpen ? 'active' : undefined}\n onClick={onTrigger}\n ariaLabel={lang('AccDescrMoreOptions')}\n >\n <i className=\"icon-more\" />\n </Button>\n );\n }, [lang]);\n\n const handleToggleFullscreen = useCallback(() => {\n if (!containerRef.current) return;\n\n if (isFullscreen) {\n document.exitFullscreen().then(closeFullscreen);\n } else {\n containerRef.current.requestFullscreen().then(openFullscreen);\n }\n }, [closeFullscreen, isFullscreen, openFullscreen]);\n\n const handleToggleSidebar = useCallback(() => {\n if (isSidebarOpen) {\n closeSidebar();\n } else {\n openSidebar();\n }\n }, [closeSidebar, isSidebarOpen, openSidebar]);\n\n const handleStreamsDoubleClick = useCallback(() => {\n if (!IS_REQUEST_FULLSCREEN_SUPPORTED) return;\n\n if (!isFullscreen) {\n closeSidebar();\n handleToggleFullscreen();\n } else {\n handleToggleFullscreen();\n }\n }, [closeSidebar, handleToggleFullscreen, isFullscreen]);\n\n const toggleFullscreen = useCallback(() => {\n if (isFullscreen) {\n closeFullscreen();\n } else {\n openFullscreen();\n }\n }, [closeFullscreen, isFullscreen, openFullscreen]);\n\n const handleClose = useCallback(() => {\n toggleGroupCallPanel();\n if (isFullscreen) {\n closeFullscreen();\n }\n }, [closeFullscreen, isFullscreen, toggleGroupCallPanel]);\n\n useEffect(() => {\n if (!IS_REQUEST_FULLSCREEN_SUPPORTED) return undefined;\n const container = containerRef.current;\n if (!container) return undefined;\n\n container.addEventListener('fullscreenchange', toggleFullscreen);\n\n return () => {\n container.removeEventListener('fullscreenchange', toggleFullscreen);\n };\n }, [toggleFullscreen]);\n\n const handleClickVideoOrSpeaker = () => {\n if (shouldRaiseHand) {\n toggleSpeaker();\n } else {\n toggleGroupCallVideo();\n }\n };\n\n useEffect(() => {\n connectToActiveGroupCall();\n }, [connectToActiveGroupCall, groupCallId]);\n\n const endGroupCall = useCallback(() => {\n setIsEndGroupCallModal(true);\n setShouldEndGroupCall(true);\n openConfirmLeaveModal();\n if (isFullscreen) {\n handleToggleFullscreen();\n }\n }, [handleToggleFullscreen, isFullscreen, openConfirmLeaveModal]);\n\n const handleLeaveGroupCall = useCallback(() => {\n if (isAdmin && !isConfirmLeaveModalOpen) {\n openConfirmLeaveModal();\n if (isFullscreen) {\n handleToggleFullscreen();\n }\n return;\n }\n playGroupCallSound({ sound: 'leave' });\n setIsLeaving(true);\n closeConfirmLeaveModal();\n }, [\n closeConfirmLeaveModal, handleToggleFullscreen, isAdmin, isConfirmLeaveModalOpen, isFullscreen,\n openConfirmLeaveModal, playGroupCallSound,\n ]);\n\n const handleCloseAnimationEnd = useCallback(() => {\n if (isLeaving) {\n leaveGroupCall({\n shouldDiscard: shouldEndGroupCall,\n });\n }\n }, [isLeaving, leaveGroupCall, shouldEndGroupCall]);\n\n return (\n <Modal\n isOpen={!isCallPanelVisible && !isLeaving}\n onClose={toggleGroupCallPanel}\n className={buildClassName(\n 'GroupCall',\n IS_SINGLE_COLUMN_LAYOUT && 'single-column',\n isLandscape && 'landscape',\n !isSidebarOpen && 'no-sidebar',\n )}\n dialogRef={containerRef}\n onCloseAnimationEnd={handleCloseAnimationEnd}\n >\n <div className=\"header\">\n <h3>{title || lang('VoipGroupVoiceChat')}</h3>\n {IS_REQUEST_FULLSCREEN_SUPPORTED && (\n <Button\n round\n size=\"smaller\"\n color=\"translucent\"\n onClick={handleToggleFullscreen}\n ariaLabel={lang(isFullscreen ? 'AccExitFullscreen' : 'AccSwitchToFullscreen')}\n >\n <i className={isFullscreen ? 'icon-smallscreen' : 'icon-fullscreen'} />\n </Button>\n )}\n {isLandscape && (\n <Button\n round\n size=\"smaller\"\n color=\"translucent\"\n onClick={handleToggleSidebar}\n >\n <i className=\"icon-sidebar\" />\n </Button>\n )}\n {((IS_SCREENSHARE_SUPPORTED && !shouldRaiseHand) || isAdmin) && (\n <DropdownMenu\n positionX=\"right\"\n trigger={MainButton}\n >\n {IS_SCREENSHARE_SUPPORTED && !shouldRaiseHand && (\n <MenuItem\n icon=\"share-screen-outlined\"\n onClick={toggleGroupCallPresentation}\n >\n {lang(hasPresentation ? 'VoipChatStopScreenCapture' : 'VoipChatStartScreenCapture')}\n </MenuItem>\n )}\n {isAdmin && (\n <MenuItem\n icon=\"phone-discard-outline\"\n onClick={endGroupCall}\n destructive\n >\n {lang('VoipGroupLeaveAlertEndChat')}\n </MenuItem>\n )}\n </DropdownMenu>\n )}\n <Button\n round\n size=\"smaller\"\n color=\"translucent\"\n onClick={handleClose}\n >\n <i className=\"icon-close\" />\n </Button>\n </div>\n\n <div className=\"scrollable custom-scroll\">\n <GroupCallParticipantStreams onDoubleClick={handleStreamsDoubleClick} />\n\n {(!isLandscape || isSidebarOpen)\n && <GroupCallParticipantList openParticipantMenu={handleOpenParticipantMenu} />}\n </div>\n\n <GroupCallParticipantMenu\n participant={participantMenu?.participant}\n anchor={participantMenu?.anchor}\n isDropdownOpen={isParticipantMenuOpen}\n closeDropdown={closeParticipantMenu}\n />\n\n <div className=\"buttons\">\n {isConnecting && <Loading />}\n\n <div className=\"button-wrapper\">\n <div className=\"video-buttons\">\n {hasVideo && (IS_ANDROID || IS_IOS) && (\n <button className=\"smaller-button\" onClick={switchCameraInput}>\n <AnimatedIcon\n tgsUrl={LOCAL_TGS_URLS.CameraFlip}\n playSegment={CAMERA_FLIP_PLAY_SEGMENT}\n size={24}\n />\n </button>\n )}\n <button\n className={buildClassName(\n 'small-button',\n shouldRaiseHand ? 'speaker' : 'camera',\n (hasVideo || (shouldRaiseHand && isSpeakerEnabled)) && 'active',\n )}\n onClick={handleClickVideoOrSpeaker}\n >\n <i className={shouldRaiseHand ? 'icon-speaker' : (hasVideo ? 'icon-video-stop' : 'icon-video')} />\n </button>\n </div>\n\n <div className=\"button-text\">\n {lang(shouldRaiseHand ? 'VoipSpeaker' : 'VoipCamera')}\n </div>\n </div>\n\n <MicrophoneButton />\n\n <div className=\"button-wrapper\">\n <button className=\"small-button leave\" onClick={handleLeaveGroupCall}>\n <i className=\"icon-phone-discard\" />\n </button>\n\n <div className=\"button-text\">\n {lang('VoipGroupLeave')}\n </div>\n </div>\n </div>\n\n <Modal\n isOpen={isConfirmLeaveModalOpen}\n onClose={handleCloseConfirmLeaveModal}\n className=\"error\"\n title={lang(isEndGroupCallModal ? 'VoipGroupEndAlertTitle' : 'VoipGroupLeaveAlertTitle')}\n >\n <p>{lang(isEndGroupCallModal ? 'VoipGroupEndAlertText' : 'VoipGroupLeaveAlertText')}</p>\n {!isEndGroupCallModal && (\n <Checkbox\n label={lang('VoipGroupEndChat')}\n checked={shouldEndGroupCall}\n onCheck={setShouldEndGroupCall}\n />\n )}\n <Button isText className=\"confirm-dialog-button\" onClick={handleLeaveGroupCall}>\n {lang(isEndGroupCallModal ? 'VoipGroupEnd' : 'VoipGroupLeave')}\n </Button>\n <Button isText className=\"confirm-dialog-button\" onClick={handleCloseConfirmLeaveModal}>\n {lang('Cancel')}\n </Button>\n </Modal>\n </Modal>\n );\n};\n\nexport default memo(withGlobal<OwnProps>(\n (global, { groupCallId }): StateProps => {\n const {\n connectionState, title, isSpeakerDisabled, participants, participantsCount,\n } = selectGroupCall(global, groupCallId)! || {};\n\n return {\n connectionState,\n title,\n isSpeakerEnabled: !isSpeakerDisabled,\n participantsCount,\n meParticipant: selectGroupCallParticipant(global, groupCallId, global.currentUserId!),\n isCallPanelVisible: Boolean(global.isCallPanelVisible),\n isAdmin: selectIsAdminInActiveGroupCall(global),\n participants,\n };\n },\n)(GroupCall));\n","import type { FC } from '../../lib/teact/teact';\nimport React, { memo, useEffect } from '../../lib/teact/teact';\nimport { getActions, withGlobal } from '../../global';\n\nimport type { ApiGroupCall, ApiUser } from '../../api/types';\n\nimport { selectActiveGroupCall, selectPhoneCallUser } from '../../global/selectors/calls';\nimport buildClassName from '../../util/buildClassName';\nimport useLang from '../../hooks/useLang';\n\nimport './ActiveCallHeader.scss';\n\ntype StateProps = {\n isCallPanelVisible?: boolean;\n groupCall?: ApiGroupCall;\n phoneCallUser?: ApiUser;\n};\n\nconst ActiveCallHeader: FC<StateProps> = ({\n groupCall,\n phoneCallUser,\n isCallPanelVisible,\n}) => {\n const { toggleGroupCallPanel } = getActions();\n\n const lang = useLang();\n\n useEffect(() => {\n document.body.classList.toggle('has-call-header', Boolean(isCallPanelVisible));\n\n return () => {\n document.body.classList.toggle('has-call-header', false);\n };\n }, [isCallPanelVisible]);\n\n if (!groupCall && !phoneCallUser) return undefined;\n\n return (\n <div\n className={buildClassName(\n 'ActiveCallHeader',\n isCallPanelVisible && 'open',\n )}\n onClick={toggleGroupCallPanel}\n >\n <span className=\"title\">{phoneCallUser?.firstName || groupCall?.title || lang('VoipGroupVoiceChat')}</span>\n </div>\n );\n};\n\nexport default memo(withGlobal(\n (global): StateProps => {\n return {\n groupCall: selectActiveGroupCall(global),\n isCallPanelVisible: global.isCallPanelVisible,\n phoneCallUser: selectPhoneCallUser(global),\n };\n },\n)(ActiveCallHeader));\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"eWbOLx__FZXR1sqKEJek\",\"button\":\"XKOJvKiD4DsRfJLLhnw2\",\"active\":\"qvAVe7qcyaEvRQQ1StFI\",\"button-text\":\"wnAniFJmQ7ocVtjRHNey\",\"buttonText\":\"wnAniFJmQ7ocVtjRHNey\"};","import type { FC } from '../../../lib/teact/teact';\nimport React, { memo } from '../../../lib/teact/teact';\n\nimport buildClassName from '../../../util/buildClassName';\n\nimport Button from '../../ui/Button';\n\nimport styles from './PhoneCallButton.module.scss';\n\ntype OwnProps = {\n onClick: VoidFunction;\n label: string;\n icon?: string;\n iconClassName?: string;\n customIcon?: React.ReactNode;\n className?: string;\n isDisabled?: boolean;\n isActive?: boolean;\n};\n\nconst PhoneCallButton: FC<OwnProps> = ({\n onClick,\n label,\n customIcon,\n icon,\n iconClassName,\n className,\n isDisabled,\n isActive,\n}) => {\n return (\n <div className={styles.root}>\n <Button\n round\n className={buildClassName(className, styles.button, isActive && styles.active)}\n onClick={onClick}\n disabled={isDisabled}\n >\n {customIcon || <i className={buildClassName(iconClassName, `icon-${icon}`)} />}\n </Button>\n <div className={styles.buttonText}>{label}</div>\n </div>\n );\n};\n\nexport default memo(PhoneCallButton);\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"AddQYAOZJv2f7U7qIfC3\",\"blurred\":\"anFtHj7Wvsv4M_2I2EFF\",\"single-column\":\"Oi7aFYBAbl4bYichdt52\",\"singleColumn\":\"Oi7aFYBAbl4bYichdt52\",\"header\":\"_iK8HccGNSmmo2wL7tMs\",\"close-button\":\"U66J7V5JKTCiktgwYpcC\",\"closeButton\":\"U66J7V5JKTCiktgwYpcC\",\"emojis-backdrop\":\"IekzemHkkO4bfrWHmxlv\",\"emojisBackdrop\":\"IekzemHkkO4bfrWHmxlv\",\"open\":\"hiNHKiq2owo1FvdT9a5g\",\"emojis\":\"BjOb1fDymE5GCiJ4g6YN\",\"emoji-tooltip\":\"Ci9ie86NFinrXvowDx23\",\"emojiTooltip\":\"Ci9ie86NFinrXvowDx23\",\"user-info\":\"eiM2IbZjKKAwrfNtXtAy\",\"userInfo\":\"eiM2IbZjKKAwrfNtXtAy\",\"buttons\":\"AtK8DjRToL8Uk7ZAY25p\",\"leave\":\"uI2mkCTKDcqYPu64xKOk\",\"accept\":\"PC2FeM0OEDDW0TVFGMkk\",\"accept-icon\":\"hBxp1Loj3vj4DtnculDA\",\"acceptIcon\":\"hBxp1Loj3vj4DtnculDA\",\"main-video\":\"lXMZESnc4CBKQbvV7qkL\",\"mainVideo\":\"lXMZESnc4CBKQbvV7qkL\",\"second-video\":\"cnQvI_xwAbO0EEwRcLsg\",\"secondVideo\":\"cnQvI_xwAbO0EEwRcLsg\",\"visible\":\"XaD79h6hSiEi0ypkn5OK\",\"fullscreen\":\"NlF9_Kb2le_3B712PZnO\"};","import type { FC } from '../../../lib/teact/teact';\nimport React, {\n memo, useCallback, useEffect, useMemo, useRef,\n} from '../../../lib/teact/teact';\nimport { getActions, withGlobal } from '../../../global';\nimport '../../../global/actions/calls';\n\nimport type { ApiPhoneCall, ApiUser } from '../../../api/types';\n\nimport {\n IS_ANDROID,\n IS_IOS,\n IS_REQUEST_FULLSCREEN_SUPPORTED,\n IS_SINGLE_COLUMN_LAYOUT,\n} from '../../../util/environment';\nimport { LOCAL_TGS_URLS } from '../../common/helpers/animatedAssets';\nimport buildClassName from '../../../util/buildClassName';\nimport { selectPhoneCallUser } from '../../../global/selectors/calls';\nimport useLang from '../../../hooks/useLang';\nimport renderText from '../../common/helpers/renderText';\nimport useFlag from '../../../hooks/useFlag';\nimport { formatMediaDuration } from '../../../util/dateFormat';\nimport {\n getStreams, IS_SCREENSHARE_SUPPORTED, switchCameraInputP2p, toggleStreamP2p,\n} from '../../../lib/secret-sauce';\nimport useInterval from '../../../hooks/useInterval';\nimport useForceUpdate from '../../../hooks/useForceUpdate';\n\nimport Modal from '../../ui/Modal';\nimport Avatar from '../../common/Avatar';\nimport Button from '../../ui/Button';\nimport PhoneCallButton from './PhoneCallButton';\nimport AnimatedIcon from '../../common/AnimatedIcon';\n\nimport styles from './PhoneCall.module.scss';\n\ntype StateProps = {\n user?: ApiUser;\n phoneCall?: ApiPhoneCall;\n isOutgoing: boolean;\n isCallPanelVisible?: boolean;\n};\n\nconst PhoneCall: FC<StateProps> = ({\n user,\n isOutgoing,\n phoneCall,\n isCallPanelVisible,\n}) => {\n const lang = useLang();\n const {\n hangUp, acceptCall, playGroupCallSound, toggleGroupCallPanel, connectToActivePhoneCall,\n } = getActions();\n // eslint-disable-next-line no-null/no-null\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [isFullscreen, openFullscreen, closeFullscreen] = useFlag();\n\n const toggleFullscreen = useCallback(() => {\n if (isFullscreen) {\n closeFullscreen();\n } else {\n openFullscreen();\n }\n }, [closeFullscreen, isFullscreen, openFullscreen]);\n\n const handleToggleFullscreen = useCallback(() => {\n if (!containerRef.current) return;\n\n if (isFullscreen) {\n document.exitFullscreen().then(closeFullscreen);\n } else {\n containerRef.current.requestFullscreen().then(openFullscreen);\n }\n }, [closeFullscreen, isFullscreen, openFullscreen]);\n\n useEffect(() => {\n if (!IS_REQUEST_FULLSCREEN_SUPPORTED) return undefined;\n const container = containerRef.current;\n if (!container) return undefined;\n\n container.addEventListener('fullscreenchange', toggleFullscreen);\n\n return () => {\n container.removeEventListener('fullscreenchange', toggleFullscreen);\n };\n }, [toggleFullscreen]);\n\n const handleClose = useCallback(() => {\n toggleGroupCallPanel();\n if (isFullscreen) {\n closeFullscreen();\n }\n }, [closeFullscreen, isFullscreen, toggleGroupCallPanel]);\n\n const isDiscarded = phoneCall?.state === 'discarded';\n const isBusy = phoneCall?.reason === 'busy';\n\n const isIncomingRequested = phoneCall?.state === 'requested' && !isOutgoing;\n const isOutgoingRequested = (phoneCall?.state === 'requested' || phoneCall?.state === 'waiting') && isOutgoing;\n const isActive = phoneCall?.state === 'active';\n const isConnected = phoneCall?.isConnected;\n\n const [isHangingUp, startHangingUp, stopHangingUp] = useFlag();\n const handleHangUp = useCallback(() => {\n startHangingUp();\n hangUp();\n }, [hangUp, startHangingUp]);\n\n useEffect(() => {\n if (isHangingUp) {\n playGroupCallSound({ sound: 'end' });\n } else if (isIncomingRequested) {\n playGroupCallSound({ sound: 'incoming' });\n } else if (isBusy) {\n playGroupCallSound({ sound: 'busy' });\n } else if (isDiscarded) {\n playGroupCallSound({ sound: 'end' });\n } else if (isOutgoingRequested) {\n playGroupCallSound({ sound: 'ringing' });\n } else if (isConnected) {\n playGroupCallSound({ sound: 'connect' });\n }\n }, [isBusy, isDiscarded, isIncomingRequested, isOutgoingRequested, isConnected, playGroupCallSound, isHangingUp]);\n\n useEffect(() => {\n if (phoneCall?.id) {\n stopHangingUp();\n } else {\n connectToActivePhoneCall();\n }\n }, [connectToActivePhoneCall, phoneCall?.id, stopHangingUp]);\n\n const forceUpdate = useForceUpdate();\n\n useInterval(() => {\n forceUpdate();\n }, isConnected ? 1000 : undefined);\n\n const callStatus = useMemo(() => {\n const state = phoneCall?.state;\n if (isHangingUp) {\n return lang('lng_call_status_hanging');\n }\n if (isBusy) return 'busy';\n if (state === 'requesting') {\n return lang('lng_call_status_requesting');\n } else if (state === 'requested') {\n return isOutgoing ? lang('lng_call_status_ringing') : lang('lng_call_status_incoming');\n } else if (state === 'waiting') {\n return lang('lng_call_status_waiting');\n } else if (state === 'active' && isConnected) {\n return undefined;\n } else {\n return lang('lng_call_status_exchanging');\n }\n }, [isBusy, isConnected, isHangingUp, isOutgoing, lang, phoneCall?.state]);\n\n const hasVideo = phoneCall?.videoState === 'active';\n const hasPresentation = phoneCall?.screencastState === 'active';\n\n const streams = getStreams();\n const hasOwnAudio = streams?.ownAudio?.getTracks()[0].enabled;\n const hasOwnPresentation = streams?.ownPresentation?.getTracks()[0].enabled;\n const hasOwnVideo = streams?.ownVideo?.getTracks()[0].enabled;\n\n const [isHidingPresentation, startHidingPresentation, stopHidingPresentation] = useFlag();\n const [isHidingVideo, startHidingVideo, stopHidingVideo] = useFlag();\n\n const handleTogglePresentation = useCallback(() => {\n if (hasOwnPresentation) {\n startHidingPresentation();\n }\n if (hasOwnVideo) {\n startHidingVideo();\n }\n setTimeout(async () => {\n await toggleStreamP2p('presentation');\n stopHidingPresentation();\n stopHidingVideo();\n }, 250);\n }, [\n hasOwnPresentation, hasOwnVideo, startHidingPresentation, startHidingVideo, stopHidingPresentation, stopHidingVideo,\n ]);\n\n const handleToggleVideo = useCallback(() => {\n if (hasOwnVideo) {\n startHidingVideo();\n }\n if (hasOwnPresentation) {\n startHidingPresentation();\n }\n setTimeout(async () => {\n await toggleStreamP2p('video');\n stopHidingPresentation();\n stopHidingVideo();\n }, 250);\n }, [\n hasOwnPresentation, hasOwnVideo, startHidingPresentation, startHidingVideo, stopHidingPresentation, stopHidingVideo,\n ]);\n\n const handleToggleAudio = useCallback(() => {\n void toggleStreamP2p('audio');\n }, []);\n\n const [isEmojiOpen, openEmoji, closeEmoji] = useFlag();\n\n const [isFlipping, startFlipping, stopFlipping] = useFlag();\n\n const handleFlipCamera = useCallback(() => {\n startFlipping();\n switchCameraInputP2p();\n setTimeout(stopFlipping, 250);\n }, [startFlipping, stopFlipping]);\n\n const timeElapsed = phoneCall?.startDate && (Number(new Date()) / 1000 - phoneCall.startDate);\n\n useEffect(() => {\n if (phoneCall?.state === 'discarded') {\n setTimeout(hangUp, 250);\n }\n }, [hangUp, phoneCall?.reason, phoneCall?.state]);\n\n return (\n <Modal\n isOpen={phoneCall && phoneCall?.state !== 'discarded' && !isCallPanelVisible}\n onClose={handleClose}\n className={buildClassName(\n styles.root,\n IS_SINGLE_COLUMN_LAYOUT && styles.singleColumn,\n )}\n dialogRef={containerRef}\n >\n <Avatar\n user={user}\n size=\"jumbo\"\n className={hasVideo || hasPresentation ? styles.blurred : ''}\n noLoop={phoneCall?.state !== 'requesting'}\n />\n {phoneCall?.screencastState === 'active' && streams?.presentation\n && <video className={styles.mainVideo} muted autoPlay playsInline srcObject={streams.presentation} />}\n {phoneCall?.videoState === 'active' && streams?.video\n && <video className={styles.mainVideo} muted autoPlay playsInline srcObject={streams.video} />}\n <video\n className={buildClassName(\n styles.secondVideo,\n !isHidingPresentation && hasOwnPresentation && styles.visible,\n isFullscreen && styles.fullscreen,\n )}\n muted\n autoPlay\n playsInline\n srcObject={streams?.ownPresentation}\n />\n <video\n className={buildClassName(\n styles.secondVideo,\n !isHidingVideo && hasOwnVideo && styles.visible,\n isFullscreen && styles.fullscreen,\n )}\n muted\n autoPlay\n playsInline\n srcObject={streams?.ownVideo}\n />\n <div className={styles.header}>\n {IS_REQUEST_FULLSCREEN_SUPPORTED && (\n <Button\n round\n size=\"smaller\"\n color=\"translucent\"\n onClick={handleToggleFullscreen}\n ariaLabel={lang(isFullscreen ? 'AccExitFullscreen' : 'AccSwitchToFullscreen')}\n >\n <i className={isFullscreen ? 'icon-smallscreen' : 'icon-fullscreen'} />\n </Button>\n )}\n\n <Button\n round\n size=\"smaller\"\n color=\"translucent\"\n onClick={handleClose}\n className={styles.closeButton}\n >\n <i className=\"icon-close\" />\n </Button>\n </div>\n <div\n className={buildClassName(styles.emojisBackdrop, isEmojiOpen && styles.open)}\n onClick={!isEmojiOpen ? openEmoji : closeEmoji}\n >\n <div className={buildClassName(styles.emojis, isEmojiOpen && styles.open)}>\n {phoneCall?.isConnected && phoneCall?.emojis && renderText(phoneCall.emojis, ['emoji'])}\n </div>\n <div className={buildClassName(styles.emojiTooltip, isEmojiOpen && styles.open)}>\n {lang('CallEmojiKeyTooltip', user?.firstName).replace('%%', '%')}\n </div>\n </div>\n <div className={styles.userInfo}>\n <h1>{user?.firstName}</h1>\n <span className={styles.status}>{callStatus || formatMediaDuration(timeElapsed || 0)}</span>\n </div>\n <div className={styles.buttons}>\n <PhoneCallButton\n onClick={handleToggleAudio}\n icon=\"microphone\"\n isDisabled={!isActive}\n isActive={hasOwnAudio}\n label={lang(hasOwnAudio ? 'lng_call_mute_audio' : 'lng_call_unmute_audio')}\n />\n <PhoneCallButton\n onClick={handleToggleVideo}\n icon=\"video\"\n isDisabled={!isActive}\n isActive={hasOwnVideo}\n label={lang(hasOwnVideo ? 'lng_call_stop_video' : 'lng_call_start_video')}\n />\n {hasOwnVideo && (IS_ANDROID || IS_IOS) && (\n <PhoneCallButton\n onClick={handleFlipCamera}\n customIcon={(\n <AnimatedIcon\n tgsUrl={LOCAL_TGS_URLS.CameraFlip}\n playSegment={!isFlipping ? [0, 1] : [0, 10]}\n size={32}\n />\n )}\n isDisabled={!isActive}\n label={lang('VoipFlip')}\n />\n )}\n {IS_SCREENSHARE_SUPPORTED && (\n <PhoneCallButton\n onClick={handleTogglePresentation}\n icon=\"share-screen\"\n isDisabled={!isActive}\n isActive={hasOwnPresentation}\n label={lang('lng_call_screencast')}\n />\n )}\n {isIncomingRequested && (\n <PhoneCallButton\n onClick={acceptCall}\n icon=\"phone-discard\"\n isDisabled={isDiscarded}\n label={lang('lng_call_accept')}\n className={styles.accept}\n iconClassName={styles.acceptIcon}\n />\n )}\n <PhoneCallButton\n onClick={handleHangUp}\n icon=\"phone-discard\"\n isDisabled={isDiscarded}\n label={lang(isIncomingRequested ? 'lng_call_decline' : 'lng_call_end_call')}\n className={styles.leave}\n />\n </div>\n </Modal>\n );\n};\n\nexport default memo(withGlobal(\n (global): StateProps => {\n const { phoneCall, currentUserId } = global;\n\n return {\n isCallPanelVisible: Boolean(global.isCallPanelVisible),\n user: selectPhoneCallUser(global),\n isOutgoing: phoneCall?.adminId === currentUserId,\n phoneCall,\n };\n },\n)(PhoneCall));\n","// extracted by mini-css-extract-plugin\nexport default {\"stars\":\"wLqZtZzJMOmPkr1Z7kT5\",\"star\":\"OLQPS_OeztNYIaL15tdz\",\"isFilled\":\"o_nOyYqj5URif5S86StK\",\"comment\":\"ZToDNX6q1Yhf4aDPyuJF\",\"visible\":\"HdCq8jVctaJoit7bdgZd\"};","import React, {\n memo, useRef, useState, useCallback,\n} from '../../../lib/teact/teact';\nimport { getActions } from '../../../global';\n\nimport type { FC } from '../../../lib/teact/teact';\n\nimport useLang from '../../../hooks/useLang';\nimport buildClassName from '../../../util/buildClassName';\n\nimport Modal from '../../ui/Modal';\nimport Button from '../../ui/Button';\nimport InputText from '../../ui/InputText';\n\nimport styles from './RatePhoneCallModal.module.scss';\n\nexport type OwnProps = {\n isOpen?: boolean;\n};\n\nconst RatePhoneCallModal: FC<OwnProps> = ({\n isOpen,\n}) => {\n const { closeCallRatingModal, setCallRating } = getActions();\n\n // eslint-disable-next-line no-null/no-null\n const inputRef = useRef<HTMLInputElement>(null);\n\n const lang = useLang();\n const [rating, setRating] = useState<number | undefined>();\n\n function handleSend() {\n if (!rating) {\n closeCallRatingModal();\n return;\n }\n setCallRating({\n rating: rating + 1,\n comment: inputRef.current?.value || '',\n });\n }\n\n function handleClickStar(index: number) {\n return () => setRating(rating === index ? undefined : index);\n }\n\n const handleCancelClick = useCallback(() => {\n closeCallRatingModal();\n }, [closeCallRatingModal]);\n\n return (\n <Modal title={lang('lng_call_rate_label')} className=\"narrow\" onClose={closeCallRatingModal} isOpen={isOpen}>\n <div className={styles.stars}>\n {new Array(5).fill(undefined).map((_, i) => {\n const isFilled = rating !== undefined && rating >= i;\n return (\n <i\n className={buildClassName(\n isFilled ? 'icon-favorite-filled' : 'icon-favorite',\n isFilled && styles.isFilled,\n styles.star,\n )}\n onClick={handleClickStar(i)}\n />\n );\n })}\n </div>\n <InputText\n ref={inputRef}\n placeholder={lang('lng_call_rate_comment')}\n className={buildClassName(styles.comment, rating !== 4 && rating !== undefined && styles.visible)}\n />\n\n {/* eslint-disable-next-line react/jsx-no-bind */}\n <Button className=\"confirm-dialog-button\" isText onClick={handleSend}>\n {lang('Send')}\n </Button>\n <Button className=\"confirm-dialog-button\" isText onClick={handleCancelClick}>{lang('Cancel')}</Button>\n </Modal>\n );\n};\n\nexport default memo(RatePhoneCallModal);\n","/*! For license information please see index.js.LICENSE.txt */\n(()=>{\"use strict\";var e={\"./src/blacksilence.ts\":(e,t,a)=>{a.r(t),a.d(t,{silence:()=>n,black:()=>s});const n=e=>{const t=e.createOscillator(),a=t.connect(e.createMediaStreamDestination());return t.start(),new MediaStream([Object.assign(a.stream.getAudioTracks()[0],{enabled:!1})])},s=({width:e=640,height:t=480}={})=>{const a=Object.assign(document.createElement(\"canvas\"),{width:e,height:t}),n=a.getContext(\"2d\");if(!n)throw Error(\"Cannot create canvas ctx\");n.fillRect(0,0,e,t);const s=a.captureStream();return new MediaStream([Object.assign(s.getVideoTracks()[0],{enabled:!1})])}},\"./src/buildSdp.ts\":(e,t,a)=>{a.r(t),a.d(t,{default:()=>s});var n=a(\"./src/utils.ts\");const s=(e,t=!1,a=!1,s=!1)=>{const i=[],r=e=>{i.push(e)},{sessionId:o,ssrcs:c,audioExtensions:d,videoExtensions:p,audioPayloadTypes:u,videoPayloadTypes:l,transport:{ufrag:m,pwd:f,fingerprints:g,candidates:v}}=e;r(\"v=0\"),r(`o=- ${o} 2 IN IP4 0.0.0.0`),r(\"s=-\"),r(\"t=0 0\"),r(\"a=ice-options:trickle\"),r(\"a=msid-semantic:WMS *\"),r(`a=group:BUNDLE ${c.map((e=>e.endpoint)).join(\" \")}${a?\"\":\" \"+(s?\"3\":\"2\")}`),s||r(\"a=ice-lite\");const S=e=>{if(e.sdpString)r(`a=${e.sdpString}`);else{let t=\"\";t+=\"a=candidate:\",t+=`${e.foundation} ${e.component} ${e.protocol} ${e.priority} ${e.ip} ${e.port} typ ${e.type}`,\"rel-addr\"in e&&(t+=` raddr ${e[\"rel-addr\"]} rport ${e[\"rel-port\"]}`),t+=` generation ${e.generation}`,r(t)}},y=()=>{r(`a=ice-ufrag:${m}`),r(`a=ice-pwd:${f}`),g.forEach((e=>{r(`a=fingerprint:${e.hash} ${e.fingerprint}`),r(`a=setup:${s?e.setup:\"passive\"}`)})),v.forEach(S)},h=e=>{const{channels:t,id:a,name:n,clockrate:s,parameters:i}=e;var o=t?`/${t}`:\"\";r(`a=rtpmap:${a} ${n}/${s}${o}`),i&&(o=Object.keys(i).map((e=>`${e}=${i[e]};`)).join(\" \"),r(`a=fmtp:${a} ${o}`)),e[\"rtcp-fbs\"]?.forEach((e=>{r(`a=rtcp-fb:${a} ${e.type}${e.subtype?` ${e.subtype}`:\"\"}`)}))};return e=e=>{const a=e.isVideo?l:u;var i=e.isVideo?\"video\":\"audio\";if(r(`m=${i} ${e.isMain?1:0} RTP/SAVPF ${a.map((e=>e.id)).join(\" \")}`),r(\"c=IN IP4 0.0.0.0\"),r(\"b=AS:1300\"),r(`a=mid:${e.endpoint}`),r(\"a=rtcp-mux\"),a.forEach(h),r(\"a=rtcp:1 IN IP4 0.0.0.0\"),e.isVideo&&r(\"a=rtcp-rsize\"),(e.isVideo?p:d).forEach((({id:e,uri:t})=>{r(`a=extmap:${e} ${t}`)})),e.isRemoved)r(\"a=inactive\");else{if(y(),s)r(\"a=sendrecv\"),r(\"a=bundle-only\");else{if(t)return void r(\"a=recvonly\");e.isMain?r(\"a=sendrecv\"):(r(\"a=sendonly\"),r(\"a=bundle-only\"))}e.sourceGroups.forEach((t=>{r(`a=ssrc-group:${t.semantics} ${t.sources.map(n.fromTelegramSource).join(\" \")}`),t.sources.forEach((t=>{t=(0,n.fromTelegramSource)(t),r(`a=ssrc:${t} cname:${e.endpoint}`),r(`a=ssrc:${t} msid:${e.endpoint} ${e.endpoint}`),r(`a=ssrc:${t} mslabel:${e.endpoint}`),r(`a=ssrc:${t} label:${e.endpoint}`)}))}))}},s?c.filter(e):c.filter((e=>\"0\"===e.endpoint||\"1\"===e.endpoint)).map(e),a||(r(\"m=application 1 UDP/DTLS/SCTP webrtc-datachannel\"),r(\"c=IN IP4 0.0.0.0\"),y(),r(\"a=ice-options:trickle\"),r(\"a=mid:\"+(s?\"3\":a?\"1\":\"2\")),r(\"a=sctp-port:5000\"),r(\"a=max-message-size:262144\")),s||c.filter((e=>\"0\"!==e.endpoint&&\"1\"!==e.endpoint)).map(e),`${i.join(\"\\n\")}\\n`}},\"./src/p2p.ts\":(e,t,a)=>{a.r(t),a.d(t,{getStreams:()=>function(){return o?.streams},switchCameraInputP2p:()=>async function(){if(o&&o.facingMode){const e=o.streams.ownVideo;if(e){const t=e.getTracks()[0];if(t){const e=o.connection.getSenders().find((e=>t.id===e.track?.id));if(e){o.facingMode=\"environment\"===o.facingMode?\"user\":\"environment\";try{const t=await d(\"video\",o.facingMode);await e.replaceTrack(t.getTracks()[0]),o.streams.ownVideo=t,c()}catch(e){}}}}}},toggleStreamP2p:()=>p,joinPhoneCall:()=>async function(e,t,a,i,r){const d=new RTCPeerConnection({iceServers:e.map((e=>({urls:[e.isTurn&&`turn:${e.ip}:${e.port}`,e.isStun&&`stun:${e.ip}:${e.port}`].filter(Boolean),username:e.username,credentialType:\"password\",credential:e.password}))),iceCandidatePoolSize:2}),u=(0,n.silence)(new AudioContext),l=(0,n.black)({width:640,height:480}),g=(0,n.black)({width:640,height:480});d.addTrack(u.getTracks()[0],u),d.addTrack(l.getTracks()[0],l),d.addTrack(g.getTracks()[0],g),d.onicecandidate=e=>{e.candidate&&t({\"@type\":\"Candidates\",candidates:[{sdpString:e.candidate.candidate}]})},d.onconnectionstatechange=()=>{r({\"@type\":\"updatePhoneCallConnectionState\",connectionState:d.connectionState})},d.ontrack=e=>{var t;o&&(t=e.streams[0],\"audio\"===e.track.kind?(o.audio.srcObject=t,o.audio.play().catch(),o.streams.audio=t):\"1\"===e.transceiver.mid?o.streams.video=t:o.streams.presentation=t,c())};const v=d.createDataChannel(\"data\",{id:0,negotiated:!0});v.onmessage=e=>{f(JSON.parse(e.data))},e=new Audio,o={audio:e,connection:d,emitSignalingData:t,isOutgoing:a,candidates:[],onUpdate:r,streams:{ownVideo:l,ownAudio:u,ownPresentation:g},mediaState:{isBatteryLow:!1,screencastState:\"inactive\",videoState:\"inactive\",videoRotation:0,isMuted:!0},blackVideo:l,blackPresentation:g,silence:u,dataChannel:v};try{i&&p(\"video\",!0),p(\"audio\",!0)}catch(e){}a&&(a=await d.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0}),await d.setLocalDescription(a),m((0,s.default)(a,!0)))},stopPhoneCall:()=>function(){o&&(o.streams.ownVideo?.getTracks().forEach((e=>e.stop())),o.streams.ownPresentation?.getTracks().forEach((e=>e.stop())),o.streams.ownAudio?.getTracks().forEach((e=>e.stop())),o.dataChannel.close(),o.connection.close(),o=void 0)},processSignalingMessage:()=>f});var n=a(\"./src/blacksilence.ts\"),s=a(\"./src/parseSdp.ts\"),i=a(\"./src/utils.ts\"),r=a(\"./src/buildSdp.ts\");let o;function c(){o?.onUpdate({...o.mediaState,\"@type\":\"updatePhoneCallMediaState\"})}function d(e,t=\"user\"){return\"presentation\"===e?navigator.mediaDevices.getDisplayMedia({audio:!1,video:!0}):navigator.mediaDevices.getUserMedia({audio:\"audio\"===e&&{...i.IS_ECHO_CANCELLATION_SUPPORTED&&{echoCancellation:!0},...i.IS_NOISE_SUPPRESSION_SUPPORTED&&{noiseSuppression:!0}},video:\"video\"===e&&{facingMode:t}})}async function p(e,t){if(o){const a=\"audio\"===e?o.streams.ownAudio:\"video\"===e?o.streams.ownVideo:o.streams.ownPresentation;if(a){const n=a.getTracks()[0];if(n){const a=o.connection.getSenders().find((e=>n.id===e.track?.id));if(a){t=void 0===t?!n.enabled:t;try{if(t&&!n.enabled){const t=await d(e);t.getTracks()[0].onended=()=>{p(e,!1)},await a.replaceTrack(t.getTracks()[0]),\"audio\"===e?o.streams.ownAudio=t:\"video\"===e?(o.streams.ownVideo=t,o.facingMode=\"user\"):o.streams.ownPresentation=t,\"video\"!==e&&\"presentation\"!==e||p(\"video\"===e?\"presentation\":\"video\",!1)}else if(!t&&n.enabled){n.stop();const t=\"audio\"===e?o.silence:\"video\"===e?o.blackVideo:o.blackPresentation;if(!t)return;await a.replaceTrack(t.getTracks()[0]),\"audio\"===e?o.streams.ownAudio=t:\"video\"===e?o.streams.ownVideo=t:o.streams.ownPresentation=t}c(),u()}catch(e){}}}}}}function u(){if(o){const{emitSignalingData:e,streams:t}=o;e({\"@type\":\"MediaState\",videoRotation:0,isMuted:!t.ownAudio?.getTracks()[0].enabled,isBatteryLow:!0,videoState:t.ownVideo?.getTracks()[0].enabled?\"active\":\"inactive\",screencastState:t.ownPresentation?.getTracks()[0].enabled?\"active\":\"inactive\"})}}function l(e){if(!o||o.isOutgoing)return e;const t=e.payloadTypes;var a=t.findIndex((e=>\"VP8\"===e.name));const n=t[a];var s=t.findIndex((e=>Number(e.parameters?.apt)===n.id));return e.payloadTypes=[t[a],t[s]],e}function m(e){if(o){const t=o.emitSignalingData;e.ssrc&&e[\"ssrc-groups\"]&&e[\"ssrc-groups\"][0]&&e[\"ssrc-groups\"][1]&&t({\"@type\":\"InitialSetup\",fingerprints:e.fingerprints,ufrag:e.ufrag,pwd:e.pwd,audio:{ssrc:(0,i.fromTelegramSource)(e.ssrc).toString(),ssrcGroups:[],payloadTypes:e.audioPayloadTypes,rtpExtensions:e.audioExtmap},video:l({ssrc:(0,i.fromTelegramSource)(e[\"ssrc-groups\"][0].sources[0]).toString(),ssrcGroups:[{semantics:e[\"ssrc-groups\"][0].semantics,ssrcs:e[\"ssrc-groups\"][0].sources.map(i.fromTelegramSource)}],payloadTypes:e.videoPayloadTypes,rtpExtensions:e.videoExtmap}),screencast:l({ssrc:(0,i.fromTelegramSource)(e[\"ssrc-groups\"][1].sources[0]).toString(),ssrcGroups:[{semantics:e[\"ssrc-groups\"][1].semantics,ssrcs:e[\"ssrc-groups\"][1].sources.map(i.fromTelegramSource)}],payloadTypes:e.screencastPayloadTypes,rtpExtensions:e.screencastExtmap})})}}async function f(e){if(o&&o.connection)switch(e[\"@type\"]){case\"MediaState\":o.mediaState=e,c(),u();break;case\"Candidates\":var{candidates:t,gotInitialSetup:a}=o;if(!t)return;e.candidates.forEach((e=>{o.candidates.push(e.sdpString)})),a&&await Promise.all(o.candidates.map((e=>o.connection.addIceCandidate({candidate:e,sdpMLineIndex:0}))));break;case\"InitialSetup\":{const{connection:t,isOutgoing:n}=o;if(!t)return;if(a={transport:{candidates:[],ufrag:e.ufrag,pwd:e.pwd,fingerprints:e.fingerprints,\"rtcp-mux\":!1,xmlns:\"\"},sessionId:Date.now(),ssrcs:[e.audio&&{isVideo:!1,isMain:!1,userId:\"123\",endpoint:\"0\",sourceGroups:[{semantics:\"FID\",sources:[e.audio.ssrc]}]},e.video&&{isVideo:!0,isPresentation:!1,isMain:!1,userId:\"123\",endpoint:\"1\",sourceGroups:e.video.ssrcGroups.map((e=>({semantics:e.semantics,sources:e.ssrcs})))},e.screencast&&{isVideo:!0,isPresentation:!0,isMain:!1,userId:\"123\",endpoint:\"2\",sourceGroups:e.screencast.ssrcGroups.map((e=>({semantics:e.semantics,sources:e.ssrcs})))}],audioPayloadTypes:e.audio.payloadTypes?.map(i.p2pPayloadTypeToConference)||[],audioExtensions:e.audio.rtpExtensions,videoPayloadTypes:l(e.video).payloadTypes?.map(i.p2pPayloadTypeToConference)||[],videoExtensions:e.video.rtpExtensions},await t.setRemoteDescription({sdp:(0,r.default)(a,n,void 0,!0),type:n?\"answer\":\"offer\"}),o.conference=a,!n){if(a=await t.createAnswer(),!a)return;await t.setLocalDescription(a),m((0,s.default)(a,!0))}o.gotInitialSetup=!0,await Promise.all(o.candidates.map((e=>t.addIceCandidate({candidate:e,sdpMLineIndex:0}))));break}}}},\"./src/p2pMessage.ts\":(e,t,a)=>{a.r(t)},\"./src/parseSdp.ts\":(e,t,a)=>{a.r(t),a.d(t,{default:()=>s});var n=a(\"./src/utils.ts\");const s=(e,t=!1)=>{if(!e||!e.sdp)throw Error(\"Failed parsing SDP: session description is null\");const a=e.sdp.split(\"\\r\\nm=\").map(((e,t)=>0===t?e:`m=${e}`)).reduce(((e,t)=>{var a=t.match(/^m=(.+?)\\s/)?.[1]||\"header\";return e[e.hasOwnProperty(a)&&\"video\"===a?\"screencast\":a]=t.split(\"\\r\\n\").filter(Boolean),e}),{});var s=(e,t)=>t?a[t]?.find((t=>t.startsWith(e)))?.substr(e.length):Object.values(a).map((t=>t.find((t=>t.startsWith(e)))?.substr(e.length))).filter(Boolean)[0],i=e=>a[e].filter((e=>e.startsWith(\"a=extmap\"))).map((e=>{var[,t,e]=e.match(/extmap:(\\d+)(?:\\/.+)?\\s(.+)/);return{id:Number(t),uri:e}})),r=e=>{const t=a[e].filter((e=>e.startsWith(\"a=rtpmap\"))).map((e=>{const[,t,a]=e.match(/:(\\d+)\\s(.+)/)||[];var[n,s,e]=a.split(\"/\");return{id:Number(t),name:n,clockrate:Number(s),...e&&{channels:Number(e)}}})),n=a[e].filter((e=>e.startsWith(\"a=rtcp-fb\"))).map((e=>{const[,t,a]=e.match(/:(\\d+)\\s(.+)/)||[];var[n,e]=a.split(\" \");return{id:Number(t),type:n,subtype:e||\"\"}})),s=a[e].filter((e=>e.startsWith(\"a=fmtp\"))).map((e=>{const[,t,a]=e.match(/:(\\d+)\\s(.+)/)||[];if(e=a.split(\";\").reduce(((e,t)=>{var[a,t]=t.split(\"=\");return e[a]=t,e}),{}),!Object.values(e).some((e=>!e)))return{id:Number(t),data:e}})).filter(Boolean);return t.map((e=>{var t=s.filter((t=>t.id===e.id)).map((e=>e.data)).reduce(((e,t)=>Object.assign(e,t)),{}),a=n.filter((t=>t.id===e.id)).map((e=>({type:e.type,subtype:e.subtype})));return{...e,...0<Object.keys(t).length&&{parameters:t},...0<a.length&&{feedbackTypes:a}}}))};const o=s(\"a=ssrc:\",\"audio\");var c=o&&Number(o.split(\" \")[0]);const d=s(\"a=ssrc-group:\",\"video\")?.split(\" \")||void 0,p=s(\"a=ssrc-group:\",\"screencast\")?.split(\" \")||void 0;if(!d)throw Error(\"Failed parsing SDP: no video ssrc\");var[u,l]=s(\"a=fingerprint:\")?.split(\" \")||[],m=s(\"a=setup:\");if(!u||!l)throw Error(\"Failed parsing SDP: no fingerprint\");if(console.log(a),e=s(\"a=ice-ufrag:\"),s=s(\"a=ice-pwd:\"),!e||!s)throw Error(\"Failed parsing SDP: no ICE ufrag or pwd\");return{fingerprints:[{fingerprint:l,hash:u,setup:t?m:\"active\"}],pwd:s,ufrag:e,...c&&{ssrc:(0,n.toTelegramSource)(c)},...d&&{\"ssrc-groups\":[{semantics:d[0],sources:d.slice(1,d.length).map(Number).map(n.toTelegramSource)},t&&p&&{semantics:p[0],sources:p.slice(1,p.length).map(Number).map(n.toTelegramSource)}].filter(Boolean)},...t&&{audioExtmap:i(\"audio\"),videoExtmap:i(\"video\"),screencastExtmap:i(\"screencast\"),audioPayloadTypes:r(\"audio\"),videoPayloadTypes:r(\"video\"),screencastPayloadTypes:r(\"screencast\")}}}},\"./src/secretsauce.ts\":(e,t,a)=>{a.r(t),a.d(t,{getDevices:()=>async function(e,t=!0){return(await navigator.mediaDevices.enumerateDevices()).filter((a=>a.kind===`${e}${t?\"input\":\"output\"}`))},toggleSpeaker:()=>function(){o&&(o.isSpeakerDisabled=!o.isSpeakerDisabled,o?.onUpdate?.({\"@type\":\"updateGroupCallConnectionState\",connectionState:\"connected\",isSpeakerDisabled:o.isSpeakerDisabled}),o.participantFunctions&&Object.values(o.participantFunctions).forEach((e=>{e.toggleMute?.(!!o?.isSpeakerDisabled)})))},toggleNoiseSuppression:()=>function(){if(o&&o.myId&&o.streams){const a=o.streams[o.myId].audio;if(a){const n=a.getTracks()[0];var e,t;n&&(({echoCancellation:e,noiseSuppression:t}=n.getConstraints()),n.applyConstraints({echoCancellation:!e,noiseSuppression:!t}))}}},getUserStreams:()=>d,setVolume:()=>function(e,t){const a=o?.participantFunctions?.[e];a&&a.setVolume?.(t)},isStreamEnabled:()=>p,switchCameraInput:()=>async function(){if(o?.myId&&o.connection&&o.streams&&o.facingMode){const e=d(o.myId)?.video;if(e){const t=e.getTracks()[0];if(t){const e=o.connection.getSenders().find((e=>t.id===e.track?.id));if(e){o.facingMode=\"environment\"===o.facingMode?\"user\":\"environment\";try{const t=await l(\"video\",o.facingMode);await e.replaceTrack(t.getTracks()[0]),o.streams[o.myId].video=t}catch(e){}}}}}},toggleStream:()=>m,leaveGroupCall:()=>g,handleUpdateGroupCallParticipants:()=>async function(e){if(o){const{participants:n,conference:i,connection:r,myId:c}=o;if(n&&i&&r&&i.ssrcs&&i.transport&&c)if(e.find((e=>e.isSelf&&e.source!==o?.conference?.ssrcs?.find((e=>e.isMain&&!e.isVideo))?.sourceGroups[0].sources[0])))g();else{const n=[];if(e.forEach((e=>{if(e.isSelf)e.isMuted&&!e.canSelfUnmute&&(m(\"audio\",!1),m(\"video\",!1),m(\"presentation\",!1));else{var t=e.isLeft;const a=e.isMuted||e.isMutedByMe,s=!e.isVideoJoined||!e.video||t,r=!e.presentation||t;let o=!1,c=!1,d=!1;i.ssrcs.filter((t=>t.userId===e.id)).forEach((t=>{t.isVideo||(t.sourceGroups[0].sources[0]===e.source&&(c=!0),t.isRemoved=a),t.isVideo&&(t.isPresentation||(e.video&&t.endpoint===e.video.endpoint&&(o=!0),t.isRemoved=s),t.isPresentation&&(e.presentation&&t.endpoint===e.presentation.endpoint&&(d=!0),t.isRemoved=r))})),a||c||i.ssrcs.push({userId:e.id,isMain:!1,endpoint:`audio${e.source}`,isVideo:!1,sourceGroups:[{semantics:\"FID\",sources:[e.source]}]}),s||o||!e.video||(n.push(e.video.endpoint),i.ssrcs.push({userId:e.id,isMain:!1,endpoint:e.video.endpoint,isVideo:!0,sourceGroups:e.video.sourceGroups})),r||d||!e.presentation||i.ssrcs.push({isPresentation:!0,userId:e.id,isMain:!1,endpoint:e.presentation.endpoint,isVideo:!0,sourceGroups:e.presentation.sourceGroups})}})),o.updatingParticipantsQueue)o.updatingParticipantsQueue.push(i);else{o.updatingParticipantsQueue=[],e=(0,s.default)(i),await r.setRemoteDescription({type:\"offer\",sdp:e});try{var t=await r.createAnswer();if(await r.setLocalDescription(t),u(c),0<o.updatingParticipantsQueue.length)for(const e of o.updatingParticipantsQueue){await r.setRemoteDescription({type:\"offer\",sdp:(0,s.default)(e)});var a=await r.createAnswer();await r.setLocalDescription(a),u(c)}o.updatingParticipantsQueue=void 0}catch(e){console.error(e)}}}}},handleUpdateGroupCallConnection:()=>async function(e,t){if(o){var a=t?o.screenshareConference:o.conference;const i=t?o.screenshareConnection:o.connection;if(a&&i&&a.ssrcs){var n=Date.now();e={...a,transport:e.transport,sessionId:n,audioExtensions:e.audio?.[\"rtp-hdrexts\"],audioPayloadTypes:e.audio?.[\"payload-types\"],videoExtensions:e.video?.[\"rtp-hdrexts\"],videoPayloadTypes:e.video?.[\"payload-types\"]};o={...o,...t?{screenshareConference:e}:{conference:e}};try{await i.setRemoteDescription({type:\"answer\",sdp:(0,s.default)(e,!0,t)})}catch(e){console.error(e)}}}},startSharingScreen:()=>async function(){if(o)try{const e=await l(\"presentation\");return e?(e.getTracks()[0].onended=()=>{o&&o.myId&&(o.streams?.[o.myId].presentation,u(o.myId),c())},new Promise((t=>{var{connection:a,dataChannel:t}=y([e],t,!0);o={...o,screenshareConnection:a,screenshareDataChannel:t}}))):void 0}catch(e){return}},joinGroupCall:()=>function(e,t,a,n){if(o)throw Error(\"Already in call\");f(\"connecting\");var s=new MediaStream;return a.srcObject=s,a.play().catch((e=>console.warn(e))),o={onUpdate:n,participants:[],myId:e,speaking:{},silence:(0,i.silence)(t),black:(0,i.black)({width:640,height:480}),analyserInterval:setInterval(v,1e3),audioElement:a,audioContext:t,mediaStream:s},new Promise((e=>{o={...o,...y([o.silence,o.black],e)}}))}});var n=a(\"./src/parseSdp.ts\"),s=a(\"./src/buildSdp.ts\"),i=a(\"./src/blacksilence.ts\"),r=a(\"./src/utils.ts\");let o;function c(e){o&&(o.screenshareDataChannel?.close(),o.screenshareConnection?.close(),e||o.onUpdate?.({\"@type\":\"updateGroupCallLeavePresentation\"}))}function d(e){return o?.streams?.[e]}function p(e,t){const a=(t=t||o?.myId)&&d(t)?.[e];return!!a&&a.getTracks()[0]?.enabled}function u(e){o?.onUpdate?.({\"@type\":\"updateGroupCallStreams\",userId:e,hasAudioStream:p(\"audio\",e),hasVideoStream:p(\"video\",e),hasPresentationStream:p(\"presentation\",e),amplitude:o.speaking?.[e]})}function l(e,t=\"user\"){return\"presentation\"===e?navigator.mediaDevices.getDisplayMedia({audio:!1,video:!0}):navigator.mediaDevices.getUserMedia({audio:\"audio\"===e&&{...r.IS_ECHO_CANCELLATION_SUPPORTED&&{echoCancellation:!0},...r.IS_NOISE_SUPPRESSION_SUPPORTED&&{noiseSuppression:!0}},video:\"video\"===e&&{facingMode:t}})}async function m(e,t){if(o&&o.myId&&o.connection&&o.streams){const a=d(o.myId)?.[e];if(a){const n=a.getTracks()[0];if(n){const a=[...o.connection.getSenders(),...o.screenshareConnection?.getSenders()||[]].find((e=>n.id===e.track?.id));if(a){t=void 0===t?!n.enabled:t;try{if(t&&!n.enabled){const t=await l(e);if(await a.replaceTrack(t.getTracks()[0]),o.streams[o.myId][e]=t,\"video\"===e)o.facingMode=\"user\";else if(\"audio\"===e){const e=o.audioContext;if(!e)return;const a=e.createMediaStreamSource(t),n=e.createAnalyser();n.minDecibels=-100,n.maxDecibels=-30,n.smoothingTimeConstant=.05,n.fftSize=1024,a.connect(n),o={...o,participantFunctions:{...o.participantFunctions,[o.myId]:{...o.participantFunctions?.[o.myId],getCurrentAmplitude:()=>{var e=new Uint8Array(n.frequencyBinCount);return n.getByteFrequencyData(e),(0,r.getAmplitude)(e,1.5)}}}}}}else if(!t&&n.enabled){n.stop();const t=\"audio\"===e?o.silence:o.black;if(!t)return;await a.replaceTrack(t.getTracks()[0]),o.streams[o.myId][e]=t,\"video\"===e&&(o.facingMode=void 0)}u(o.myId),\"presentation\"!==e||t||c(!0)}catch(e){}}}}}}function f(e){o?.onUpdate?.({\"@type\":\"updateGroupCallConnectionState\",connectionState:e})}function g(){o&&(o.myId&&o.streams?.[o.myId]&&Object.values(o.streams[o.myId]||{}).forEach((e=>{e?.getTracks().forEach((e=>{e.stop()}))})),c(!0),o.dataChannel?.close(),o.connection?.close(),f(\"disconnected\"),o.analyserInterval&&clearInterval(o.analyserInterval),o=void 0)}function v(){o&&o.participantFunctions&&Object.keys(o.participantFunctions).forEach((e=>{const t=o.participantFunctions[Number(e)].getCurrentAmplitude;var a,n;t&&(a=t(),n=o.speaking[e]||0,((o.speaking[e]=a)>r.THRESHOLD&&n<=r.THRESHOLD||a<=r.THRESHOLD&&n>r.THRESHOLD)&&u(e))}))}function S(e){if(o&&o.audioElement&&o.audioContext&&o.mediaStream){var t=o.conference?.ssrcs?.find((t=>t.endpoint===e.track.id));if(t&&t.userId){const{userId:n,isPresentation:s}=t;var a=o.participants?.find((e=>e.id===n));const i=\"video\"===e.track.kind?s?\"presentation\":\"video\":\"audio\";if(e.track.onended=()=>{o?.streams?.[n][i],u(n)},t=e.streams[0],\"audio\"===e.track.kind){const e=o.mediaStream,s=new window.AudioContext,i=s.createMediaStreamSource(t),c=s.createGain();c.gain.value=(a?.volume||1e4)/1e4;const d=s.createGain();c.gain.value=1;const p=s.createAnalyser();p.minDecibels=-100,p.maxDecibels=-30,p.smoothingTimeConstant=.05,p.fftSize=1024,i.connect(p).connect(d).connect(c).connect(s.destination),e.addTrack(i.mediaStream.getAudioTracks()[0]);const u=new Audio;u.srcObject=t,u.muted=!0,u.remove(),o={...o,participantFunctions:{...o.participantFunctions,[n]:{...o.participantFunctions?.[n],setVolume:e=>{c.gain.value=1<e?2*e:e},toggleMute:e=>{d.gain.value=e?0:1},getCurrentAmplitude:()=>{var e=new Uint8Array(p.frequencyBinCount);return p.getByteFrequencyData(e),(0,r.getAmplitude)(e,1.5)}}}}}o={...o,streams:{...o.streams,[n]:{...o.streams?.[n],[i]:t}}},u(n)}}}function y(e,t,a=!1){const s=new RTCPeerConnection;var i=a?void 0:function(e){const t=e.createDataChannel(\"data\",{id:0});return t.onopen=()=>{},t.onmessage=e=>{JSON.parse(e.data).colibriClass},t.onerror=e=>{console.log(\"%conerror\",\"background: green; font-size: 5em\"),console.error(e)},t}(s);return e.forEach((e=>e.getTracks().forEach((t=>{s.addTrack(t,e)})))),a||(s.oniceconnectionstatechange=()=>{var e=s.iceConnectionState;\"connected\"===e||\"completed\"===e?f(\"connected\"):\"checking\"===e||\"new\"===e?f(\"connecting\"):\"disconnected\"===s.iceConnectionState&&f(\"reconnecting\")}),s.ontrack=S,s.onnegotiationneeded=async()=>{if(o){var i=o.myId;if(i){var r=await s.createOffer({offerToReceiveVideo:!0,offerToReceiveAudio:!a});if(await s.setLocalDescription(r),r.sdp){var c=(0,n.default)(r),d=a?void 0:{userId:\"\",sourceGroups:[{semantics:\"FID\",sources:[c.ssrc||0]}],isRemoved:a,isMain:!0,isVideo:!1,isPresentation:a,endpoint:a?\"1\":\"0\"},p=c[\"ssrc-groups\"]&&{isPresentation:a,userId:\"\",sourceGroups:c[\"ssrc-groups\"],isMain:!0,isVideo:!0,endpoint:a?\"0\":\"1\"};r=a?o.screenshareConference:o.conference;const s=[];a?(p&&s.push(p),d&&s.push(d)):(d&&s.push(d),p&&s.push(p)),d=e.find((e=>\"audio\"===e.getTracks()[0].kind)),p=e.find((e=>\"video\"===e.getTracks()[0].kind)),o={...o,...a?{screenshareConference:{...r,ssrcs:s}}:{conference:{...r,ssrcs:s}},streams:{...o.streams,[i]:{...o.streams?.[i],...d&&{audio:d},...!a&&p?{video:p}:{presentation:p}}}},u(i),t(c)}}}},{connection:s,dataChannel:i}}},\"./src/types.ts\":(e,t,a)=>{a.r(t)},\"./src/utils.ts\":(e,t,a)=>{a.r(t),a.d(t,{toTelegramSource:()=>function(e){return e<<0},fromTelegramSource:()=>function(e){return e>>>0},getAmplitude:()=>function(e,t=3){if(!e)return 0;var a=e.length;let n=0;for(let t=0;t<a;t++)n+=e[t]*e[t];var s=Math.sqrt(n/a)/255;return Math.min(1,s*t)},p2pPayloadTypeToConference:()=>function(e){return{id:e.id,name:e.name,\"rtcp-fbs\":e.feedbackTypes,clockrate:e.clockrate,parameters:e.parameters,channels:e.channels}},THRESHOLD:()=>n,IS_SCREENSHARE_SUPPORTED:()=>s,IS_ECHO_CANCELLATION_SUPPORTED:()=>i,IS_NOISE_SUPPRESSION_SUPPORTED:()=>r});const n=.1,s=\"getDisplayMedia\"in(navigator?.mediaDevices||{}),i=navigator?.mediaDevices?.getSupportedConstraints().echoCancellation,r=navigator?.mediaDevices?.getSupportedConstraints().noiseSuppression}},t={};function a(n){var s=t[n];return void 0!==s||(s=t[n]={exports:{}},e[n](s,s.exports,a)),s.exports}a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var n={};(()=>{a.r(n),a.d(n,{handleUpdateGroupCallConnection:()=>e.handleUpdateGroupCallConnection,startSharingScreen:()=>e.startSharingScreen,joinGroupCall:()=>e.joinGroupCall,getDevices:()=>e.getDevices,getUserStreams:()=>e.getUserStreams,setVolume:()=>e.setVolume,isStreamEnabled:()=>e.isStreamEnabled,toggleStream:()=>e.toggleStream,leaveGroupCall:()=>e.leaveGroupCall,handleUpdateGroupCallParticipants:()=>e.handleUpdateGroupCallParticipants,switchCameraInput:()=>e.switchCameraInput,toggleSpeaker:()=>e.toggleSpeaker,toggleNoiseSuppression:()=>e.toggleNoiseSuppression,joinPhoneCall:()=>t.joinPhoneCall,processSignalingMessage:()=>t.processSignalingMessage,getStreams:()=>t.getStreams,toggleStreamP2p:()=>t.toggleStreamP2p,stopPhoneCall:()=>t.stopPhoneCall,switchCameraInputP2p:()=>t.switchCameraInputP2p,IS_SCREENSHARE_SUPPORTED:()=>s.IS_SCREENSHARE_SUPPORTED,THRESHOLD:()=>s.THRESHOLD});var e=a(\"./src/secretsauce.ts\"),t=a(\"./src/p2p.ts\"),s=(a(\"./src/p2pMessage.ts\"),a(\"./src/utils.ts\"));a(\"./src/types.ts\")})();var s,i=exports;for(s in n)i[s]=n[s];n.__esModule&&Object.defineProperty(i,\"__esModule\",{value:!0})})();"],"names":["addActionHandler","async","global","actions","payload","isFromLibrary","shouldDiscard","shouldRemove","rejoin","groupCall","selectActiveGroupCall","setGlobal","updateActiveGroupCall","connectionState","participantsCount","callApi","call","getGlobal","removeGroupCall","id","removeGroupCallAudioElement","groupCalls","activeGroupCallId","undefined","isCallPanelVisible","leaveGroupCall","joinGroupCall","user","selectUser","currentUserId","toggleStream","videoStopped","isStreamEnabled","participant","value","raiseHand","participantId","volume","setVolume","Math","floor","GROUP_CALL_VOLUME_MULTIPLIER","Number","muted","params","startSharingScreen","presentationPaused","showNotification","message","audioElement","getGroupCallAudioElement","audioContext","getGroupCallAudioContext","apiUpdate","inviteHash","loadMoreGroupCallParticipants","chatId","chat","selectChat","loadFullChat","phoneCall","selectPhoneCallUser","dhConfig","gAHash","isVideo","hangUp","gB","data","JSON","stringify","encodedData","ratingPhoneCall","rating","comment","state","stopPhoneCall","setTimeout","EMOJI_DATA","Uint16Array","EMOJI_OFFSETS","update","toggleGroupCallPresentation","userId","selectGroupCallParticipant","updateGroupCallParticipant","omit","updateGroupCall","isSpeakerDisabled","groupCallId","participants","handleUpdateGroupCallParticipants","stream","handleUpdateGroupCallConnection","presentation","Object","keys","length","values","ARE_CALLS_SUPPORTED","isOutgoing","adminId","isBusy","accessHash","connections","protocol","libraryVersions","some","version","langProvider","firstName","needRating","gA","keyFingerprint","emojis","newCall","gAOrB","joinPhoneCall","sendSignalingData","Boolean","isConnected","then","processSignalingMessage","vibrateShort","navigator","vibrate","memo","withGlobal","meParticipant","raiseHandRating","hasAudioStream","canSelfUnmute","isMuted","hasRequestedToSpeak","noAudioStream","toggleGroupCallMute","requestToSpeak","playGroupCallSound","getActions","lang","useLang","muteMouseDownState","useRef","isRequestingToSpeak","setIsRequestingToSpeak","useState","isConnecting","shouldRaiseHand","prevShouldRaiseHand","usePrevious","useEffect","sound","playSegment","useMemo","r","random","animatedIconName","toggleMute","buttonText","className","buildClassName","onMouseDown","current","onMouseUp","AnimatedIcon","tgsUrl","LOCAL_TGS_URLS","size","SPEAKER_ICON_DISABLED_SEGMENT","SPEAKER_ICON_ENABLED_SEGMENT","isAdmin","selectIsAdminInActiveGroupCall","closeDropdown","isDropdownOpen","anchor","setGroupCallParticipantVolume","toggleGroupCallPanel","openChat","isDeleteUserModalOpen","openDeleteUserModal","closeDeleteUserModal","useFlag","isMutedByMe","isSelf","isRaiseHand","localVolume","setLocalVolume","GROUP_CALL_DEFAULT_VOLUME","runThrottled","fn","deps","ms","noFirst","fnMemo","useCallback","cb","throttle","useThrottledCallback","handleRemove","e","stopPropagation","handleCancelRequestToSpeak","handleMute","handleOpenProfile","speakerIconPlaySegment","Menu","isOpen","positionX","autoClose","style","buildStyle","y","onClose","type","min","max","onChange","target","MenuItem","icon","onClick","destructive","DeleteMemberModal","noColor","isSpeaking","amplitude","THRESHOLD","prevIsRaiseHand","prevIsMuted","microphoneColor","color","isUser","openParticipantMenu","anchorRef","aboutText","aboutColor","toString","replace","about","name","lastName","title","ref","Avatar","noVideo","createGroupCallInviteLink","participantsIds","viewportIds","getMore","useInfiniteScroll","InfiniteScroll","items","onLoadMore","map","key","isActive","isFullscreen","handleClick","streams","getUserStreams","ENABLE_THUMBNAIL_VIDEO","autoPlay","playsInline","srcObject","onDoubleClick","selectedVideo","setSelectedVideo","presentationParticipants","filter","l","hasPresentationStream","videoParticipants","hasVideoStream","totalVideoCount","columnCount","shouldSpanLastVideo","handleClickVideo","CAMERA_FLIP_PLAY_SEGMENT","selectGroupCall","isSpeakerEnabled","toggleGroupCallVideo","connectToActiveGroupCall","containerRef","isLeaving","setIsLeaving","openFullscreen","closeFullscreen","isSidebarOpen","openSidebar","closeSidebar","hasVideoParticipants","video","isLandscape","IS_SINGLE_COLUMN_LAYOUT","participantMenu","setParticipantMenu","isParticipantMenuOpen","closeParticipantMenu","isConfirmLeaveModalOpen","openConfirmLeaveModal","closeConfirmLeaveModal","isEndGroupCallModal","setIsEndGroupCallModal","shouldEndGroupCall","setShouldEndGroupCall","hasVideo","hasPresentation","handleOpenParticipantMenu","rect","getBoundingClientRect","container","x","left","top","offsetTop","handleCloseConfirmLeaveModal","MainButton","onTrigger","Button","round","ariaLabel","handleToggleFullscreen","document","exitFullscreen","requestFullscreen","handleToggleSidebar","handleStreamsDoubleClick","IS_REQUEST_FULLSCREEN_SUPPORTED","toggleFullscreen","handleClose","addEventListener","removeEventListener","endGroupCall","handleLeaveGroupCall","handleCloseAnimationEnd","Modal","dialogRef","onCloseAnimationEnd","IS_SCREENSHARE_SUPPORTED","DropdownMenu","trigger","Loading","IS_ANDROID","IS_IOS","switchCameraInput","toggleSpeaker","Checkbox","label","checked","onCheck","isText","phoneCallUser","body","classList","toggle","customIcon","iconClassName","isDisabled","disabled","acceptCall","connectToActivePhoneCall","isDiscarded","reason","isIncomingRequested","isOutgoingRequested","isHangingUp","startHangingUp","stopHangingUp","handleHangUp","forceUpdate","useForceUpdate","useInterval","callStatus","videoState","screencastState","getStreams","hasOwnAudio","ownAudio","getTracks","enabled","hasOwnPresentation","ownPresentation","hasOwnVideo","ownVideo","isHidingPresentation","startHidingPresentation","stopHidingPresentation","isHidingVideo","startHidingVideo","stopHidingVideo","handleTogglePresentation","toggleStreamP2p","handleToggleVideo","handleToggleAudio","isEmojiOpen","openEmoji","closeEmoji","isFlipping","startFlipping","stopFlipping","handleFlipCamera","switchCameraInputP2p","timeElapsed","startDate","Date","styles","noLoop","renderText","formatMediaDuration","closeCallRatingModal","setCallRating","inputRef","setRating","handleCancelClick","Array","fill","_","i","isFilled","index","InputText","placeholder","t","a","d","silence","n","black","s","createOscillator","connect","createMediaStreamDestination","start","MediaStream","assign","getAudioTracks","width","height","createElement","getContext","Error","fillRect","captureStream","getVideoTracks","default","push","sessionId","o","ssrcs","c","audioExtensions","videoExtensions","p","audioPayloadTypes","u","videoPayloadTypes","transport","ufrag","m","pwd","f","fingerprints","g","candidates","v","endpoint","join","S","sdpString","foundation","component","priority","ip","port","generation","forEach","hash","fingerprint","setup","h","channels","clockrate","parameters","subtype","isMain","uri","isRemoved","sourceGroups","semantics","sources","fromTelegramSource","facingMode","connection","getSenders","find","track","replaceTrack","RTCPeerConnection","iceServers","urls","isTurn","isStun","username","credentialType","credential","password","iceCandidatePoolSize","AudioContext","addTrack","onicecandidate","candidate","onconnectionstatechange","ontrack","kind","audio","play","catch","transceiver","mid","createDataChannel","negotiated","onmessage","parse","Audio","emitSignalingData","onUpdate","mediaState","isBatteryLow","videoRotation","blackVideo","blackPresentation","dataChannel","createOffer","offerToReceiveAudio","offerToReceiveVideo","setLocalDescription","stop","close","mediaDevices","getDisplayMedia","getUserMedia","IS_ECHO_CANCELLATION_SUPPORTED","echoCancellation","IS_NOISE_SUPPRESSION_SUPPORTED","noiseSuppression","onended","payloadTypes","findIndex","apt","ssrc","ssrcGroups","rtpExtensions","audioExtmap","videoExtmap","screencast","screencastPayloadTypes","screencastExtmap","gotInitialSetup","Promise","all","addIceCandidate","sdpMLineIndex","xmlns","now","isPresentation","p2pPayloadTypeToConference","setRemoteDescription","sdp","conference","createAnswer","split","reduce","match","hasOwnProperty","startsWith","substr","feedbackTypes","console","log","toTelegramSource","slice","getDevices","enumerateDevices","participantFunctions","toggleNoiseSuppression","myId","getConstraints","applyConstraints","source","isLeft","isVideoJoined","updatingParticipantsQueue","error","screenshareConference","screenshareConnection","screenshareDataChannel","warn","speaking","analyserInterval","setInterval","mediaStream","createMediaStreamSource","createAnalyser","minDecibels","maxDecibels","smoothingTimeConstant","fftSize","getCurrentAmplitude","Uint8Array","frequencyBinCount","getByteFrequencyData","getAmplitude","clearInterval","window","createGain","gain","destination","remove","onopen","colibriClass","onerror","oniceconnectionstatechange","iceConnectionState","onnegotiationneeded","sqrt","getSupportedConstraints","exports","defineProperty","enumerable","get","prototype","Symbol","toStringTag","__esModule"],"sourceRoot":""}