@mirai/core 0.4.521 → 0.4.523
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/components/Chat/Chat.js +39 -15
- package/build/components/Chat/Chat.js.map +1 -1
- package/build/components/Chat/components/Aura/Aura.js +56 -102
- package/build/components/Chat/components/Aura/Aura.js.map +1 -1
- package/build/components/Chat/components/Aura/hooks/useOpenAiRealtimeSession.js +2 -1
- package/build/components/Chat/components/Aura/hooks/useOpenAiRealtimeSession.js.map +1 -1
- package/build/components/Chat/components/ButtonDispatcher/ButtonDispatcher.js +33 -25
- package/build/components/Chat/components/ButtonDispatcher/ButtonDispatcher.js.map +1 -1
- package/build/components/Chat/components/ButtonDispatcher/helpers/determinePosition.js +32 -12
- package/build/components/Chat/components/ButtonDispatcher/helpers/determinePosition.js.map +1 -1
- package/build/components/Chat/components/Header/Header.js +16 -8
- package/build/components/Chat/components/Header/Header.js.map +1 -1
- package/build/components/Chat/components/Message/Message.js +8 -3
- package/build/components/Chat/components/Message/Message.js.map +1 -1
- package/build/components/Chat/components/Message/Message.module.css +1 -0
- package/build/components/Chat/components/Message/helpers/formatText.js +62 -0
- package/build/components/Chat/components/Message/helpers/formatText.js.map +1 -0
- package/build/components/Chat/components/Message/helpers/index.js +4 -4
- package/build/components/Chat/components/Message/helpers/index.js.map +1 -1
- package/build/components/Chat/components/Message/helpers/resolveInnerUrl.js +7 -2
- package/build/components/Chat/components/Message/helpers/resolveInnerUrl.js.map +1 -1
- package/build/components/Chat/components/Welcome/Welcome.js +17 -6
- package/build/components/Chat/components/Welcome/Welcome.js.map +1 -1
- package/build/components/Chat/services/lobby.service.js +17 -1
- package/build/components/Chat/services/lobby.service.js.map +1 -1
- package/build/components/helpers/constants.js +1 -0
- package/build/components/helpers/constants.js.map +1 -1
- package/build/helpers/consolidateStore.js +0 -4
- package/build/helpers/consolidateStore.js.map +1 -1
- package/package.json +1 -2
- package/build/components/Chat/components/Aura/helpers/elevenLabs.js +0 -42
- package/build/components/Chat/components/Aura/helpers/elevenLabs.js.map +0 -1
- package/build/components/Chat/components/Aura/helpers/index.js +0 -17
- package/build/components/Chat/components/Aura/helpers/index.js.map +0 -1
- package/build/components/Chat/components/Message/helpers/parseLinks.js +0 -34
- package/build/components/Chat/components/Message/helpers/parseLinks.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOpenAiRealtimeSession.js","names":["_dataSources","require","_react","_helpers","_lobby","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","createMcpState","pending","pendingCallIds","Set","pendingCount","handledCallIds","handledApprovalIds","failedCallIds","responseIds","responsesDone","responsesWithMessage","resumeRequestedCallIds","resumeRequestedAny","retry","count","timeoutId","createResponseState","activeId","resumeAfterActive","createFunctionState","pendingCalls","Map","pendingFollowup","pendingFollowupReason","pendingFollowupResponse","handledOpenUrlCalls","useOpenAiRealtimeSession","audioElementRef","useRef","audioContextRef","peerConnectionRef","dataChannelRef","localStreamRef","localAudioTrackRef","microphoneEnabledRef","pendingIntroRef","introResponseIdRef","mcpStateRef","responseStateRef","functionStateRef","pendingUserTranscriptRef","inputSourceRef","outputSourceRef","inputFrequencyDataRef","outputFrequencyDataRef","audioAnalyzersRef","inputAnalyser","outputAnalyser","getInputByteFrequencyData","getOutputByteFrequencyData","cleanupRealtimeSession","useCallback","shouldSignal","undefined","dataChannel","current","readyState","send","JSON","stringify","type","close","peerConnection","getSenders","sender","track","stop","localStream","getTracks","clearTimeout","srcObject","disconnect","audioContext","safeJsonParse","parse","_unused","isAllowedOpenUrl","url","trim","startsWith","enableMicrophone","enabled","clearPendingMcp","sendResponseCreate","reason","responseOverrides","channel","responsePayload","response","resumeMcpIfNeeded","outputCallId","delete","has","size","shouldResume","some","responseId","add","trackMcpStart","callId","getFunctionCallKey","name","concat","upsertFunctionCall","_ref","key","args","existing","get","set","handleMcpCompletion","scheduleResumeRetry","attempt","delay","setTimeout","sendFunctionCallOutput","output","item","call_id","sendItemRetrieve","itemId","item_id","sendMcpApproval","approvalRequestId","approve","previous_item_id","approval_request_id","requestFollowupResponse","buildMcpFailureInstructions","localeHint","normalizedLocale","handleMcpFailure","failureKey","instructions","handleOpenUrlCalls","_ref2","outputItems","responseOpenUrlItems","Array","isArray","id","values","callKey","error","allowed_prefix","window","location","assign","startSession","_ref3","assistant_name","chainId","hotelId","isChain","locale","setIsConnecting","setReady","fingerprint","localStorage","getItem","finalizeSession","errorMessage","message","Event","publish","EVENT","METRICS","sessionResponse","request","endpoint","hostname","process","env","SERVICE_SYNAPSE","method","ephemeralKey","RTCPeerConnection","addEventListener","connectionState","document","createElement","autoplay","ontrack","_ref4","streams","remoteStream","createMediaStreamSource","connect","mediaStream","navigator","mediaDevices","getUserMedia","audio","echoCancellation","noiseSuppression","autoGainControl","channelCount","sampleRate","getAudioTracks","AudioContextConstructor","globalThis","AudioContext","webkitAudioContext","Error","state","resume","createAnalyser","fftSize","Uint8Array","frequencyBinCount","getByteFrequencyData","inputSource","applyConstraints","addTrack","createDataChannel","event","introductionMessage","_payload$item","_payload$item2","_payload$item3","_payload$item4","_payload$item5","_payload$item6","_payload$item9","_payload$item0","payload","data","response_id","_payload$item7","_payload$item8","_payload$item1","_payload$item10","status","_payload$item11","_payload$item12","_payload$item13","_payload$item14","approvalId","_payload$item15","_payload$item16","_payload$item19","_payload$item17","_payload$item18","_payload$item20","_response$status_deta","_response$status_deta2","_response$status_deta3","hasMessage","status_details","code","_payload$transcript","transcript","_payload$transcript2","input","activeLocale","chatId","ensureChatId","channelId","session","createChatMessage","author","body","meta","text","agent","offer","createOffer","setLocalDescription","sdpResponse","fetch","sdp","headers","Authorization","ok","answer","setRemoteDescription","endSession","audioAnalyzers","exports"],"sources":["../../../../../../src/components/Chat/components/Aura/hooks/useOpenAiRealtimeSession.js"],"sourcesContent":["import { Event, request } from '@mirai/data-sources';\nimport { useCallback, useRef } from 'react';\n\nimport { EVENT } from '../../../../helpers';\nimport { createChatMessage, ensureChatId } from '../../../services/lobby.service';\n\nconst createMcpState = () => ({\n pending: false,\n pendingCallIds: new Set(),\n pendingCount: 0,\n handledCallIds: new Set(),\n handledApprovalIds: new Set(),\n failedCallIds: new Set(),\n responseIds: new Set(),\n responsesDone: new Set(),\n responsesWithMessage: new Set(),\n resumeRequestedCallIds: new Set(),\n resumeRequestedAny: false,\n retry: { count: 0, timeoutId: null },\n});\n\nconst createResponseState = () => ({\n activeId: null,\n resumeAfterActive: false,\n});\n\nconst createFunctionState = () => ({\n pendingCalls: new Map(),\n pendingFollowup: false,\n pendingFollowupReason: null,\n pendingFollowupResponse: null,\n handledOpenUrlCalls: new Set(),\n});\n\nconst useOpenAiRealtimeSession = () => {\n const audioElementRef = useRef(null);\n const audioContextRef = useRef(null);\n const peerConnectionRef = useRef(null);\n const dataChannelRef = useRef(null);\n const localStreamRef = useRef(null);\n const localAudioTrackRef = useRef(null);\n const microphoneEnabledRef = useRef(false);\n const pendingIntroRef = useRef(false);\n const introResponseIdRef = useRef(null);\n const mcpStateRef = useRef(createMcpState());\n const responseStateRef = useRef(createResponseState());\n const functionStateRef = useRef(createFunctionState());\n const pendingUserTranscriptRef = useRef('');\n const inputSourceRef = useRef(null);\n const outputSourceRef = useRef(null);\n const inputFrequencyDataRef = useRef(null);\n const outputFrequencyDataRef = useRef(null);\n const audioAnalyzersRef = useRef({\n inputAnalyser: null,\n outputAnalyser: null,\n getInputByteFrequencyData: () => null,\n getOutputByteFrequencyData: () => null,\n });\n\n const cleanupRealtimeSession = useCallback((shouldSignal = false) => {\n const dataChannel = dataChannelRef.current;\n if (dataChannel) {\n if (shouldSignal && dataChannel.readyState === 'open') {\n dataChannel.send(JSON.stringify({ type: 'session.close' }));\n }\n dataChannel.close();\n dataChannelRef.current = null;\n }\n\n const peerConnection = peerConnectionRef.current;\n if (peerConnection) {\n peerConnection.getSenders().forEach((sender) => {\n if (sender.track) sender.track.stop();\n });\n peerConnection.close();\n peerConnectionRef.current = null;\n }\n\n const localStream = localStreamRef.current;\n if (localStream) {\n localStream.getTracks().forEach((track) => track.stop());\n localStreamRef.current = null;\n }\n\n localAudioTrackRef.current = null;\n microphoneEnabledRef.current = false;\n pendingIntroRef.current = false;\n introResponseIdRef.current = null;\n if (mcpStateRef.current.retry.timeoutId) {\n clearTimeout(mcpStateRef.current.retry.timeoutId);\n }\n mcpStateRef.current = createMcpState();\n responseStateRef.current = createResponseState();\n functionStateRef.current = createFunctionState();\n\n if (audioElementRef.current) {\n audioElementRef.current.srcObject = null;\n audioElementRef.current = null;\n }\n\n if (inputSourceRef.current) {\n inputSourceRef.current.disconnect();\n inputSourceRef.current = null;\n }\n\n if (outputSourceRef.current) {\n outputSourceRef.current.disconnect();\n outputSourceRef.current = null;\n }\n\n audioAnalyzersRef.current.inputAnalyser = null;\n audioAnalyzersRef.current.outputAnalyser = null;\n audioAnalyzersRef.current.getInputByteFrequencyData = () => null;\n audioAnalyzersRef.current.getOutputByteFrequencyData = () => null;\n inputFrequencyDataRef.current = null;\n outputFrequencyDataRef.current = null;\n\n const audioContext = audioContextRef.current;\n if (audioContext) {\n audioContext.close();\n audioContextRef.current = null;\n }\n\n pendingUserTranscriptRef.current = '';\n }, []);\n\n const safeJsonParse = useCallback((value) => {\n if (typeof value !== 'string') return null;\n try {\n return JSON.parse(value);\n } catch {\n return null;\n }\n }, []);\n\n const isAllowedOpenUrl = useCallback((url) => {\n if (typeof url !== 'string') return false;\n return url.trim().startsWith('https://reservation.mirai');\n }, []);\n\n const enableMicrophone = useCallback(() => {\n const track = localAudioTrackRef.current;\n if (!track || microphoneEnabledRef.current) return;\n track.enabled = true;\n microphoneEnabledRef.current = true;\n }, []);\n\n const clearPendingMcp = useCallback(() => {\n if (mcpStateRef.current.retry.timeoutId) {\n clearTimeout(mcpStateRef.current.retry.timeoutId);\n }\n mcpStateRef.current = createMcpState();\n }, []);\n\n const sendResponseCreate = useCallback((reason, responseOverrides) => {\n if (responseStateRef.current.activeId) {\n functionStateRef.current.pendingFollowup = true;\n functionStateRef.current.pendingFollowupReason = reason || null;\n functionStateRef.current.pendingFollowupResponse = responseOverrides || null;\n return false;\n }\n const channel = dataChannelRef.current;\n if (channel && channel.readyState === 'open') {\n const responsePayload = responseOverrides\n ? { type: 'response.create', response: responseOverrides }\n : { type: 'response.create' };\n channel.send(JSON.stringify(responsePayload));\n return true;\n }\n return false;\n }, []);\n\n const resumeMcpIfNeeded = useCallback(\n (outputCallId) => {\n if (outputCallId) {\n mcpStateRef.current.pendingCallIds.delete(outputCallId);\n }\n if (!mcpStateRef.current.pending || mcpStateRef.current.pendingCount > 0) return;\n if (outputCallId && mcpStateRef.current.resumeRequestedCallIds.has(outputCallId)) return;\n if (!outputCallId && mcpStateRef.current.resumeRequestedAny) return;\n if (!outputCallId && mcpStateRef.current.resumeRequestedCallIds.size > 0) return;\n const shouldResume = [...mcpStateRef.current.responseIds].some(\n (responseId) =>\n mcpStateRef.current.responsesDone.has(responseId) &&\n !mcpStateRef.current.responsesWithMessage.has(responseId),\n );\n if (!shouldResume) return;\n if (sendResponseCreate('mcp_completed')) {\n if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.add(outputCallId);\n if (!outputCallId) mcpStateRef.current.resumeRequestedAny = true;\n } else if (responseStateRef.current.activeId) {\n responseStateRef.current.resumeAfterActive = true;\n }\n },\n [sendResponseCreate],\n );\n\n const trackMcpStart = useCallback((callId) => {\n mcpStateRef.current.pending = true;\n if (callId) {\n if (mcpStateRef.current.handledCallIds.has(callId)) return;\n if (mcpStateRef.current.pendingCallIds.has(callId)) return;\n mcpStateRef.current.pendingCallIds.add(callId);\n mcpStateRef.current.pendingCount += 1;\n return;\n }\n mcpStateRef.current.pendingCount += 1;\n }, []);\n\n const getFunctionCallKey = useCallback((callId, responseId, name) => {\n if (callId) return callId;\n if (responseId && name) return `${responseId}:${name}`;\n return null;\n }, []);\n\n const upsertFunctionCall = useCallback(({ key, name, responseId, callId, args }) => {\n if (!key) return;\n const existing = functionStateRef.current.pendingCalls.get(key) || { key };\n functionStateRef.current.pendingCalls.set(key, {\n ...existing,\n name: name ?? existing.name,\n responseId: responseId ?? existing.responseId,\n callId: callId ?? existing.callId,\n args: args ?? existing.args,\n });\n }, []);\n\n const handleMcpCompletion = useCallback(\n (outputCallId) => {\n mcpStateRef.current.pending = true;\n if (outputCallId) {\n if (mcpStateRef.current.handledCallIds.has(outputCallId)) return;\n mcpStateRef.current.handledCallIds.add(outputCallId);\n }\n if (mcpStateRef.current.pendingCount > 0) mcpStateRef.current.pendingCount -= 1;\n resumeMcpIfNeeded(outputCallId);\n },\n [resumeMcpIfNeeded],\n );\n\n const scheduleResumeRetry = useCallback(\n (outputCallId) => {\n if (!mcpStateRef.current.pending) return;\n if (mcpStateRef.current.retry.timeoutId) return;\n if (mcpStateRef.current.retry.count >= 2) {\n clearPendingMcp();\n return;\n }\n const attempt = mcpStateRef.current.retry.count + 1;\n const delay = attempt * 600;\n mcpStateRef.current.retry.count = attempt;\n mcpStateRef.current.retry.timeoutId = setTimeout(() => {\n mcpStateRef.current.retry.timeoutId = null;\n if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.delete(outputCallId);\n mcpStateRef.current.resumeRequestedAny = false;\n resumeMcpIfNeeded(outputCallId);\n }, delay);\n },\n [clearPendingMcp, resumeMcpIfNeeded],\n );\n\n const sendFunctionCallOutput = useCallback((callId, output) => {\n const channel = dataChannelRef.current;\n if (!callId || !channel || channel.readyState !== 'open') return false;\n channel.send(\n JSON.stringify({\n type: 'conversation.item.create',\n item: {\n type: 'function_call_output',\n call_id: callId,\n output: JSON.stringify(output || {}),\n },\n }),\n );\n return true;\n }, []);\n\n const sendItemRetrieve = useCallback((itemId) => {\n const channel = dataChannelRef.current;\n if (!itemId || !channel || channel.readyState !== 'open') return false;\n channel.send(\n JSON.stringify({\n type: 'conversation.item.retrieve',\n item_id: itemId,\n }),\n );\n return true;\n }, []);\n\n const sendMcpApproval = useCallback((approvalRequestId, approve = true) => {\n const channel = dataChannelRef.current;\n if (!approvalRequestId || !channel || channel.readyState !== 'open') return false;\n channel.send(\n JSON.stringify({\n type: 'conversation.item.create',\n previous_item_id: approvalRequestId,\n item: {\n type: 'mcp_approval_response',\n approval_request_id: approvalRequestId,\n approve,\n },\n }),\n );\n return true;\n }, []);\n\n const requestFollowupResponse = useCallback(\n (reason, outputCallId, responseOverrides) => {\n functionStateRef.current.pendingFollowup = true;\n functionStateRef.current.pendingFollowupReason = reason || null;\n functionStateRef.current.pendingFollowupResponse = responseOverrides || null;\n if (sendResponseCreate(reason || 'followup', responseOverrides)) {\n mcpStateRef.current.resumeRequestedAny = true;\n if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.add(outputCallId);\n }\n },\n [sendResponseCreate],\n );\n\n const buildMcpFailureInstructions = useCallback((localeHint) => {\n const normalizedLocale = localeHint || 'en-US';\n return `Respond in the language that matches the locale code \"${normalizedLocale}\". The requested information could not be retrieved because a data source failed. Apologize briefly and ask if the user wants to try again or ask something else.`;\n }, []);\n\n const handleMcpFailure = useCallback(\n (callId, localeHint) => {\n const failureKey = callId || 'unknown';\n if (mcpStateRef.current.failedCallIds.has(failureKey)) return;\n mcpStateRef.current.failedCallIds.add(failureKey);\n const instructions = buildMcpFailureInstructions(localeHint);\n requestFollowupResponse('mcp_failed', callId, { instructions });\n },\n [buildMcpFailureInstructions, requestFollowupResponse],\n );\n\n const handleOpenUrlCalls = useCallback(\n ({ responseId, outputItems }) => {\n const responseOpenUrlItems = Array.isArray(outputItems)\n ? outputItems.filter((item) => item?.type === 'function_call' && item?.name === 'open_url')\n : [];\n responseOpenUrlItems.forEach((item) => {\n const key = getFunctionCallKey(item.call_id || item.id || null, responseId, item.name);\n upsertFunctionCall({\n key,\n name: item.name,\n responseId,\n callId: item.call_id || item.id || null,\n args: item.arguments || null,\n });\n });\n\n const pendingCalls = [...functionStateRef.current.pendingCalls.values()].filter((call) => {\n if (!call?.name || call.name !== 'open_url') return false;\n if (!responseId) return true;\n return !call.responseId || call.responseId === responseId;\n });\n\n for (const call of pendingCalls) {\n const callKey = call.key || call.callId || call.args || null;\n if (callKey && functionStateRef.current.handledOpenUrlCalls.has(callKey)) continue;\n const args = safeJsonParse(call.args);\n const url = args?.url;\n if (!isAllowedOpenUrl(url)) {\n if (call.callId) {\n sendFunctionCallOutput(call.callId, {\n error: 'blocked_url',\n allowed_prefix: 'https://reservation.mirai',\n });\n requestFollowupResponse('open_url_blocked', call.callId);\n }\n if (call.key) functionStateRef.current.pendingCalls.delete(call.key);\n continue;\n }\n if (callKey) functionStateRef.current.handledOpenUrlCalls.add(callKey);\n if (call.key) functionStateRef.current.pendingCalls.delete(call.key);\n cleanupRealtimeSession(true);\n window.location.assign(url.trim());\n return true;\n }\n return false;\n },\n [\n cleanupRealtimeSession,\n getFunctionCallKey,\n isAllowedOpenUrl,\n requestFollowupResponse,\n safeJsonParse,\n sendFunctionCallOutput,\n upsertFunctionCall,\n ],\n );\n\n const startSession = useCallback(\n async ({ assistant_name, chainId, hotelId, isChain, locale, setIsConnecting, setReady }) => {\n cleanupRealtimeSession();\n\n const fingerprint = localStorage.getItem('MIRAI:FINGERPRINT');\n const finalizeSession = (error) => {\n const errorMessage = typeof error === 'string' ? error : error?.message;\n if (errorMessage) {\n Event.publish(EVENT.METRICS, { id: 'AURA:ERROR', error: errorMessage });\n }\n cleanupRealtimeSession(true);\n setReady(false);\n setIsConnecting(false);\n };\n\n try {\n const sessionResponse = await request({\n endpoint: `/audio/session?fingerprint=${fingerprint}&hotelId=${isChain ? '' : hotelId ?? ''}&chainId=${\n isChain ? chainId ?? '' : ''\n }`,\n hostname: process.env.SERVICE_SYNAPSE,\n method: 'GET',\n });\n\n const ephemeralKey = sessionResponse.value;\n const peerConnection = new RTCPeerConnection();\n peerConnectionRef.current = peerConnection;\n peerConnection.addEventListener('connectionstatechange', () => {\n const { connectionState } = peerConnection;\n if (connectionState === 'failed' || connectionState === 'disconnected' || connectionState === 'closed') {\n finalizeSession();\n }\n });\n\n audioElementRef.current = document.createElement('audio');\n audioElementRef.current.autoplay = true;\n peerConnection.ontrack = ({ streams }) => {\n const [remoteStream] = streams;\n if (audioElementRef.current) {\n audioElementRef.current.srcObject = remoteStream || null;\n }\n if (!audioContextRef.current || !audioAnalyzersRef.current.outputAnalyser || !remoteStream) return;\n if (outputSourceRef.current) outputSourceRef.current.disconnect();\n outputSourceRef.current = audioContextRef.current.createMediaStreamSource(remoteStream);\n outputSourceRef.current.connect(audioAnalyzersRef.current.outputAnalyser);\n };\n\n const mediaStream = await navigator.mediaDevices.getUserMedia({\n audio: {\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n channelCount: 1,\n sampleRate: 48000,\n },\n });\n\n localStreamRef.current = mediaStream;\n const [track] = mediaStream.getAudioTracks();\n\n const AudioContextConstructor = globalThis.AudioContext || globalThis.webkitAudioContext;\n if (!AudioContextConstructor) throw new Error('AudioContext not supported');\n const audioContext = new AudioContextConstructor();\n audioContextRef.current = audioContext;\n if (audioContext.state === 'suspended') await audioContext.resume();\n const inputAnalyser = audioContext.createAnalyser();\n const outputAnalyser = audioContext.createAnalyser();\n inputAnalyser.fftSize = 1024;\n outputAnalyser.fftSize = 1024;\n audioAnalyzersRef.current.inputAnalyser = inputAnalyser;\n audioAnalyzersRef.current.outputAnalyser = outputAnalyser;\n inputFrequencyDataRef.current = new Uint8Array(inputAnalyser.frequencyBinCount);\n outputFrequencyDataRef.current = new Uint8Array(outputAnalyser.frequencyBinCount);\n audioAnalyzersRef.current.getInputByteFrequencyData = () => {\n if (!audioAnalyzersRef.current.inputAnalyser || !inputFrequencyDataRef.current) return null;\n audioAnalyzersRef.current.inputAnalyser.getByteFrequencyData(inputFrequencyDataRef.current);\n return inputFrequencyDataRef.current;\n };\n audioAnalyzersRef.current.getOutputByteFrequencyData = () => {\n if (!audioAnalyzersRef.current.outputAnalyser || !outputFrequencyDataRef.current) return null;\n audioAnalyzersRef.current.outputAnalyser.getByteFrequencyData(outputFrequencyDataRef.current);\n return outputFrequencyDataRef.current;\n };\n\n const inputSource = audioContext.createMediaStreamSource(mediaStream);\n inputSourceRef.current = inputSource;\n inputSource.connect(inputAnalyser);\n\n if (track) {\n localAudioTrackRef.current = track;\n track.enabled = false;\n await track.applyConstraints({\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n });\n peerConnection.addTrack(track, mediaStream);\n }\n\n const dataChannel = peerConnection.createDataChannel('oai-events');\n dataChannelRef.current = dataChannel;\n dataChannel.addEventListener('close', () => {\n finalizeSession();\n });\n dataChannel.addEventListener('error', (event) => {\n finalizeSession(event);\n });\n\n dataChannel.addEventListener('open', () => {\n pendingUserTranscriptRef.current = '';\n Event.publish(EVENT.METRICS, { id: 'AURA:START' });\n\n const localeHint = locale || 'en-US';\n const introductionMessage = `Respond in the language that matches the locale code \"${localeHint}\". Introduce yourself using the following sentence, translated into that language: \"Hello, I am ${assistant_name}, your virtual assistant. I can help you with information about our services and facilities. What would you like to know today?\"`;\n\n pendingIntroRef.current = true;\n introResponseIdRef.current = null;\n dataChannel.send(\n JSON.stringify({\n type: 'response.create',\n response: {\n instructions: introductionMessage,\n },\n }),\n );\n });\n\n dataChannel.addEventListener('message', async (event) => {\n const payload = JSON.parse(event.data);\n const { response } = payload;\n const itemId = payload.item?.id || payload.item_id || null;\n const callId = payload.item?.call_id || payload.call_id || itemId;\n const responseId = payload.response_id || response?.id || null;\n\n if (payload.type === 'response.output_item.added' && payload.item?.type === 'message') {\n if (pendingIntroRef.current && !introResponseIdRef.current && payload.response_id) {\n introResponseIdRef.current = payload.response_id;\n }\n if (responseId) {\n mcpStateRef.current.responsesWithMessage.add(responseId);\n mcpStateRef.current.responseIds.delete(responseId);\n }\n if (mcpStateRef.current.pending && mcpStateRef.current.pendingCount === 0) {\n clearPendingMcp();\n }\n }\n\n if (payload.type === 'output_audio_buffer.stopped') {\n if (\n pendingIntroRef.current &&\n introResponseIdRef.current &&\n payload.response_id === introResponseIdRef.current\n ) {\n enableMicrophone();\n pendingIntroRef.current = false;\n introResponseIdRef.current = null;\n }\n }\n\n if (\n payload.type === 'response.output_item.added' &&\n (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call')\n ) {\n if (responseId) mcpStateRef.current.responseIds.add(responseId);\n trackMcpStart(callId);\n }\n\n if (payload.type === 'response.output_item.added' && payload.item?.type === 'function_call') {\n const name = payload.item?.name || payload.name || null;\n const key = getFunctionCallKey(callId, responseId, name);\n upsertFunctionCall({ key, name, responseId, callId, args: payload.item?.arguments || null });\n }\n\n if (payload.type === 'response.function_call_arguments.done') {\n const name = payload.name || null;\n const key = getFunctionCallKey(payload.call_id || null, responseId, name);\n upsertFunctionCall({ key, name, responseId, callId: payload.call_id || null, args: payload.arguments });\n }\n\n if (payload.type === 'response.mcp_call.in_progress') {\n trackMcpStart(callId);\n if (payload.item_id) sendItemRetrieve(payload.item_id);\n }\n\n if (payload.type === 'response.mcp_tool_call.in_progress') {\n trackMcpStart(callId);\n if (payload.item_id) sendItemRetrieve(payload.item_id);\n }\n\n if (payload.type === 'mcp_list_tools.in_progress' || payload.type === 'response.mcp_list_tools.in_progress') {\n if (payload.item_id) sendItemRetrieve(payload.item_id);\n }\n\n if (\n payload.type === 'response.output_item.done' &&\n (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call')\n ) {\n if (payload.item?.error || payload.item?.status === 'failed') {\n handleMcpFailure(callId, locale);\n }\n handleMcpCompletion(callId);\n }\n\n if (\n payload.type === 'response.mcp_call.completed' ||\n payload.type === 'response.mcp_call.failed' ||\n payload.type === 'response.mcp_tool_call.completed' ||\n payload.type === 'response.mcp_tool_call.failed'\n ) {\n if (payload.type === 'response.mcp_call.failed' || payload.type === 'response.mcp_tool_call.failed') {\n handleMcpFailure(callId, locale);\n }\n handleMcpCompletion(callId);\n }\n\n if (payload.type === 'conversation.item.added' || payload.type === 'conversation.item.retrieved') {\n if (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call') {\n trackMcpStart(callId);\n }\n if (payload.item?.type === 'mcp_approval_request') {\n const approvalId = payload.item?.id || payload.item_id || null;\n if (approvalId && !mcpStateRef.current.handledApprovalIds.has(approvalId)) {\n mcpStateRef.current.handledApprovalIds.add(approvalId);\n sendMcpApproval(approvalId, true);\n }\n }\n }\n\n if (payload.type === 'conversation.item.done') {\n if (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call') {\n if (payload.item?.status === 'failed' || payload.item?.error) {\n handleMcpFailure(callId, locale);\n }\n handleMcpCompletion(callId);\n }\n if (payload.item?.type === 'mcp_approval_request') {\n const approvalId = payload.item?.id || payload.item_id || null;\n if (approvalId && !mcpStateRef.current.handledApprovalIds.has(approvalId)) {\n mcpStateRef.current.handledApprovalIds.add(approvalId);\n sendMcpApproval(approvalId, true);\n }\n }\n }\n\n if (payload.type === 'response.done') {\n if (responseId) mcpStateRef.current.responsesDone.add(responseId);\n const outputItems = Array.isArray(response?.output) ? response.output : [];\n const hasMessage = outputItems.some((item) => item?.type === 'message');\n const status = response?.status;\n const reason = response?.status_details?.reason || response?.status_details?.error?.code || null;\n if (status === 'completed') {\n if (\n hasMessage &&\n mcpStateRef.current.pending &&\n mcpStateRef.current.pendingCount === 0 &&\n mcpStateRef.current.responseIds.size === 0\n ) {\n clearPendingMcp();\n }\n } else if (mcpStateRef.current.pending) {\n if (status === 'failed') {\n if (mcpStateRef.current.failedCallIds.size === 0) {\n scheduleResumeRetry(callId);\n }\n } else if (status === 'cancelled' && reason !== 'turn_detected') {\n if (mcpStateRef.current.failedCallIds.size === 0) {\n scheduleResumeRetry(callId);\n }\n }\n }\n resumeMcpIfNeeded(callId);\n handleOpenUrlCalls({ responseId, outputItems });\n }\n\n if (payload.type === 'response.created') {\n if (responseId) responseStateRef.current.activeId = responseId;\n }\n\n if (payload.type === 'conversation.item.input_audio_transcription.completed') {\n const transcript = payload.transcript?.trim();\n if (transcript) pendingUserTranscriptRef.current += transcript;\n }\n\n if (payload.type === 'response.done' && responseId && responseStateRef.current.activeId === responseId) {\n responseStateRef.current.activeId = null;\n if (responseStateRef.current.resumeAfterActive) {\n responseStateRef.current.resumeAfterActive = false;\n mcpStateRef.current.resumeRequestedAny = false;\n resumeMcpIfNeeded();\n }\n if (functionStateRef.current.pendingFollowup) {\n const reason = functionStateRef.current.pendingFollowupReason;\n const responseOverrides = functionStateRef.current.pendingFollowupResponse;\n functionStateRef.current.pendingFollowup = false;\n functionStateRef.current.pendingFollowupReason = null;\n functionStateRef.current.pendingFollowupResponse = null;\n sendResponseCreate(reason || 'followup', responseOverrides);\n }\n }\n\n if (payload.type === 'response.output_audio_transcript.done') {\n const transcript = payload.transcript?.trim();\n if (!transcript || !pendingUserTranscriptRef.current) return;\n\n const input = pendingUserTranscriptRef.current.trim();\n pendingUserTranscriptRef.current = '';\n\n const activeLocale = locale || 'en-US';\n\n if (hotelId) {\n try {\n const chatId = await ensureChatId({\n fingerprint,\n channelId: hotelId,\n session: { locale: activeLocale },\n });\n if (chatId) {\n await createChatMessage({ author: 'user', body: input, chatId, meta: { audio: true } });\n await createChatMessage({ author: 'ai', body: transcript, chatId, meta: { audio: true } });\n }\n } catch (error) {\n Event.publish(EVENT.METRICS, { id: 'AURA:ERROR', error: error?.message });\n }\n }\n\n Event.publish(EVENT.METRICS, {\n id: 'SYNAPSE_RESPONSE',\n fingerprint,\n text: transcript,\n input,\n agent: 'aura',\n locale: activeLocale,\n });\n }\n });\n\n const offer = await peerConnection.createOffer();\n await peerConnection.setLocalDescription(offer);\n\n const sdpResponse = await fetch('https://api.openai.com/v1/realtime/calls', {\n method: 'POST',\n body: offer.sdp,\n headers: {\n Authorization: `Bearer ${ephemeralKey}`,\n 'Content-Type': 'application/sdp',\n },\n });\n\n if (!sdpResponse.ok) throw new Error('Failed to establish OpenAI Realtime session');\n\n const answer = { type: 'answer', sdp: await sdpResponse.text() };\n\n await peerConnection.setRemoteDescription(answer);\n setReady(true);\n } catch (error) {\n Event.publish(EVENT.METRICS, { id: 'AURA:ERROR', error: error?.message });\n setReady(false);\n throw error;\n } finally {\n setIsConnecting(false);\n }\n },\n [\n cleanupRealtimeSession,\n clearPendingMcp,\n enableMicrophone,\n handleMcpCompletion,\n handleMcpFailure,\n handleOpenUrlCalls,\n resumeMcpIfNeeded,\n scheduleResumeRetry,\n sendItemRetrieve,\n sendMcpApproval,\n sendResponseCreate,\n trackMcpStart,\n upsertFunctionCall,\n getFunctionCallKey,\n ],\n );\n\n const endSession = useCallback(() => {\n cleanupRealtimeSession(true);\n }, [cleanupRealtimeSession]);\n\n return { startSession, endSession, audioAnalyzers: audioAnalyzersRef.current };\n};\n\nexport { useOpenAiRealtimeSession };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useOpenAiRealtimeSession.js","names":["_dataSources","require","_react","_helpers","_lobby","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","createMcpState","pending","pendingCallIds","Set","pendingCount","handledCallIds","handledApprovalIds","failedCallIds","responseIds","responsesDone","responsesWithMessage","resumeRequestedCallIds","resumeRequestedAny","retry","count","timeoutId","createResponseState","activeId","resumeAfterActive","createFunctionState","pendingCalls","Map","pendingFollowup","pendingFollowupReason","pendingFollowupResponse","handledOpenUrlCalls","useOpenAiRealtimeSession","audioElementRef","useRef","audioContextRef","peerConnectionRef","dataChannelRef","localStreamRef","localAudioTrackRef","microphoneEnabledRef","pendingIntroRef","introResponseIdRef","mcpStateRef","responseStateRef","functionStateRef","pendingUserTranscriptRef","inputSourceRef","outputSourceRef","inputFrequencyDataRef","outputFrequencyDataRef","audioAnalyzersRef","inputAnalyser","outputAnalyser","getInputByteFrequencyData","getOutputByteFrequencyData","cleanupRealtimeSession","useCallback","shouldSignal","undefined","dataChannel","current","readyState","send","JSON","stringify","type","close","peerConnection","getSenders","sender","track","stop","localStream","getTracks","clearTimeout","srcObject","disconnect","audioContext","safeJsonParse","parse","_unused","isAllowedOpenUrl","url","trim","startsWith","enableMicrophone","enabled","clearPendingMcp","sendResponseCreate","reason","responseOverrides","channel","responsePayload","response","resumeMcpIfNeeded","outputCallId","delete","has","size","shouldResume","some","responseId","add","trackMcpStart","callId","getFunctionCallKey","name","concat","upsertFunctionCall","_ref","key","args","existing","get","set","handleMcpCompletion","scheduleResumeRetry","attempt","delay","setTimeout","sendFunctionCallOutput","output","item","call_id","sendItemRetrieve","itemId","item_id","sendMcpApproval","approvalRequestId","approve","previous_item_id","approval_request_id","requestFollowupResponse","buildMcpFailureInstructions","localeHint","normalizedLocale","handleMcpFailure","failureKey","instructions","handleOpenUrlCalls","_ref2","outputItems","responseOpenUrlItems","Array","isArray","id","values","callKey","error","allowed_prefix","window","location","assign","startSession","_ref3","assistant_name","chainId","currency","hotelId","isChain","locale","setIsConnecting","setReady","fingerprint","localStorage","getItem","finalizeSession","errorMessage","message","Event","publish","EVENT","METRICS","sessionResponse","request","endpoint","hostname","process","env","SERVICE_SYNAPSE","method","ephemeralKey","RTCPeerConnection","addEventListener","connectionState","document","createElement","autoplay","ontrack","_ref4","streams","remoteStream","createMediaStreamSource","connect","mediaStream","navigator","mediaDevices","getUserMedia","audio","echoCancellation","noiseSuppression","autoGainControl","channelCount","sampleRate","getAudioTracks","AudioContextConstructor","globalThis","AudioContext","webkitAudioContext","Error","state","resume","createAnalyser","fftSize","Uint8Array","frequencyBinCount","getByteFrequencyData","inputSource","applyConstraints","addTrack","createDataChannel","event","introductionMessage","_payload$item","_payload$item2","_payload$item3","_payload$item4","_payload$item5","_payload$item6","_payload$item9","_payload$item0","payload","data","response_id","_payload$item7","_payload$item8","_payload$item1","_payload$item10","status","_payload$item11","_payload$item12","_payload$item13","_payload$item14","approvalId","_payload$item15","_payload$item16","_payload$item19","_payload$item17","_payload$item18","_payload$item20","_response$status_deta","_response$status_deta2","_response$status_deta3","hasMessage","status_details","code","_payload$transcript","transcript","_payload$transcript2","input","activeLocale","chatId","ensureChatId","channelId","session","createChatMessage","author","body","meta","text","agent","offer","createOffer","setLocalDescription","sdpResponse","fetch","sdp","headers","Authorization","ok","answer","setRemoteDescription","endSession","audioAnalyzers","exports"],"sources":["../../../../../../src/components/Chat/components/Aura/hooks/useOpenAiRealtimeSession.js"],"sourcesContent":["import { Event, request } from '@mirai/data-sources';\nimport { useCallback, useRef } from 'react';\n\nimport { EVENT } from '../../../../helpers';\nimport { createChatMessage, ensureChatId } from '../../../services/lobby.service';\n\nconst createMcpState = () => ({\n pending: false,\n pendingCallIds: new Set(),\n pendingCount: 0,\n handledCallIds: new Set(),\n handledApprovalIds: new Set(),\n failedCallIds: new Set(),\n responseIds: new Set(),\n responsesDone: new Set(),\n responsesWithMessage: new Set(),\n resumeRequestedCallIds: new Set(),\n resumeRequestedAny: false,\n retry: { count: 0, timeoutId: null },\n});\n\nconst createResponseState = () => ({\n activeId: null,\n resumeAfterActive: false,\n});\n\nconst createFunctionState = () => ({\n pendingCalls: new Map(),\n pendingFollowup: false,\n pendingFollowupReason: null,\n pendingFollowupResponse: null,\n handledOpenUrlCalls: new Set(),\n});\n\nconst useOpenAiRealtimeSession = () => {\n const audioElementRef = useRef(null);\n const audioContextRef = useRef(null);\n const peerConnectionRef = useRef(null);\n const dataChannelRef = useRef(null);\n const localStreamRef = useRef(null);\n const localAudioTrackRef = useRef(null);\n const microphoneEnabledRef = useRef(false);\n const pendingIntroRef = useRef(false);\n const introResponseIdRef = useRef(null);\n const mcpStateRef = useRef(createMcpState());\n const responseStateRef = useRef(createResponseState());\n const functionStateRef = useRef(createFunctionState());\n const pendingUserTranscriptRef = useRef('');\n const inputSourceRef = useRef(null);\n const outputSourceRef = useRef(null);\n const inputFrequencyDataRef = useRef(null);\n const outputFrequencyDataRef = useRef(null);\n const audioAnalyzersRef = useRef({\n inputAnalyser: null,\n outputAnalyser: null,\n getInputByteFrequencyData: () => null,\n getOutputByteFrequencyData: () => null,\n });\n\n const cleanupRealtimeSession = useCallback((shouldSignal = false) => {\n const dataChannel = dataChannelRef.current;\n if (dataChannel) {\n if (shouldSignal && dataChannel.readyState === 'open') {\n dataChannel.send(JSON.stringify({ type: 'session.close' }));\n }\n dataChannel.close();\n dataChannelRef.current = null;\n }\n\n const peerConnection = peerConnectionRef.current;\n if (peerConnection) {\n peerConnection.getSenders().forEach((sender) => {\n if (sender.track) sender.track.stop();\n });\n peerConnection.close();\n peerConnectionRef.current = null;\n }\n\n const localStream = localStreamRef.current;\n if (localStream) {\n localStream.getTracks().forEach((track) => track.stop());\n localStreamRef.current = null;\n }\n\n localAudioTrackRef.current = null;\n microphoneEnabledRef.current = false;\n pendingIntroRef.current = false;\n introResponseIdRef.current = null;\n if (mcpStateRef.current.retry.timeoutId) {\n clearTimeout(mcpStateRef.current.retry.timeoutId);\n }\n mcpStateRef.current = createMcpState();\n responseStateRef.current = createResponseState();\n functionStateRef.current = createFunctionState();\n\n if (audioElementRef.current) {\n audioElementRef.current.srcObject = null;\n audioElementRef.current = null;\n }\n\n if (inputSourceRef.current) {\n inputSourceRef.current.disconnect();\n inputSourceRef.current = null;\n }\n\n if (outputSourceRef.current) {\n outputSourceRef.current.disconnect();\n outputSourceRef.current = null;\n }\n\n audioAnalyzersRef.current.inputAnalyser = null;\n audioAnalyzersRef.current.outputAnalyser = null;\n audioAnalyzersRef.current.getInputByteFrequencyData = () => null;\n audioAnalyzersRef.current.getOutputByteFrequencyData = () => null;\n inputFrequencyDataRef.current = null;\n outputFrequencyDataRef.current = null;\n\n const audioContext = audioContextRef.current;\n if (audioContext) {\n audioContext.close();\n audioContextRef.current = null;\n }\n\n pendingUserTranscriptRef.current = '';\n }, []);\n\n const safeJsonParse = useCallback((value) => {\n if (typeof value !== 'string') return null;\n try {\n return JSON.parse(value);\n } catch {\n return null;\n }\n }, []);\n\n const isAllowedOpenUrl = useCallback((url) => {\n if (typeof url !== 'string') return false;\n return url.trim().startsWith('https://reservation.mirai');\n }, []);\n\n const enableMicrophone = useCallback(() => {\n const track = localAudioTrackRef.current;\n if (!track || microphoneEnabledRef.current) return;\n track.enabled = true;\n microphoneEnabledRef.current = true;\n }, []);\n\n const clearPendingMcp = useCallback(() => {\n if (mcpStateRef.current.retry.timeoutId) {\n clearTimeout(mcpStateRef.current.retry.timeoutId);\n }\n mcpStateRef.current = createMcpState();\n }, []);\n\n const sendResponseCreate = useCallback((reason, responseOverrides) => {\n if (responseStateRef.current.activeId) {\n functionStateRef.current.pendingFollowup = true;\n functionStateRef.current.pendingFollowupReason = reason || null;\n functionStateRef.current.pendingFollowupResponse = responseOverrides || null;\n return false;\n }\n const channel = dataChannelRef.current;\n if (channel && channel.readyState === 'open') {\n const responsePayload = responseOverrides\n ? { type: 'response.create', response: responseOverrides }\n : { type: 'response.create' };\n channel.send(JSON.stringify(responsePayload));\n return true;\n }\n return false;\n }, []);\n\n const resumeMcpIfNeeded = useCallback(\n (outputCallId) => {\n if (outputCallId) {\n mcpStateRef.current.pendingCallIds.delete(outputCallId);\n }\n if (!mcpStateRef.current.pending || mcpStateRef.current.pendingCount > 0) return;\n if (outputCallId && mcpStateRef.current.resumeRequestedCallIds.has(outputCallId)) return;\n if (!outputCallId && mcpStateRef.current.resumeRequestedAny) return;\n if (!outputCallId && mcpStateRef.current.resumeRequestedCallIds.size > 0) return;\n const shouldResume = [...mcpStateRef.current.responseIds].some(\n (responseId) =>\n mcpStateRef.current.responsesDone.has(responseId) &&\n !mcpStateRef.current.responsesWithMessage.has(responseId),\n );\n if (!shouldResume) return;\n if (sendResponseCreate('mcp_completed')) {\n if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.add(outputCallId);\n if (!outputCallId) mcpStateRef.current.resumeRequestedAny = true;\n } else if (responseStateRef.current.activeId) {\n responseStateRef.current.resumeAfterActive = true;\n }\n },\n [sendResponseCreate],\n );\n\n const trackMcpStart = useCallback((callId) => {\n mcpStateRef.current.pending = true;\n if (callId) {\n if (mcpStateRef.current.handledCallIds.has(callId)) return;\n if (mcpStateRef.current.pendingCallIds.has(callId)) return;\n mcpStateRef.current.pendingCallIds.add(callId);\n mcpStateRef.current.pendingCount += 1;\n return;\n }\n mcpStateRef.current.pendingCount += 1;\n }, []);\n\n const getFunctionCallKey = useCallback((callId, responseId, name) => {\n if (callId) return callId;\n if (responseId && name) return `${responseId}:${name}`;\n return null;\n }, []);\n\n const upsertFunctionCall = useCallback(({ key, name, responseId, callId, args }) => {\n if (!key) return;\n const existing = functionStateRef.current.pendingCalls.get(key) || { key };\n functionStateRef.current.pendingCalls.set(key, {\n ...existing,\n name: name ?? existing.name,\n responseId: responseId ?? existing.responseId,\n callId: callId ?? existing.callId,\n args: args ?? existing.args,\n });\n }, []);\n\n const handleMcpCompletion = useCallback(\n (outputCallId) => {\n mcpStateRef.current.pending = true;\n if (outputCallId) {\n if (mcpStateRef.current.handledCallIds.has(outputCallId)) return;\n mcpStateRef.current.handledCallIds.add(outputCallId);\n }\n if (mcpStateRef.current.pendingCount > 0) mcpStateRef.current.pendingCount -= 1;\n resumeMcpIfNeeded(outputCallId);\n },\n [resumeMcpIfNeeded],\n );\n\n const scheduleResumeRetry = useCallback(\n (outputCallId) => {\n if (!mcpStateRef.current.pending) return;\n if (mcpStateRef.current.retry.timeoutId) return;\n if (mcpStateRef.current.retry.count >= 2) {\n clearPendingMcp();\n return;\n }\n const attempt = mcpStateRef.current.retry.count + 1;\n const delay = attempt * 600;\n mcpStateRef.current.retry.count = attempt;\n mcpStateRef.current.retry.timeoutId = setTimeout(() => {\n mcpStateRef.current.retry.timeoutId = null;\n if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.delete(outputCallId);\n mcpStateRef.current.resumeRequestedAny = false;\n resumeMcpIfNeeded(outputCallId);\n }, delay);\n },\n [clearPendingMcp, resumeMcpIfNeeded],\n );\n\n const sendFunctionCallOutput = useCallback((callId, output) => {\n const channel = dataChannelRef.current;\n if (!callId || !channel || channel.readyState !== 'open') return false;\n channel.send(\n JSON.stringify({\n type: 'conversation.item.create',\n item: {\n type: 'function_call_output',\n call_id: callId,\n output: JSON.stringify(output || {}),\n },\n }),\n );\n return true;\n }, []);\n\n const sendItemRetrieve = useCallback((itemId) => {\n const channel = dataChannelRef.current;\n if (!itemId || !channel || channel.readyState !== 'open') return false;\n channel.send(\n JSON.stringify({\n type: 'conversation.item.retrieve',\n item_id: itemId,\n }),\n );\n return true;\n }, []);\n\n const sendMcpApproval = useCallback((approvalRequestId, approve = true) => {\n const channel = dataChannelRef.current;\n if (!approvalRequestId || !channel || channel.readyState !== 'open') return false;\n channel.send(\n JSON.stringify({\n type: 'conversation.item.create',\n previous_item_id: approvalRequestId,\n item: {\n type: 'mcp_approval_response',\n approval_request_id: approvalRequestId,\n approve,\n },\n }),\n );\n return true;\n }, []);\n\n const requestFollowupResponse = useCallback(\n (reason, outputCallId, responseOverrides) => {\n functionStateRef.current.pendingFollowup = true;\n functionStateRef.current.pendingFollowupReason = reason || null;\n functionStateRef.current.pendingFollowupResponse = responseOverrides || null;\n if (sendResponseCreate(reason || 'followup', responseOverrides)) {\n mcpStateRef.current.resumeRequestedAny = true;\n if (outputCallId) mcpStateRef.current.resumeRequestedCallIds.add(outputCallId);\n }\n },\n [sendResponseCreate],\n );\n\n const buildMcpFailureInstructions = useCallback((localeHint) => {\n const normalizedLocale = localeHint || 'en-US';\n return `Respond in the language that matches the locale code \"${normalizedLocale}\". The requested information could not be retrieved because a data source failed. Apologize briefly and ask if the user wants to try again or ask something else.`;\n }, []);\n\n const handleMcpFailure = useCallback(\n (callId, localeHint) => {\n const failureKey = callId || 'unknown';\n if (mcpStateRef.current.failedCallIds.has(failureKey)) return;\n mcpStateRef.current.failedCallIds.add(failureKey);\n const instructions = buildMcpFailureInstructions(localeHint);\n requestFollowupResponse('mcp_failed', callId, { instructions });\n },\n [buildMcpFailureInstructions, requestFollowupResponse],\n );\n\n const handleOpenUrlCalls = useCallback(\n ({ responseId, outputItems }) => {\n const responseOpenUrlItems = Array.isArray(outputItems)\n ? outputItems.filter((item) => item?.type === 'function_call' && item?.name === 'open_url')\n : [];\n responseOpenUrlItems.forEach((item) => {\n const key = getFunctionCallKey(item.call_id || item.id || null, responseId, item.name);\n upsertFunctionCall({\n key,\n name: item.name,\n responseId,\n callId: item.call_id || item.id || null,\n args: item.arguments || null,\n });\n });\n\n const pendingCalls = [...functionStateRef.current.pendingCalls.values()].filter((call) => {\n if (!call?.name || call.name !== 'open_url') return false;\n if (!responseId) return true;\n return !call.responseId || call.responseId === responseId;\n });\n\n for (const call of pendingCalls) {\n const callKey = call.key || call.callId || call.args || null;\n if (callKey && functionStateRef.current.handledOpenUrlCalls.has(callKey)) continue;\n const args = safeJsonParse(call.args);\n const url = args?.url;\n if (!isAllowedOpenUrl(url)) {\n if (call.callId) {\n sendFunctionCallOutput(call.callId, {\n error: 'blocked_url',\n allowed_prefix: 'https://reservation.mirai',\n });\n requestFollowupResponse('open_url_blocked', call.callId);\n }\n if (call.key) functionStateRef.current.pendingCalls.delete(call.key);\n continue;\n }\n if (callKey) functionStateRef.current.handledOpenUrlCalls.add(callKey);\n if (call.key) functionStateRef.current.pendingCalls.delete(call.key);\n cleanupRealtimeSession(true);\n window.location.assign(url.trim());\n return true;\n }\n return false;\n },\n [\n cleanupRealtimeSession,\n getFunctionCallKey,\n isAllowedOpenUrl,\n requestFollowupResponse,\n safeJsonParse,\n sendFunctionCallOutput,\n upsertFunctionCall,\n ],\n );\n\n const startSession = useCallback(\n async ({ assistant_name, chainId, currency, hotelId, isChain, locale, setIsConnecting, setReady }) => {\n cleanupRealtimeSession();\n\n const fingerprint = localStorage.getItem('MIRAI:FINGERPRINT');\n const finalizeSession = (error) => {\n const errorMessage = typeof error === 'string' ? error : error?.message;\n if (errorMessage) {\n Event.publish(EVENT.METRICS, { id: 'AURA:ERROR', error: errorMessage });\n }\n cleanupRealtimeSession(true);\n setReady(false);\n setIsConnecting(false);\n };\n\n try {\n const sessionResponse = await request({\n endpoint: `/voice/session?fingerprint=${fingerprint}&hotelId=${isChain ? '' : hotelId ?? ''}&chainId=${\n isChain ? chainId ?? '' : ''\n }&locale=${locale ?? ''}¤cy=${currency ?? ''}`,\n hostname: process.env.SERVICE_SYNAPSE,\n method: 'GET',\n });\n\n const ephemeralKey = sessionResponse.value;\n const peerConnection = new RTCPeerConnection();\n peerConnectionRef.current = peerConnection;\n peerConnection.addEventListener('connectionstatechange', () => {\n const { connectionState } = peerConnection;\n if (connectionState === 'failed' || connectionState === 'disconnected' || connectionState === 'closed') {\n finalizeSession();\n }\n });\n\n audioElementRef.current = document.createElement('audio');\n audioElementRef.current.autoplay = true;\n peerConnection.ontrack = ({ streams }) => {\n const [remoteStream] = streams;\n if (audioElementRef.current) {\n audioElementRef.current.srcObject = remoteStream || null;\n }\n if (!audioContextRef.current || !audioAnalyzersRef.current.outputAnalyser || !remoteStream) return;\n if (outputSourceRef.current) outputSourceRef.current.disconnect();\n outputSourceRef.current = audioContextRef.current.createMediaStreamSource(remoteStream);\n outputSourceRef.current.connect(audioAnalyzersRef.current.outputAnalyser);\n };\n\n const mediaStream = await navigator.mediaDevices.getUserMedia({\n audio: {\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n channelCount: 1,\n sampleRate: 48000,\n },\n });\n\n localStreamRef.current = mediaStream;\n const [track] = mediaStream.getAudioTracks();\n\n const AudioContextConstructor = globalThis.AudioContext || globalThis.webkitAudioContext;\n if (!AudioContextConstructor) throw new Error('AudioContext not supported');\n const audioContext = new AudioContextConstructor();\n audioContextRef.current = audioContext;\n if (audioContext.state === 'suspended') await audioContext.resume();\n const inputAnalyser = audioContext.createAnalyser();\n const outputAnalyser = audioContext.createAnalyser();\n inputAnalyser.fftSize = 1024;\n outputAnalyser.fftSize = 1024;\n audioAnalyzersRef.current.inputAnalyser = inputAnalyser;\n audioAnalyzersRef.current.outputAnalyser = outputAnalyser;\n inputFrequencyDataRef.current = new Uint8Array(inputAnalyser.frequencyBinCount);\n outputFrequencyDataRef.current = new Uint8Array(outputAnalyser.frequencyBinCount);\n audioAnalyzersRef.current.getInputByteFrequencyData = () => {\n if (!audioAnalyzersRef.current.inputAnalyser || !inputFrequencyDataRef.current) return null;\n audioAnalyzersRef.current.inputAnalyser.getByteFrequencyData(inputFrequencyDataRef.current);\n return inputFrequencyDataRef.current;\n };\n audioAnalyzersRef.current.getOutputByteFrequencyData = () => {\n if (!audioAnalyzersRef.current.outputAnalyser || !outputFrequencyDataRef.current) return null;\n audioAnalyzersRef.current.outputAnalyser.getByteFrequencyData(outputFrequencyDataRef.current);\n return outputFrequencyDataRef.current;\n };\n\n const inputSource = audioContext.createMediaStreamSource(mediaStream);\n inputSourceRef.current = inputSource;\n inputSource.connect(inputAnalyser);\n\n if (track) {\n localAudioTrackRef.current = track;\n track.enabled = false;\n await track.applyConstraints({\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n });\n peerConnection.addTrack(track, mediaStream);\n }\n\n const dataChannel = peerConnection.createDataChannel('oai-events');\n dataChannelRef.current = dataChannel;\n dataChannel.addEventListener('close', () => {\n finalizeSession();\n });\n dataChannel.addEventListener('error', (event) => {\n finalizeSession(event);\n });\n\n dataChannel.addEventListener('open', () => {\n pendingUserTranscriptRef.current = '';\n Event.publish(EVENT.METRICS, { id: 'AURA:START' });\n\n const localeHint = locale || 'en-US';\n const introductionMessage = `Respond in the language that matches the locale code \"${localeHint}\". Introduce yourself using the following sentence, translated into that language: \"Hello, I am ${assistant_name}, your virtual assistant. I can help you with information about our services and facilities. What would you like to know today?\"`;\n\n pendingIntroRef.current = true;\n introResponseIdRef.current = null;\n dataChannel.send(\n JSON.stringify({\n type: 'response.create',\n response: {\n instructions: introductionMessage,\n },\n }),\n );\n });\n\n dataChannel.addEventListener('message', async (event) => {\n const payload = JSON.parse(event.data);\n const { response } = payload;\n const itemId = payload.item?.id || payload.item_id || null;\n const callId = payload.item?.call_id || payload.call_id || itemId;\n const responseId = payload.response_id || response?.id || null;\n\n if (payload.type === 'response.output_item.added' && payload.item?.type === 'message') {\n if (pendingIntroRef.current && !introResponseIdRef.current && payload.response_id) {\n introResponseIdRef.current = payload.response_id;\n }\n if (responseId) {\n mcpStateRef.current.responsesWithMessage.add(responseId);\n mcpStateRef.current.responseIds.delete(responseId);\n }\n if (mcpStateRef.current.pending && mcpStateRef.current.pendingCount === 0) {\n clearPendingMcp();\n }\n }\n\n if (payload.type === 'output_audio_buffer.stopped') {\n if (\n pendingIntroRef.current &&\n introResponseIdRef.current &&\n payload.response_id === introResponseIdRef.current\n ) {\n enableMicrophone();\n pendingIntroRef.current = false;\n introResponseIdRef.current = null;\n }\n }\n\n if (\n payload.type === 'response.output_item.added' &&\n (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call')\n ) {\n if (responseId) mcpStateRef.current.responseIds.add(responseId);\n trackMcpStart(callId);\n }\n\n if (payload.type === 'response.output_item.added' && payload.item?.type === 'function_call') {\n const name = payload.item?.name || payload.name || null;\n const key = getFunctionCallKey(callId, responseId, name);\n upsertFunctionCall({ key, name, responseId, callId, args: payload.item?.arguments || null });\n }\n\n if (payload.type === 'response.function_call_arguments.done') {\n const name = payload.name || null;\n const key = getFunctionCallKey(payload.call_id || null, responseId, name);\n upsertFunctionCall({ key, name, responseId, callId: payload.call_id || null, args: payload.arguments });\n }\n\n if (payload.type === 'response.mcp_call.in_progress') {\n trackMcpStart(callId);\n if (payload.item_id) sendItemRetrieve(payload.item_id);\n }\n\n if (payload.type === 'response.mcp_tool_call.in_progress') {\n trackMcpStart(callId);\n if (payload.item_id) sendItemRetrieve(payload.item_id);\n }\n\n if (payload.type === 'mcp_list_tools.in_progress' || payload.type === 'response.mcp_list_tools.in_progress') {\n if (payload.item_id) sendItemRetrieve(payload.item_id);\n }\n\n if (\n payload.type === 'response.output_item.done' &&\n (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call')\n ) {\n if (payload.item?.error || payload.item?.status === 'failed') {\n handleMcpFailure(callId, locale);\n }\n handleMcpCompletion(callId);\n }\n\n if (\n payload.type === 'response.mcp_call.completed' ||\n payload.type === 'response.mcp_call.failed' ||\n payload.type === 'response.mcp_tool_call.completed' ||\n payload.type === 'response.mcp_tool_call.failed'\n ) {\n if (payload.type === 'response.mcp_call.failed' || payload.type === 'response.mcp_tool_call.failed') {\n handleMcpFailure(callId, locale);\n }\n handleMcpCompletion(callId);\n }\n\n if (payload.type === 'conversation.item.added' || payload.type === 'conversation.item.retrieved') {\n if (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call') {\n trackMcpStart(callId);\n }\n if (payload.item?.type === 'mcp_approval_request') {\n const approvalId = payload.item?.id || payload.item_id || null;\n if (approvalId && !mcpStateRef.current.handledApprovalIds.has(approvalId)) {\n mcpStateRef.current.handledApprovalIds.add(approvalId);\n sendMcpApproval(approvalId, true);\n }\n }\n }\n\n if (payload.type === 'conversation.item.done') {\n if (payload.item?.type === 'mcp_call' || payload.item?.type === 'mcp_tool_call') {\n if (payload.item?.status === 'failed' || payload.item?.error) {\n handleMcpFailure(callId, locale);\n }\n handleMcpCompletion(callId);\n }\n if (payload.item?.type === 'mcp_approval_request') {\n const approvalId = payload.item?.id || payload.item_id || null;\n if (approvalId && !mcpStateRef.current.handledApprovalIds.has(approvalId)) {\n mcpStateRef.current.handledApprovalIds.add(approvalId);\n sendMcpApproval(approvalId, true);\n }\n }\n }\n\n if (payload.type === 'response.done') {\n if (responseId) mcpStateRef.current.responsesDone.add(responseId);\n const outputItems = Array.isArray(response?.output) ? response.output : [];\n const hasMessage = outputItems.some((item) => item?.type === 'message');\n const status = response?.status;\n const reason = response?.status_details?.reason || response?.status_details?.error?.code || null;\n if (status === 'completed') {\n if (\n hasMessage &&\n mcpStateRef.current.pending &&\n mcpStateRef.current.pendingCount === 0 &&\n mcpStateRef.current.responseIds.size === 0\n ) {\n clearPendingMcp();\n }\n } else if (mcpStateRef.current.pending) {\n if (status === 'failed') {\n if (mcpStateRef.current.failedCallIds.size === 0) {\n scheduleResumeRetry(callId);\n }\n } else if (status === 'cancelled' && reason !== 'turn_detected') {\n if (mcpStateRef.current.failedCallIds.size === 0) {\n scheduleResumeRetry(callId);\n }\n }\n }\n resumeMcpIfNeeded(callId);\n handleOpenUrlCalls({ responseId, outputItems });\n }\n\n if (payload.type === 'response.created') {\n if (responseId) responseStateRef.current.activeId = responseId;\n }\n\n if (payload.type === 'conversation.item.input_audio_transcription.completed') {\n const transcript = payload.transcript?.trim();\n if (transcript) pendingUserTranscriptRef.current += transcript;\n }\n\n if (payload.type === 'response.done' && responseId && responseStateRef.current.activeId === responseId) {\n responseStateRef.current.activeId = null;\n if (responseStateRef.current.resumeAfterActive) {\n responseStateRef.current.resumeAfterActive = false;\n mcpStateRef.current.resumeRequestedAny = false;\n resumeMcpIfNeeded();\n }\n if (functionStateRef.current.pendingFollowup) {\n const reason = functionStateRef.current.pendingFollowupReason;\n const responseOverrides = functionStateRef.current.pendingFollowupResponse;\n functionStateRef.current.pendingFollowup = false;\n functionStateRef.current.pendingFollowupReason = null;\n functionStateRef.current.pendingFollowupResponse = null;\n sendResponseCreate(reason || 'followup', responseOverrides);\n }\n }\n\n if (payload.type === 'response.output_audio_transcript.done') {\n const transcript = payload.transcript?.trim();\n if (!transcript || !pendingUserTranscriptRef.current) return;\n\n const input = pendingUserTranscriptRef.current.trim();\n pendingUserTranscriptRef.current = '';\n\n const activeLocale = locale || 'en-US';\n\n if (hotelId) {\n try {\n const chatId = await ensureChatId({\n fingerprint,\n channelId: hotelId,\n session: { locale: activeLocale },\n });\n if (chatId) {\n await createChatMessage({ author: 'user', body: input, chatId, meta: { audio: true } });\n await createChatMessage({ author: 'ai', body: transcript, chatId, meta: { audio: true } });\n }\n } catch (error) {\n Event.publish(EVENT.METRICS, { id: 'AURA:ERROR', error: error?.message });\n }\n }\n\n Event.publish(EVENT.METRICS, {\n id: 'SYNAPSE_RESPONSE',\n fingerprint,\n text: transcript,\n input,\n agent: 'aura',\n locale: activeLocale,\n });\n }\n });\n\n const offer = await peerConnection.createOffer();\n await peerConnection.setLocalDescription(offer);\n\n const sdpResponse = await fetch('https://api.openai.com/v1/realtime/calls', {\n method: 'POST',\n body: offer.sdp,\n headers: {\n Authorization: `Bearer ${ephemeralKey}`,\n 'Content-Type': 'application/sdp',\n },\n });\n\n if (!sdpResponse.ok) throw new Error('Failed to establish OpenAI Realtime session');\n\n const answer = { type: 'answer', sdp: await sdpResponse.text() };\n\n await peerConnection.setRemoteDescription(answer);\n setReady(true);\n } catch (error) {\n Event.publish(EVENT.METRICS, { id: 'AURA:ERROR', error: error?.message });\n setReady(false);\n throw error;\n } finally {\n setIsConnecting(false);\n }\n },\n [\n cleanupRealtimeSession,\n clearPendingMcp,\n enableMicrophone,\n handleMcpCompletion,\n handleMcpFailure,\n handleOpenUrlCalls,\n resumeMcpIfNeeded,\n scheduleResumeRetry,\n sendItemRetrieve,\n sendMcpApproval,\n sendResponseCreate,\n trackMcpStart,\n upsertFunctionCall,\n getFunctionCallKey,\n ],\n );\n\n const endSession = useCallback(() => {\n cleanupRealtimeSession(true);\n }, [cleanupRealtimeSession]);\n\n return { startSession, endSession, audioAnalyzers: audioAnalyzersRef.current };\n};\n\nexport { useOpenAiRealtimeSession };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,15 +14,13 @@ var style = _interopRequireWildcard(require("./ButtonDispatcher.module.css"));
|
|
|
14
14
|
var _helpers = require("./helpers");
|
|
15
15
|
var _helpers2 = require("../../../helpers");
|
|
16
16
|
var _Chat = require("../../Chat.constants");
|
|
17
|
-
const _excluded = ["image", "name"];
|
|
18
17
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
19
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
|
-
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
21
|
-
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
22
19
|
const DELAY_WELCOME = 10000;
|
|
23
20
|
let focused = false;
|
|
24
21
|
const ButtonDispatcher = _ref => {
|
|
25
22
|
let {
|
|
23
|
+
settings,
|
|
26
24
|
visible,
|
|
27
25
|
onPress
|
|
28
26
|
} = _ref;
|
|
@@ -32,19 +30,21 @@ const ButtonDispatcher = _ref => {
|
|
|
32
30
|
const {
|
|
33
31
|
translate
|
|
34
32
|
} = (0, _locale.useLocale)();
|
|
35
|
-
const
|
|
36
|
-
{
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
33
|
+
const {
|
|
34
|
+
value: {
|
|
35
|
+
session: {
|
|
36
|
+
firstName
|
|
37
|
+
} = {}
|
|
38
|
+
} = {}
|
|
39
|
+
} = (0, _dataSources.useStore)();
|
|
40
|
+
const {
|
|
41
|
+
ai: {
|
|
42
|
+
name = _Chat.DEFAULT_NAME
|
|
43
|
+
} = {},
|
|
44
|
+
web: {
|
|
45
|
+
avatar
|
|
46
|
+
} = {}
|
|
47
|
+
} = settings || {};
|
|
48
48
|
const [focus, setFocus] = (0, _react.useState)(false);
|
|
49
49
|
const [hide, setHide] = (0, _react.useState)(false);
|
|
50
50
|
const [ready, setReady] = (0, _react.useState)(false);
|
|
@@ -82,7 +82,7 @@ const ButtonDispatcher = _ref => {
|
|
|
82
82
|
(0, _react.useEffect)(() => {
|
|
83
83
|
if (focus) focused = true;
|
|
84
84
|
}, [focus]);
|
|
85
|
-
const position = (0, _helpers.determinePosition)(
|
|
85
|
+
const position = (0, _helpers.determinePosition)(settings === null || settings === void 0 ? void 0 : settings.web, isMobile);
|
|
86
86
|
return /*#__PURE__*/_react.default.createElement(_ui.View, {
|
|
87
87
|
className: (0, _ui.styles)(style.buttonDispatcher, ready && !visible && !hide && style.visible, ...position.className),
|
|
88
88
|
style: position.style
|
|
@@ -113,20 +113,28 @@ const ButtonDispatcher = _ref => {
|
|
|
113
113
|
onPress: onPress
|
|
114
114
|
}, /*#__PURE__*/_react.default.createElement(_ui.Avatar, {
|
|
115
115
|
disabled: visible,
|
|
116
|
-
image:
|
|
116
|
+
image: avatar,
|
|
117
117
|
className: style.avatar
|
|
118
118
|
})));
|
|
119
119
|
};
|
|
120
120
|
exports.ButtonDispatcher = ButtonDispatcher;
|
|
121
121
|
ButtonDispatcher.displayName = 'Mirai:Core:Chat:ButtonDispatcher';
|
|
122
122
|
ButtonDispatcher.propTypes = {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
123
|
+
settings: _propTypes.default.shape({
|
|
124
|
+
ai: _propTypes.default.shape({
|
|
125
|
+
name: _propTypes.default.string
|
|
126
|
+
}),
|
|
127
|
+
web: _propTypes.default.shape({
|
|
128
|
+
avatar: _propTypes.default.string,
|
|
129
|
+
bottom: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.number]),
|
|
130
|
+
bottomMobile: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.number]),
|
|
131
|
+
left: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.number]),
|
|
132
|
+
leftMobile: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.number]),
|
|
133
|
+
right: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.number]),
|
|
134
|
+
rightMobile: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.number]),
|
|
135
|
+
top: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.number]),
|
|
136
|
+
topMobile: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.number])
|
|
137
|
+
})
|
|
130
138
|
}),
|
|
131
139
|
visible: _propTypes.default.bool,
|
|
132
140
|
onPress: _propTypes.default.func
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonDispatcher.js","names":["_dataSources","require","_locale","_ui","_propTypes","_interopRequireDefault","_react","_interopRequireWildcard","_ButtonDispatcher","style","_helpers","_helpers2","_Chat","_excluded","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_objectWithoutProperties","_objectWithoutPropertiesLoose","getOwnPropertySymbols","length","indexOf","propertyIsEnumerable","DELAY_WELCOME","focused","ButtonDispatcher","_ref","visible","onPress","isMobile","useDevice","translate","useLocale","_useStore","useStore","value","assistant","image","name","DEFAULT_NAME","session","firstName","focus","setFocus","useState","hide","setHide","ready","setReady","useEffect","callback","_ref2","modalVisible","setTimeout","Event","subscribe","EVENT","MODAL_VISIBLE","unsubscribe","inactivityTimer","resetTimer","clearTimeout","document","addEventListener","current","removeEventListener","position","determinePosition","createElement","View","className","styles","buttonDispatcher","row","welcome","Text","bold","brand","headline","hi","concat","L10N","LABEL_HI","markdown","medium","LABEL_GREETINGS","Button","icon","small","squared","transparent","Icon","ICON","CLOSE","Pressable","onEnter","onLeave","Avatar","disabled","avatar","exports","displayName","propTypes","config","PropTypes","shape","bottom","oneOfType","bool","number","string","left","right","top","func"],"sources":["../../../../../src/components/Chat/components/ButtonDispatcher/ButtonDispatcher.js"],"sourcesContent":["import { Event, useStore } from '@mirai/data-sources';\nimport { useLocale } from '@mirai/locale';\nimport { Avatar, Button, Icon, Pressable, styles, Text, useDevice, View } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\n\nimport { L10N } from './ButtonDispatcher.l10n';\nimport * as style from './ButtonDispatcher.module.css';\nimport { determinePosition } from './helpers';\nimport { EVENT, ICON } from '../../../helpers';\nimport { DEFAULT_NAME } from '../../Chat.constants';\n\nconst DELAY_WELCOME = 10000;\nlet focused = false;\n\nconst ButtonDispatcher = ({ visible, onPress }) => {\n const { isMobile } = useDevice();\n const { translate } = useLocale();\n const {\n value: { assistant: { image, name = DEFAULT_NAME, ...assistant } = {}, session: { firstName } = {} },\n } = useStore();\n\n const [focus, setFocus] = useState(false);\n const [hide, setHide] = useState(false);\n const [ready, setReady] = useState(false);\n\n useEffect(() => {\n const callback = ({ visible: modalVisible }) => {\n setHide(modalVisible);\n };\n\n setTimeout(() => setReady(true), 500);\n Event.subscribe(EVENT.MODAL_VISIBLE, callback);\n return () => Event.unsubscribe(EVENT.MODAL_VISIBLE, callback);\n }, []);\n\n useEffect(() => {\n if (!ready || focused) return;\n let inactivityTimer;\n\n const resetTimer = () => {\n clearTimeout(inactivityTimer);\n if (focused) return;\n inactivityTimer = setTimeout(() => {\n setFocus(true);\n clearTimeout(inactivityTimer);\n }, DELAY_WELCOME);\n };\n\n document.addEventListener('mousemove', resetTimer);\n document.addEventListener('scroll', resetTimer);\n\n resetTimer();\n\n return () => {\n clearTimeout(inactivityTimer.current);\n document.removeEventListener('mousemove', resetTimer);\n document.removeEventListener('scroll', resetTimer);\n };\n }, [ready]);\n\n useEffect(() => {\n if (focus) focused = true;\n }, [focus]);\n\n const position = determinePosition(assistant, isMobile);\n\n return (\n <View\n className={styles(style.buttonDispatcher, ready && !visible && !hide && style.visible, ...position.className)}\n style={position.style}\n >\n <View row className={styles(style.welcome, focus && !visible && style.visible)}>\n <View>\n <Text bold brand headline className={style.hi}>\n {`✦ ${translate(L10N.LABEL_HI)}${firstName ? `, ${firstName}` : ''}`}\n </Text>\n <Text markdown={false} medium>\n {translate(L10N.LABEL_GREETINGS, { name })}\n </Text>\n </View>\n {isMobile && (\n <Button icon=\"close\" small squared transparent onPress={() => setFocus(false)}>\n <Icon value={ICON.CLOSE} />\n </Button>\n )}\n </View>\n\n <Pressable onEnter={() => setFocus(true)} onLeave={() => setFocus(false)} onPress={onPress}>\n <Avatar disabled={visible} image={image} className={style.avatar} />\n </Pressable>\n </View>\n );\n};\n\nButtonDispatcher.displayName = 'Mirai:Core:Chat:ButtonDispatcher';\n\nButtonDispatcher.propTypes = {\n config: PropTypes.shape({\n bottom: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n image: PropTypes.string,\n left: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n name: PropTypes.string,\n right: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n top: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n }),\n visible: PropTypes.bool,\n onPress: PropTypes.func,\n};\n\nexport { ButtonDispatcher };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ButtonDispatcher.js","names":["_dataSources","require","_locale","_ui","_propTypes","_interopRequireDefault","_react","_interopRequireWildcard","_ButtonDispatcher","style","_helpers","_helpers2","_Chat","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DELAY_WELCOME","focused","ButtonDispatcher","_ref","settings","visible","onPress","isMobile","useDevice","translate","useLocale","value","session","firstName","useStore","ai","name","DEFAULT_NAME","web","avatar","focus","setFocus","useState","hide","setHide","ready","setReady","useEffect","callback","_ref2","modalVisible","setTimeout","Event","subscribe","EVENT","MODAL_VISIBLE","unsubscribe","inactivityTimer","resetTimer","clearTimeout","document","addEventListener","current","removeEventListener","position","determinePosition","createElement","View","className","styles","buttonDispatcher","row","welcome","Text","bold","brand","headline","hi","concat","L10N","LABEL_HI","markdown","medium","LABEL_GREETINGS","Button","icon","small","squared","transparent","Icon","ICON","CLOSE","Pressable","onEnter","onLeave","Avatar","disabled","image","exports","displayName","propTypes","PropTypes","shape","string","bottom","oneOfType","bool","number","bottomMobile","left","leftMobile","right","rightMobile","top","topMobile","func"],"sources":["../../../../../src/components/Chat/components/ButtonDispatcher/ButtonDispatcher.js"],"sourcesContent":["import { Event, useStore } from '@mirai/data-sources';\nimport { useLocale } from '@mirai/locale';\nimport { Avatar, Button, Icon, Pressable, styles, Text, useDevice, View } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\n\nimport { L10N } from './ButtonDispatcher.l10n';\nimport * as style from './ButtonDispatcher.module.css';\nimport { determinePosition } from './helpers';\nimport { EVENT, ICON } from '../../../helpers';\nimport { DEFAULT_NAME } from '../../Chat.constants';\n\nconst DELAY_WELCOME = 10000;\nlet focused = false;\n\nconst ButtonDispatcher = ({ settings, visible, onPress }) => {\n const { isMobile } = useDevice();\n const { translate } = useLocale();\n const { value: { session: { firstName } = {} } = {} } = useStore();\n const { ai: { name = DEFAULT_NAME } = {}, web: { avatar } = {} } = settings || {};\n\n const [focus, setFocus] = useState(false);\n const [hide, setHide] = useState(false);\n const [ready, setReady] = useState(false);\n\n useEffect(() => {\n const callback = ({ visible: modalVisible }) => {\n setHide(modalVisible);\n };\n\n setTimeout(() => setReady(true), 500);\n Event.subscribe(EVENT.MODAL_VISIBLE, callback);\n return () => Event.unsubscribe(EVENT.MODAL_VISIBLE, callback);\n }, []);\n\n useEffect(() => {\n if (!ready || focused) return;\n let inactivityTimer;\n\n const resetTimer = () => {\n clearTimeout(inactivityTimer);\n if (focused) return;\n inactivityTimer = setTimeout(() => {\n setFocus(true);\n clearTimeout(inactivityTimer);\n }, DELAY_WELCOME);\n };\n\n document.addEventListener('mousemove', resetTimer);\n document.addEventListener('scroll', resetTimer);\n\n resetTimer();\n\n return () => {\n clearTimeout(inactivityTimer.current);\n document.removeEventListener('mousemove', resetTimer);\n document.removeEventListener('scroll', resetTimer);\n };\n }, [ready]);\n\n useEffect(() => {\n if (focus) focused = true;\n }, [focus]);\n\n const position = determinePosition(settings?.web, isMobile);\n\n return (\n <View\n className={styles(style.buttonDispatcher, ready && !visible && !hide && style.visible, ...position.className)}\n style={position.style}\n >\n <View row className={styles(style.welcome, focus && !visible && style.visible)}>\n <View>\n <Text bold brand headline className={style.hi}>\n {`✦ ${translate(L10N.LABEL_HI)}${firstName ? `, ${firstName}` : ''}`}\n </Text>\n <Text markdown={false} medium>\n {translate(L10N.LABEL_GREETINGS, { name })}\n </Text>\n </View>\n {isMobile && (\n <Button icon=\"close\" small squared transparent onPress={() => setFocus(false)}>\n <Icon value={ICON.CLOSE} />\n </Button>\n )}\n </View>\n\n <Pressable onEnter={() => setFocus(true)} onLeave={() => setFocus(false)} onPress={onPress}>\n <Avatar disabled={visible} image={avatar} className={style.avatar} />\n </Pressable>\n </View>\n );\n};\n\nButtonDispatcher.displayName = 'Mirai:Core:Chat:ButtonDispatcher';\n\nButtonDispatcher.propTypes = {\n settings: PropTypes.shape({\n ai: PropTypes.shape({\n name: PropTypes.string,\n }),\n web: PropTypes.shape({\n avatar: PropTypes.string,\n bottom: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n bottomMobile: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n left: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n leftMobile: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n right: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n rightMobile: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n top: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n topMobile: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n }),\n }),\n visible: PropTypes.bool,\n onPress: PropTypes.func,\n};\n\nexport { ButtonDispatcher };\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,GAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAC,uBAAA,CAAAN,OAAA;AAEA,IAAAO,iBAAA,GAAAP,OAAA;AACA,IAAAQ,KAAA,GAAAF,uBAAA,CAAAN,OAAA;AACA,IAAAS,QAAA,GAAAT,OAAA;AACA,IAAAU,SAAA,GAAAV,OAAA;AACA,IAAAW,KAAA,GAAAX,OAAA;AAAoD,SAAAM,wBAAAM,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAR,uBAAA,YAAAA,CAAAM,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAT,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAK,UAAA,GAAAL,CAAA,KAAAU,OAAA,EAAAV,CAAA;AAEpD,MAAMmB,aAAa,GAAG,KAAK;AAC3B,IAAIC,OAAO,GAAG,KAAK;AAEnB,MAAMC,gBAAgB,GAAGC,IAAA,IAAoC;EAAA,IAAnC;IAAEC,QAAQ;IAAEC,OAAO;IAAEC;EAAQ,CAAC,GAAAH,IAAA;EACtD,MAAM;IAAEI;EAAS,CAAC,GAAG,IAAAC,aAAS,EAAC,CAAC;EAChC,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAC,iBAAS,EAAC,CAAC;EACjC,MAAM;IAAEC,KAAK,EAAE;MAAEC,OAAO,EAAE;QAAEC;MAAU,CAAC,GAAG,CAAC;IAAE,CAAC,GAAG,CAAC;EAAE,CAAC,GAAG,IAAAC,qBAAQ,EAAC,CAAC;EAClE,MAAM;IAAEC,EAAE,EAAE;MAAEC,IAAI,GAAGC;IAAa,CAAC,GAAG,CAAC,CAAC;IAAEC,GAAG,EAAE;MAAEC;IAAO,CAAC,GAAG,CAAC;EAAE,CAAC,GAAGf,QAAQ,IAAI,CAAC,CAAC;EAEjF,MAAM,CAACgB,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EACzC,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAG,IAAAF,eAAQ,EAAC,KAAK,CAAC;EACvC,MAAM,CAACG,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAJ,eAAQ,EAAC,KAAK,CAAC;EAEzC,IAAAK,gBAAS,EAAC,MAAM;IACd,MAAMC,QAAQ,GAAGC,KAAA,IAA+B;MAAA,IAA9B;QAAExB,OAAO,EAAEyB;MAAa,CAAC,GAAAD,KAAA;MACzCL,OAAO,CAACM,YAAY,CAAC;IACvB,CAAC;IAEDC,UAAU,CAAC,MAAML,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IACrCM,kBAAK,CAACC,SAAS,CAACC,eAAK,CAACC,aAAa,EAAEP,QAAQ,CAAC;IAC9C,OAAO,MAAMI,kBAAK,CAACI,WAAW,CAACF,eAAK,CAACC,aAAa,EAAEP,QAAQ,CAAC;EAC/D,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAD,gBAAS,EAAC,MAAM;IACd,IAAI,CAACF,KAAK,IAAIxB,OAAO,EAAE;IACvB,IAAIoC,eAAe;IAEnB,MAAMC,UAAU,GAAGA,CAAA,KAAM;MACvBC,YAAY,CAACF,eAAe,CAAC;MAC7B,IAAIpC,OAAO,EAAE;MACboC,eAAe,GAAGN,UAAU,CAAC,MAAM;QACjCV,QAAQ,CAAC,IAAI,CAAC;QACdkB,YAAY,CAACF,eAAe,CAAC;MAC/B,CAAC,EAAErC,aAAa,CAAC;IACnB,CAAC;IAEDwC,QAAQ,CAACC,gBAAgB,CAAC,WAAW,EAAEH,UAAU,CAAC;IAClDE,QAAQ,CAACC,gBAAgB,CAAC,QAAQ,EAAEH,UAAU,CAAC;IAE/CA,UAAU,CAAC,CAAC;IAEZ,OAAO,MAAM;MACXC,YAAY,CAACF,eAAe,CAACK,OAAO,CAAC;MACrCF,QAAQ,CAACG,mBAAmB,CAAC,WAAW,EAAEL,UAAU,CAAC;MACrDE,QAAQ,CAACG,mBAAmB,CAAC,QAAQ,EAAEL,UAAU,CAAC;IACpD,CAAC;EACH,CAAC,EAAE,CAACb,KAAK,CAAC,CAAC;EAEX,IAAAE,gBAAS,EAAC,MAAM;IACd,IAAIP,KAAK,EAAEnB,OAAO,GAAG,IAAI;EAC3B,CAAC,EAAE,CAACmB,KAAK,CAAC,CAAC;EAEX,MAAMwB,QAAQ,GAAG,IAAAC,0BAAiB,EAACzC,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEc,GAAG,EAAEX,QAAQ,CAAC;EAE3D,oBACEjC,MAAA,CAAAiB,OAAA,CAAAuD,aAAA,CAAC3E,GAAA,CAAA4E,IAAI;IACHC,SAAS,EAAE,IAAAC,UAAM,EAACxE,KAAK,CAACyE,gBAAgB,EAAEzB,KAAK,IAAI,CAACpB,OAAO,IAAI,CAACkB,IAAI,IAAI9C,KAAK,CAAC4B,OAAO,EAAE,GAAGuC,QAAQ,CAACI,SAAS,CAAE;IAC9GvE,KAAK,EAAEmE,QAAQ,CAACnE;EAAM,gBAEtBH,MAAA,CAAAiB,OAAA,CAAAuD,aAAA,CAAC3E,GAAA,CAAA4E,IAAI;IAACI,GAAG;IAACH,SAAS,EAAE,IAAAC,UAAM,EAACxE,KAAK,CAAC2E,OAAO,EAAEhC,KAAK,IAAI,CAACf,OAAO,IAAI5B,KAAK,CAAC4B,OAAO;EAAE,gBAC7E/B,MAAA,CAAAiB,OAAA,CAAAuD,aAAA,CAAC3E,GAAA,CAAA4E,IAAI,qBACHzE,MAAA,CAAAiB,OAAA,CAAAuD,aAAA,CAAC3E,GAAA,CAAAkF,IAAI;IAACC,IAAI;IAACC,KAAK;IAACC,QAAQ;IAACR,SAAS,EAAEvE,KAAK,CAACgF;EAAG,aAAAC,MAAA,CACtCjD,SAAS,CAACkD,sBAAI,CAACC,QAAQ,CAAC,EAAAF,MAAA,CAAG7C,SAAS,QAAA6C,MAAA,CAAQ7C,SAAS,IAAK,EAAE,CAC9D,CAAC,eACPvC,MAAA,CAAAiB,OAAA,CAAAuD,aAAA,CAAC3E,GAAA,CAAAkF,IAAI;IAACQ,QAAQ,EAAE,KAAM;IAACC,MAAM;EAAA,GAC1BrD,SAAS,CAACkD,sBAAI,CAACI,eAAe,EAAE;IAAE/C;EAAK,CAAC,CACrC,CACF,CAAC,EACNT,QAAQ,iBACPjC,MAAA,CAAAiB,OAAA,CAAAuD,aAAA,CAAC3E,GAAA,CAAA6F,MAAM;IAACC,IAAI,EAAC,OAAO;IAACC,KAAK;IAACC,OAAO;IAACC,WAAW;IAAC9D,OAAO,EAAEA,CAAA,KAAMe,QAAQ,CAAC,KAAK;EAAE,gBAC5E/C,MAAA,CAAAiB,OAAA,CAAAuD,aAAA,CAAC3E,GAAA,CAAAkG,IAAI;IAAC1D,KAAK,EAAE2D,cAAI,CAACC;EAAM,CAAE,CACpB,CAEN,CAAC,eAEPjG,MAAA,CAAAiB,OAAA,CAAAuD,aAAA,CAAC3E,GAAA,CAAAqG,SAAS;IAACC,OAAO,EAAEA,CAAA,KAAMpD,QAAQ,CAAC,IAAI,CAAE;IAACqD,OAAO,EAAEA,CAAA,KAAMrD,QAAQ,CAAC,KAAK,CAAE;IAACf,OAAO,EAAEA;EAAQ,gBACzFhC,MAAA,CAAAiB,OAAA,CAAAuD,aAAA,CAAC3E,GAAA,CAAAwG,MAAM;IAACC,QAAQ,EAAEvE,OAAQ;IAACwE,KAAK,EAAE1D,MAAO;IAAC6B,SAAS,EAAEvE,KAAK,CAAC0C;EAAO,CAAE,CAC3D,CACP,CAAC;AAEX,CAAC;AAAC2D,OAAA,CAAA5E,gBAAA,GAAAA,gBAAA;AAEFA,gBAAgB,CAAC6E,WAAW,GAAG,kCAAkC;AAEjE7E,gBAAgB,CAAC8E,SAAS,GAAG;EAC3B5E,QAAQ,EAAE6E,kBAAS,CAACC,KAAK,CAAC;IACxBnE,EAAE,EAAEkE,kBAAS,CAACC,KAAK,CAAC;MAClBlE,IAAI,EAAEiE,kBAAS,CAACE;IAClB,CAAC,CAAC;IACFjE,GAAG,EAAE+D,kBAAS,CAACC,KAAK,CAAC;MACnB/D,MAAM,EAAE8D,kBAAS,CAACE,MAAM;MACxBC,MAAM,EAAEH,kBAAS,CAACI,SAAS,CAAC,CAACJ,kBAAS,CAACK,IAAI,EAAEL,kBAAS,CAACM,MAAM,CAAC,CAAC;MAC/DC,YAAY,EAAEP,kBAAS,CAACI,SAAS,CAAC,CAACJ,kBAAS,CAACK,IAAI,EAAEL,kBAAS,CAACM,MAAM,CAAC,CAAC;MACrEE,IAAI,EAAER,kBAAS,CAACI,SAAS,CAAC,CAACJ,kBAAS,CAACK,IAAI,EAAEL,kBAAS,CAACM,MAAM,CAAC,CAAC;MAC7DG,UAAU,EAAET,kBAAS,CAACI,SAAS,CAAC,CAACJ,kBAAS,CAACK,IAAI,EAAEL,kBAAS,CAACM,MAAM,CAAC,CAAC;MACnEI,KAAK,EAAEV,kBAAS,CAACI,SAAS,CAAC,CAACJ,kBAAS,CAACK,IAAI,EAAEL,kBAAS,CAACM,MAAM,CAAC,CAAC;MAC9DK,WAAW,EAAEX,kBAAS,CAACI,SAAS,CAAC,CAACJ,kBAAS,CAACK,IAAI,EAAEL,kBAAS,CAACM,MAAM,CAAC,CAAC;MACpEM,GAAG,EAAEZ,kBAAS,CAACI,SAAS,CAAC,CAACJ,kBAAS,CAACK,IAAI,EAAEL,kBAAS,CAACM,MAAM,CAAC,CAAC;MAC5DO,SAAS,EAAEb,kBAAS,CAACI,SAAS,CAAC,CAACJ,kBAAS,CAACK,IAAI,EAAEL,kBAAS,CAACM,MAAM,CAAC;IACnE,CAAC;EACH,CAAC,CAAC;EACFlF,OAAO,EAAE4E,kBAAS,CAACK,IAAI;EACvBhF,OAAO,EAAE2E,kBAAS,CAACc;AACrB,CAAC","ignoreList":[]}
|
|
@@ -6,24 +6,44 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.determinePosition = void 0;
|
|
7
7
|
var style = _interopRequireWildcard(require("../ButtonDispatcher.module.css"));
|
|
8
8
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
9
|
-
const determinePosition = (
|
|
10
|
-
let {
|
|
11
|
-
|
|
12
|
-
mobilePosition = {}
|
|
13
|
-
} = _ref;
|
|
9
|
+
const determinePosition = function () {
|
|
10
|
+
let webSettings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
11
|
+
let isMobile = arguments.length > 1 ? arguments[1] : undefined;
|
|
14
12
|
const {
|
|
15
13
|
bottom,
|
|
16
14
|
left = false,
|
|
17
15
|
right,
|
|
18
|
-
top = false
|
|
19
|
-
|
|
16
|
+
top = false,
|
|
17
|
+
bottomMobile,
|
|
18
|
+
leftMobile = false,
|
|
19
|
+
rightMobile,
|
|
20
|
+
topMobile = false
|
|
21
|
+
} = webSettings;
|
|
22
|
+
const mobile = {
|
|
23
|
+
bottom: bottomMobile,
|
|
24
|
+
left: leftMobile,
|
|
25
|
+
right: rightMobile,
|
|
26
|
+
top: topMobile
|
|
27
|
+
};
|
|
28
|
+
const desktop = {
|
|
29
|
+
bottom,
|
|
30
|
+
left,
|
|
31
|
+
right,
|
|
32
|
+
top
|
|
33
|
+
};
|
|
34
|
+
const {
|
|
35
|
+
bottom: finalBottom,
|
|
36
|
+
left: finalLeft,
|
|
37
|
+
right: finalRight,
|
|
38
|
+
top: finalTop
|
|
39
|
+
} = isMobile ? mobile : desktop;
|
|
20
40
|
return {
|
|
21
|
-
className: [
|
|
41
|
+
className: [finalLeft ? style.left : style.right, finalTop ? style.top : style.bottom],
|
|
22
42
|
style: {
|
|
23
|
-
top:
|
|
24
|
-
bottom:
|
|
25
|
-
left:
|
|
26
|
-
right:
|
|
43
|
+
top: finalTop >= 1 ? finalTop : undefined,
|
|
44
|
+
bottom: finalBottom >= 1 ? finalBottom : undefined,
|
|
45
|
+
left: finalLeft >= 1 ? finalLeft : undefined,
|
|
46
|
+
right: finalRight >= 1 ? finalRight : undefined
|
|
27
47
|
}
|
|
28
48
|
};
|
|
29
49
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"determinePosition.js","names":["style","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","determinePosition","
|
|
1
|
+
{"version":3,"file":"determinePosition.js","names":["style","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","determinePosition","webSettings","arguments","length","undefined","isMobile","bottom","left","right","top","bottomMobile","leftMobile","rightMobile","topMobile","mobile","desktop","finalBottom","finalLeft","finalRight","finalTop","className","exports"],"sources":["../../../../../../src/components/Chat/components/ButtonDispatcher/helpers/determinePosition.js"],"sourcesContent":["import * as style from '../ButtonDispatcher.module.css';\n\nexport const determinePosition = (webSettings = {}, isMobile) => {\n const {\n bottom,\n left = false,\n right,\n top = false,\n bottomMobile,\n leftMobile = false,\n rightMobile,\n topMobile = false,\n } = webSettings;\n const mobile = { bottom: bottomMobile, left: leftMobile, right: rightMobile, top: topMobile };\n const desktop = { bottom, left, right, top };\n const { bottom: finalBottom, left: finalLeft, right: finalRight, top: finalTop } = isMobile ? mobile : desktop;\n\n return {\n className: [finalLeft ? style.left : style.right, finalTop ? style.top : style.bottom],\n style: {\n top: finalTop >= 1 ? finalTop : undefined,\n bottom: finalBottom >= 1 ? finalBottom : undefined,\n left: finalLeft >= 1 ? finalLeft : undefined,\n right: finalRight >= 1 ? finalRight : undefined,\n },\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAwD,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEjD,MAAMkB,iBAAiB,GAAG,SAAAA,CAAA,EAAgC;EAAA,IAA/BC,WAAW,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,IAAEG,QAAQ,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAC1D,MAAM;IACJE,MAAM;IACNC,IAAI,GAAG,KAAK;IACZC,KAAK;IACLC,GAAG,GAAG,KAAK;IACXC,YAAY;IACZC,UAAU,GAAG,KAAK;IAClBC,WAAW;IACXC,SAAS,GAAG;EACd,CAAC,GAAGZ,WAAW;EACf,MAAMa,MAAM,GAAG;IAAER,MAAM,EAAEI,YAAY;IAAEH,IAAI,EAAEI,UAAU;IAAEH,KAAK,EAAEI,WAAW;IAAEH,GAAG,EAAEI;EAAU,CAAC;EAC7F,MAAME,OAAO,GAAG;IAAET,MAAM;IAAEC,IAAI;IAAEC,KAAK;IAAEC;EAAI,CAAC;EAC5C,MAAM;IAAEH,MAAM,EAAEU,WAAW;IAAET,IAAI,EAAEU,SAAS;IAAET,KAAK,EAAEU,UAAU;IAAET,GAAG,EAAEU;EAAS,CAAC,GAAGd,QAAQ,GAAGS,MAAM,GAAGC,OAAO;EAE9G,OAAO;IACLK,SAAS,EAAE,CAACH,SAAS,GAAGvC,KAAK,CAAC6B,IAAI,GAAG7B,KAAK,CAAC8B,KAAK,EAAEW,QAAQ,GAAGzC,KAAK,CAAC+B,GAAG,GAAG/B,KAAK,CAAC4B,MAAM,CAAC;IACtF5B,KAAK,EAAE;MACL+B,GAAG,EAAEU,QAAQ,IAAI,CAAC,GAAGA,QAAQ,GAAGf,SAAS;MACzCE,MAAM,EAAEU,WAAW,IAAI,CAAC,GAAGA,WAAW,GAAGZ,SAAS;MAClDG,IAAI,EAAEU,SAAS,IAAI,CAAC,GAAGA,SAAS,GAAGb,SAAS;MAC5CI,KAAK,EAAEU,UAAU,IAAI,CAAC,GAAGA,UAAU,GAAGd;IACxC;EACF,CAAC;AACH,CAAC;AAACiB,OAAA,CAAArB,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|