1var e=Object.defineProperty,t=(t,a,o)=>(((t,a,o)=>{a in t?e(t,a,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[a]=o})(t,"symbol"!=typeof a?a+"":a,o),o);import{_ as a}from"./loading_text-c4684dbd.js";import{u as o}from"./character-92642c8a.js";import{e as s,f as n,g as l,d as r,o as i,y as u,t as c,l as d,c9 as v,m,ca as p,r as h,az as g,c as y,j as f,w as b,k,s as x,F as w,E as _,cb as S,p as M,n as T,u as C,a as I,q as P,X as A,a5 as N,a1 as j,i as D,cc as E,K as O,H as B,I as V,bx as F,cd as R,ce as z,aK as L,G as H,cf as U,aQ as Q,cg as $,U as q,aZ as J,b as K,R as W,ch as X,S as Y,a2 as G}from"./index-b25171b5.js";import{_ as Z}from"./canvas_home-ee0cc5dd.js";import{E as ee,v as te,$ as ae}from"./controller-aa1def94.js";import{a as oe,_ as se}from"./mic_on_svg-04c6f2ad.js";import{a as ne,_ as le,b as re,C as ie}from"./forward_svg2-c5770f8e.js";import{_ as ue}from"./plugin-vue_export-helper-1b428a4d.js";import{_ as ce}from"./lodash-c200b85d.js";import{_ as de}from"./blue_loading_circle-5ebcdbf9.js";import{a as ve,_ as me,C as pe}from"./chat-history-f13ef0aa.js";import{a as he}from"./router_controller-8f776b59.js";import{s as ge,p as ye}from"./tts-8a89173b.js";import{u as fe}from"./useWebSocket-3b0c6655.js";import{_ as be}from"./xunfei_vad-a27bf52d.js";import{g as ke,a as xe}from"./socket-connect-e7dcba0d.js";import{_ as we}from"./open_mic_tip-9af32ebd.js";import"./aigc-2eb3aff5.js";import"./index-3ee8d9b8.js";import"./mewod-10b9e961.js";import"./speaker_on_svg-a1f3aae6.js";import"./settings_svg-10d80c61.js";import"./index-877adbea.js";import"./v4-ba5d26a9.js";import"./__vite-browser-external-874befbc.js";import"./sha256-a33e07d1.js";import"./___vite-browser-external_commonjs-proxy-ec477302.js";const _e={},Se={xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor",class:"w-6 h-6"},Me=[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5.25 7.5A2.25 2.25 0 017.5 5.25h9a2.25 2.25 0 012.25 2.25v9a2.25 2.25 0 01-2.25 2.25h-9a2.25 2.25 0 01-2.25-2.25v-9z"},null,-1)];const Te=ue(_e,[["render",function(e,t){return s(),n("svg",Se,Me)}]]),Ce={class:"flex flex-row justify-between font-medium text-base mb-6"},Ie=l("span",null,"Tips",-1),Pe={class:"mb-4"},Ae={class:"flex flex-row space-x-2 absolute right-8 bottom-4"},Ne=r({__name:"modal_box",props:{message:{default:"",type:String},submitData:{default:null,type:Function}},emits:["close","showHistoryEvent"],setup(e,{emit:t}){const a=e,o=e=>{(e=e||window.event).stopPropagation?e.stopPropagation():e.cancelBubble=!0,t("close")},r=()=>{m(),he(p)};return i((()=>{})),(t,i)=>(s(),n("div",{class:"fixed left-0 top-0 z-20 w-full h-full flex items-center justify-center",style:{"background-color":"rgba(0, 0, 0, 0.2)"},onClick:o},[l("div",{onClick:i[1]||(i[1]=v((()=>{}),["stop"])),class:"w-[360px] h-[200px] bg-gray-700 rounded-lg text-gray-200 px-6 pt-4 pb-16 max-w-[90%] max-h-[80%] relative"},[l("div",Ce,[Ie,u(ve,{class:"cursor-pointer",onClick:o})]),l("div",Pe,c(e.message||"Please log in first."),1),e.message?d("",!0):(s(),n("button",{key:0,onClick:r,class:"meta-btn absolute right-4 bottom-4"}," Login ")),l("div",Ae,[e.message?(s(),n("button",{key:0,onClick:o,class:"meta-clean-btn"}," Cancel ")):d("",!0),e.message?(s(),n("button",{key:1,onClick:i[0]||(i[0]=(...e)=>a.submitData&&a.submitData(...e)),class:"meta-btn"}," Sure ")):d("",!0)])])]))}}),je=e=>(M("data-v-97769a58"),e=e(),T(),e),De={class:"font-medium flex flex-row justify-between"},Ee=je((()=>l("div",{class:"text-sm mt-4 mb-2"}," This will not share your conversation with others ",-1))),Oe={class:"flex justify-center space-x-6"},Be={class:"text-sm h-10 leading-10 rounded-lg bg-gray-600 px-3 text-ellipsis whitespace-nowrap overflow-hidden",style:{width:"calc(100% - 130px)"}},Ve={key:0,class:"mt-10"},Fe=je((()=>l("div",{class:"mb-2 font-medium"},"or Share this Conversation",-1))),Re={class:"flex flex-col space-y-4"},ze=ue(r({__name:"share",props:{characterInfo:{default:null,type:Object},user_id:{default:null,type:Number}},emits:["close","showHistoryEvent"],setup(e,{emit:t}){const a=e,r=o(),m=h(!1),{copy:p}
1=g(),M=h(""),T=h(0),C=h(""),I=h(!1),P=h(""),A=h(!1),N=e=>{(e=e||window.event).stopPropagation?e.stopPropagation():e.cancelBubble=!0,t("close")},j=()=>{const e={character_id:a.characterInfo.character_id,user_id:a.user_id+"",conversation_id:a.characterInfo.conversation_id,title:C.value,greeting:r.greeting,is_private:T.value+""};let t=localStorage.getItem("access_token")||"";S(e,t||"").then((e=>{1===e.code?(I.value=!0,M.value=P.value+"/post?id="+e.data.id):_.error("Something went wrong")})).catch((()=>{_.error("Something went wrong")}))};return i((()=>{m.value=!0,M.value=window.location.href,C.value="My chat with "+a.characterInfo.name,P.value=window.location.origin,(localStorage.getItem("access_token")||"")&&(A.value=!0)})),(e,a)=>{const o=y("el-option"),r=y("el-select");return s(),n(w,null,[A.value?d("",!0):(s(),f(Ne,{key:0,onClose:a[0]||(a[0]=e=>t("close"))})),A.value?(s(),n("div",{key:1,class:"fixed left-0 top-0 z-20 w-full h-full flex items-center justify-center",style:{"background-color":"rgba(0, 0, 0, 0.2)"},onClick:N},[l("div",{onClick:a[3]||(a[3]=v((()=>{}),["stop"])),class:x(["w-[600px] bg-gray-700 rounded-lg text-gray-200 p-5 pb-16 max-w-[90%] max-h-[80%] relative",I.value?"h-[250px]":"h-[340px]"])},[l("div",De,[l("span",null,c(I.value?"Submission successful":"Share Character"),1),l("span",{class:"cursor-pointer",onClick:N},[u(ve)])]),Ee,l("div",Oe,[l("div",Be,c(M.value),1),l("button",{class:"meta-btn",onClick:a[1]||(a[1]=e=>((e="")=>{p(e),_.success("Copied!")})(M.value))},"Copy Link")]),I.value?d("",!0):(s(),n("div",Ve,[Fe,l("div",Re,[u(r,{modelValue:T.value,"onUpdate:modelValue":a[2]||(a[2]=e=>T.value=e),placeholder:"Please select"},{default:b((()=>[u(o,{value:0,label:"Everyone can see"},{default:b((()=>[k("Everyone can see")])),_:1}),u(o,{value:1,label:"Only people with the post link can see"},{default:b((()=>[k("Only people with the post link can see")])),_:1})])),_:1},8,["modelValue"]),I.value?d("",!0):(s(),n("button",{key:0,onClick:j,class:"meta-btn w-48"}," Post Conversation! "))])]))],2)])):d("",!0)],64)}}}),[["__scopeId","data-v-97769a58"]]),Le={class:""},He=["onKeydown"],Ue=ue(r({__name:"websocket-chat-view",props:{startNPCTalking:{type:Function},startNPCSinging:{type:Function},stopNPCTalking:{type:Function},characterInfo:{},cameraToMe:{type:Function},cameraToNPC:{type:Function},cameraToDefault:{type:Function},startNPCMouthTalking:{type:Function},stopNPCMouthTalking:{type:Function},startMyMouthTalking:{type:Function},stopMyMouthTalking:{type:Function},startMeTalking:{type:Function},stopMeTalking:{type:Function},enableMic:{type:Boolean},enableSound:{type:Boolean},setAudio:{type:Function},enableBgm:{type:Boolean},enableAmbient:{type:Boolean},vad:{}},emits:["SendMessage"],setup(e,{expose:t,emit:a}){const r=e,v=o(),m=h(40),g=C(),{width:S,height:M}=I(),T=h(!1),Q=h(!1),$=h(1),q=h(""),J=h(""),K=h(!1),W=h(!1),X=h(!1),Y=h(!1),G=h({}),Z=h(!1),ue=h(!1),ve=h(!1);h();const he=h(""),fe=h(),xe=P((()=>S.value>600?"bottom-1 w-64 sm:w-[400px] rounded-3xl h-8 lg:h-12 left-1/2 -translate-x-1/2 mb-4 ":"bottom-0 left-0 right-0 h-12")),we=P((()=>S.value>600?"absolute right-[-72px] w-[62px] fixed flex flex-row justify-between items-center":A()?"absolute right-3 bottom-0 fixed flex flex-row justify-between items-center h-[36px] w-[28px] mobile-screen":"absolute right-3 bottom-[6px] fixed flex flex-row justify-between items-center h-[36px] w-[58px] mobile-screen")),_e=(e,t)=>{0===t?(Be(e?1:0),localStorage.setItem("enableSound",e?"1":"0")):r.setAudio(e,t)},Se=()=>{X.value=!0},Me=e=>{Y.value=!0,"share"==e&&(ue.value=!0)},Ce=()=>{ve.value=!1;let e=localStorage.getItem("access_token")||"";R({conversation_id:r.characterInfo.conversation_id},e||"").then((e=>{1===e.code&&(v.chatHistory={},g.currentRoomPromptList=[]),_.success("Removed!")})).catch((e=>{}))},Ie=()=>{ve.value=!0},Pe=()=>{Z.value=!0},Ae=()=>{X.value=!1},je=()=>{Y.value=!1},De=()=>{Z.value=!1,ue.value=!1},Ee=e=>{let t=localStorage.getItem("access_token")||"";if(!t)return e.forEach((e=>{delete v.chatHistory[e]})),void _.success("å 餿å");const a={items:[...e],character_id:r.characterInfo.character_id,user_id:v.userId,conversation_id:r.characterInfo.conversation_id};z(a,t||"").then((t=>{1===t.code?(_.success("å 餿å"),ue.value?(Z.value=!0,ue.value=!1,Y.value=!1):Y.value=!1,e.forEach((e=>{delete v.chatHistory[e]}))):(_.error("å é¤å¤±è´¥"),Y.value=!1)})).catch((()=>{_.error("å é¤å¤±è´¥"),Y.value=!1}))},Oe=()=>{J.value="",Je.value=!1,v.synthesizer&&($e(),r.stopNPCTalking(),r.cameraToDefault(),r.stopNPCMouthTalking(),ge())},Be=e=>{$.value=e,v.enableSound=!!e},Ve=e=>{v.enableMic=e},Fe=e=>{const t={...r.characterInfo};let a=t.voice_rate;t.voice_rate=a<=1?100*(a-.5)+"":50+50*(a-1)+"",localStorage.setItem("formInfo",JSON.stringify(t||{})),p.push(`character-create?step=${e}&id=${r.characterInfo.character_id}`)},Re=()=>{K.value=!1,v.enableMic=!1,r.stopMyMouthTalking(),r.stopMeTalking(),r.cameraToDefault()},Ue=(e,t,o)=>{var s;const n=Object.keys(v.chatHistory).length;if(g.userType==L.GUEST&&n>=7&&!Ze.value)return void p.push("/signup?guest=1");if(e&&e.preventDefault(),v.webSocketStatus!=E.CONNECTED)return void _.error("Please wait for the AI to start");let l=ce.trim(he.value);if("string"==typeof t&&t.length>0&&(l=t),""===l)return;if(Q.value)return;if(T.value)return void _.info("Please wait for the AI to finish speaking");v.isVadStarted=!1,fe.value&&(v.ttsTalking&&ge(),fe.value.turnOffMic());const r=Date.now();g.lastLobbyRobotMsgTime=r,ae(l),q.value=l,T.value=!0,Q.value=!0,Oe(),v.isVadStarted=!1;const i={message:l,voice_file:o||""},u=JSON.stringify(i);a("SendMessage",u),v.userContent=l,H((()=>{he.value="",m.value=40,Xe.value.focus()})),null==(s=v.aiAudioPlayer)||s.stopPlay()},Qe=()=>{r.startNPCTalking(),r.startNPCMouthTalking(),r.cameraToNPC()},$e=()=>{r.stopNPCMouthTalking(),r.stopNPCTalking(),r.cameraToDefault()},qe=()=>{Q.value=!1,T.value=!1,U.value||(v.isVadStarted=!0)};i((async()=>{v.enableMic=r.enableMic,$.value=r.enableSound?1:0,W.value=Object.keys(r.characterInfo).includes("long_description"),G.value={nickname:g.name,avatar:g.avatar,userid:v.userId},""!=v.greeting&&Ke()}));const Je=h(!1),Ke=()=>{Qe(),Q.value=!1,T.value=!1,J.value=v.greeting,v.aiAudioPlayer&&v.aiAudioPlayer.startPlay()},We=e=>{Qe(),((e,t,a=!0)=>{ye(e,r.characterInfo.voice_name,r.characterInfo.voice_pitch,r.characterInfo.voice_rate,r.characterInfo.voice_style,(e=>{t()}),a)})(e,(()=>{v.ttsTalking=!1,v.isVadStarted=!0,$e()}
1)),Q.value=!1,T.value=!1,J.value=e},Xe=h(),Ye=e=>{he.value=e,H((()=>{Xe.value.scrollLeft=Xe.value.scrollWidth,Xe.value.scrollTop=Xe.value.scrollHeight,Xe.value.focus()}))},Ge=h(!1);N((()=>{Ge.value=!0,ge()})),j((()=>v.isMicRecording),((e,t)=>{null!=t&&(e?(r.cameraToMe(),r.startMyMouthTalking(),r.startMeTalking()):(r.stopMyMouthTalking(),r.stopMeTalking(),r.cameraToDefault()))})),j((()=>v.isAudioInQueue),((e,t)=>{null!=t&&(e||$e())})),j((()=>v.greeting),((e,t)=>{null!=t&&""==t&&Ke()})),j(he,((e,t)=>{""!=e&&function(){if(!Xe.value)return;const e=Xe.value;e.style.height="auto";let t=Math.floor(e.scrollHeight/20);t>5?(t=5,e.style.overflowY="scroll"):e.style.overflowY="hidden";let a=20*t;m.value=a,e.style.height=a+"px"}()}),{immediate:!0});const Ze=P((()=>"shaoxing"==v.clientType));return t({submitForm:Ue,onSocketMessage:e=>{const t=JSON.parse(e);if(!t.code)return _.error("Something went wrong, please try again later"),$e(),void qe();const a=t.data;let o=a.content;if(a.status&&(v.webSocketStatus=+a.status),a.id>0?(v.chatHistory[a.id]={user_content:v.userContent,chat_content:o},qe()):0==a.id&&We(o),q.value="",a.stream){const e=a.stream;""==J.value&&Qe(),J.value+=e}}}),(e,t)=>{const a=y("Promotion"),o=y("el-icon");return s(),n(w,null,[l("div",Le,[Ze.value?d("",!0):(s(),f(ne,{key:0,characterInfo:r.characterInfo},null,8,["characterInfo"])),Ze.value?d("",!0):(s(),n("div",{key:1,class:"fixed right-10 top-0 mr-4 mt-6 cursor-pointer z-10 text-gray-300",onClick:Pe},[u(le)])),u(re,{onShowHistoryEvent:Me,onShowSettingEvent:Se,onChangeShowRemoveChat:Ie,canEdit:W.value,editStep:Fe},null,8,["canEdit"]),X.value?(s(),f(me,{key:2,speakerState:$.value,onOnTap:_e,onClose:Ae,enableBgm:e.enableBgm,enableAmbient:e.enableAmbient},null,8,["speakerState","enableBgm","enableAmbient"])):d("",!0),Y.value?(s(),f(pe,{key:3,onClose:je,characterInfo:r.characterInfo,userInfo:G.value,removeHistory:Ee,canEdit:!0},null,8,["characterInfo","userInfo"])):d("",!0),Z.value?(s(),f(ze,{key:4,onClose:De,user_id:D(v).userId,onShowHistoryEvent:Me,characterInfo:e.characterInfo},null,8,["user_id","characterInfo"])):d("",!0),D(v).webSocketStatus==D(E).CONNECTED&&""!=D(v).greeting?(s(),n("div",{key:5,id:"input-area",class:x(["fixed flex flex-row items-end flex-none pointer-events-auto z-10",D(ee)+" "+xe.value]),style:O({height:`${m.value}px`})},[Je.value?(s(),n("div",{key:0,onClick:Oe,class:"absolute top-[-50px] left-[50%] ml-[-64px] text-gray-600 bg-gray-300 rounded-lg flex flex-row items-center w-32 p-2 cursor-pointer"}
1,[u(Te),k(" Stop talking ")])):d("",!0),B(l("textarea",{"onUpdate:modelValue":t[0]||(t[0]=e=>he.value=e),onKeydown:F(Ue,["enter"]),ref_key:"messageInputRef",ref:Xe,type:"text",rows:"1",style:O({height:`${m.value}px`}),maxlength:"348",class:x(["message-input text-sm text-gray-100 resize-none custom-textarea",(D(g).chatroomDark?"placeholder-gray-300 ":"placeholder-gray-500 ")+(D(A)()?" w-[78%]":D(S)<600?" w-[70%]":" w-full")]),placeholder:"Send a message",onFocus:t[1]||(t[1]=e=>D(g).isTyping=!0),onBlur:t[2]||(t[2]=e=>D(g).isTyping=!1)},null,46,He),[[V,he.value]]),l("div",{class:x(["mr-4 mt-1 mb-1 ml-4 cursor-pointer",D(te)])},[Q.value||T.value?(s(),f(de,{key:1,class:"text-gray-200 mb-1",size:5})):(s(),f(o,{key:0,size:"large",onClick:Ue},{default:b((()=>[u(a)])),_:1}))],2),D(v).useXunfeiVad?(s(),n("div",{key:1,class:x([we.value,"mb-1"])},[u(be,{onOnVad:Ye,ref_key:"xunfeiVadRef",ref:fe},null,512)],2)):(s(),n("div",{key:2,class:x([we.value,""])},[D(v).enableMic&&//!isMobileScreen() && 2D(v).vadLoaded&&!D(v).isMicRecording?(s(),n("span",{key:0,class:x(["cursor-pointer",D(v).isVadStarted?"text-green-500":"text-gray-500"]),onClick:t[3]||(t[3]=e=>Ve(!1))},[u(oe,{size:D(S)<600?6:7},null,8,["size"])],2)):d("",!0),!D(v).enableMic&&//!isMobileScreen() && 3D(v).vadLoaded?(s(),n("span",{key:1,class:"cursor-pointer",onClick:t[4]||(t[4]=e=>Ve(!0))},[u(se,{size:D(S)<600?6:7},null,8,["size"])])):d("",!0),D(v).isMicRecording?(s(),n("span",{key:2,onClick:Re,class:"cursor-pointer"}
3,[u(oe,{class:"text-red-500 animate-pulse",size:6})])):d("",!0)],2))],6)):(s(),n("div",{key:6,class:x(["fixed flex flex-row items-center justify-center flex-none pointer-events-auto z-10 space-x-2",D(ee)+" "+xe.value]),style:O({height:`${m.value}px`})},[l("span",null,c(D(ke)),1),D(v).webSocketStatus==D(E).PAUSE||D(v).webSocketStatus==D(E).CONNECTED?(s(),f(de,{key:0,class:"text-gray-200",size:5})):d("",!0)],6))]),u(ie,{robotRef:J.value,meRef:q.value},null,8,["robotRef","meRef"]),ve.value?(s(),f(Ne,{key:0,message:"Are you sure you want to delete this conversation?",submitData:Ce,onClose:t[5]||(t[5]=e=>ve.value=!1)})):d("",!0)],64)}}}),[["__scopeId","data-v-59d71955"]]);function Qe(e,t,a){for(let o=0;o<a.length;o++)e.setUint8(t+o,a.charCodeAt(o))}const $e=r({__name:"vad_load",emits:["submit"],setup(e,{expose:t,emit:a}){const s=o(),n=h(),l=()=>{q("/ort/ort.js",(()=>{q("/ort/bundle.min.js",(async()=>{const e=window.vad;n.value=await e.MicVAD.new({onSpeechStart:()=>{},onSpeechEnd:e=>{s.isMicRecording=!1;let t=((e,t)=>{const a=new ArrayBuffer(44+2*e.length),o=new DataView(a);Qe(o,0,"RIFF"),o.setUint32(4,36+2*e.length,!0),Qe(o,8,"WAVE"),Qe(o,12,"fmt "),o.setUint32(16,16,!0),o.setUint16(20,1,!0),o.setUint16(22,1,!0),o.setUint32(24,t,!0),o.setUint32(28,2*t,!0),o.setUint16(32,2,!0),o.setUint16(34,16,!0),Qe(o,36,"data"),o.setUint32(40,2*e.length,!0);const s=new Int16Array(e.length);for(let l=0;l<e.length;l++){const t=Math.max(-1,Math.min(1,e[l]));s[l]=t<0?32768*t:32767*t}const n=new DataView(a,44);for(let l=0;l<s.length;l++)n.setInt16(2*l,s[l],!0);return a})(e,16e3),o=new Blob([t],{type:"audio/wav"});s.isVadStarted=!1,(async(e,t,a,o,s)=>{const n=new FormData;n.append("file",e),n.set("character_id",t+""),n.set("user_id",a+""),n.set("conversation_id",o+"");let l=localStorage.getItem("access_token");const r={"Content-Type":"multipart/form-data"};l&&(r.Authorization="Bearer "+l);try{s(await Q.post($+"voice",n,{headers:r}))}catch(i){_.error("è¯é³è½¬å失败ï¼è¯·ç¨åéè¯"),s(!1)}})(o,s.characterId,s.userId,s.conversationId,(e=>{e?a("submit",e.data.msg.text,e.data.msg.voice_file):s.isVadStarted=!0}))},onFrameProcessed:e=>{e.isSpeech>.5?(s.isMicRecording=!0,s.synthesizerFrameProcessed++,s.ttsTalking&&10==s.synthesizerFrameProcessed&&ge()):s.isMicRecording=!1},onVADMisfire:()=>{}})}))}))};i((()=>{l(),r()}));const r=async()=>{n.value?s.vadLoaded=!0:ce.delay(r,1e3)},u=async()=>{s.vadLoaded&&n.value.start()};return j((()=>s.enableMic),((e,t)=>{if(null!=t)if(e){if(!s.isVadStarted)return;u()}else n.value.pause()})),j((()=>s.isVadStarted),((e,t)=>{if(null!=t)if(e){if(!s.enableMic)return;if(U&&s.ttsTalking)return;u()}else n.value.pause()})),t({startVad:u}),(e,t)=>null}});class qe{constructor(e,a){t(this,"audioContext"),t(this,"playQueue"),t(this,"isPlaying"),t(this,"isPaused"),t(this,"updateSubtitle"),t(this,"currentSource"),t(this,"onComplete"),this.audioContext=new AudioContext,this.playQueue=[],this.isPlaying=!1,this.isPaused=!0,this.updateSubtitle=e,this.currentSource=null,this.onComplete=a}queueAudio(e,t,a){this.playQueue.push({base64AudioData:e,index:t,subtitle:a}),this.playQueue.sort(((e,t)=>e.index-t.index)),this.isPlaying||this.isPaused||this.checkAndPlay()}async checkAndPlay(){if(J(),this.isPlaying||0===this.playQueue.length||this.isPaused)return void(0!==this.playQueue.length||this.isPlaying||(this.updateSubtitle(""),this.onComplete()));this.isPlaying=!0;const{base64AudioData:e,subtitle:t}=this.playQueue.shift();this.updateSubtitle(t),await this.playAudio(e)}async playAudio(e){J();const t=this.base64ToArrayBuffer(e);try{const e=await this.audioContext.decodeAudioData(t),a=this.audioContext.createBufferSource();a.buffer=e,a.connect(this.audioContext.destination),a.start(0),this.currentSource=a,await new Promise((e=>a.onended=e)),this.isPlaying=!1,this.currentSource=null,this.isPaused||this.checkAndPlay()}catch(a){this.isPlaying=!1,this.currentSource=null,this.isPaused||this.checkAndPlay()}}startPlay(){this.isPaused=!1,!this.isPlaying&&this.playQueue.length>0&&this.checkAndPlay()}stopPlay(){this.playQueue=[],this.updateSubtitle(""),this.currentSource&&(this.currentSource.stop(),this.currentSource=null),this.isPlaying=!1}base64ToArrayBuffer(e){const t=window.atob(e),a=t.length,o=new Uint8Array(a);for(let s=0;s<a;s++)o[s]=t.charCodeAt(s);return o.buffer}}const Je=r({__name:"socket-connect",props:{characterInfo:{}},emits:["onSocketMessage"],setup(e,{expose:t,emit:a}){const s=e,n=o();n.aiAudioPlayer=new qe((e=>{}),(()=>{n.isAudioInQueue=!1})),n.characterId=s.characterInfo.character_id,n.conversationId=s.characterInfo.conversation_id,n.npcVoiceName=s.characterInfo.voice_name,n.npcVoiceStyle=s.characterInfo.voice_style;const l=h(!1);let r="chat",u=null;s.characterInfo.type&&""!=s.characterInfo.type&&(r="interview",u=s.characterInfo.type),n.userId=+(localStorage.getItem("userid")||"0");const c=xe(r,n.userId,n.conversationId,n.characterId,u),{sendMessage:d,connect:v,disconnect:m}=fe((e=>{const t=JSON.parse(e);t.code&&t.data&&0==t.data.id?n.greeting=t.data.content:t.code&&t.data&&"audio"==t.data.type?(n.aiAudioPlayer.queueAudio(t.data.content.audio,1,t.data.content.text),n.isAudioInQueue=!0):a("onSocketMessage",e)}),(()=>{n.webSocketStatus=E.CONNECTED}),(()=>
3{l.value=!1,n.webSocketStatus!=E.END&&(n.webSocketStatus=E.DISCONNECTED,ce.delay((()=>{v(c+"&reconnect=1")}),5e3))}),(e=>{}));return i((()=>{v(c)})),N((()=>{m()})),t({sendMessage:d}),(e,t)=>null}}),Ke=r({__name:"character_chat",setup(e){const t=o(),l=C(),r=K(),u=h(),c=h(),v=h({}),m=h(!1),p=h(!1),g=h(""),y=h(""),b=h(""),k=h(0),x=h(!0),S=h(!0),M=W({me:"",npc:"",skybox:""}),T=h(!0),I=h(),A=(e,t)=>{1==t?(S.value=e,localStorage.setItem("enableBgm",e?"1":"0")):(x.value=e,localStorage.setItem("enableAmbient",e?"1":"0"))};r.currentRoute.value.query.client&&(t.clientType=r.currentRoute.value.query.client),i((()=>{document.documentElement.classList.add("dark"),M.me="",M.skybox="",T.value="1"===localStorage.getItem("enableSound")||!localStorage.getItem("enableSound");let e=localStorage.getItem("access_token")||"";const a=r.currentRoute.value.query.id;let o=r.currentRoute.value.query.c;if(!a)return void r.push({path:"/"});o||(o="0");X({character_id:a,conversation_id:o},e).then((e=>{var a,o,s,n;if(1===e.code){t.ttsToken=JSON.parse(e.data.tts_token),localStorage.setItem("ttstoken",e.data.tts_token),v.value=e.data,M.npc=e.data.readyplayerme_id,p.value=!0,g.value=(null==(a=e.data)?void 0:a.world_ambient_name)||"",y.value=(null==(o=e.data)?void 0:o.world_bgm_name)||"",b.value=(null==(s=e.data)?void 0:s.world_skybox)||"",k.value=(null==(n=e.data)?void 0:n.world_particle_id)||0,M.skybox=b.value;const r=+(localStorage.getItem("sex")||0);if(e.data.user_readyplayer_id?M.me=e.data.user_readyplayer_id:r===Y.MALE?M.me="mewod-649e369d788d4b23797ab352":M.me="mewod-649e378512a3f1019d5ed3a5",e.data.user_type&&(l.userType=e.data.user_type),e.data.conversation_history){e.data.conversation_history.forEac
3h((e=>{t.chatHistory[e.id]={user_content:e.user_content,chat_content:e.character_content}}))}}else r.push({path:"/"})})).catch((function(e){_.error("Something went wrong, please try again later.")}))}));const N=h("Loading metaverse ..."),E=e=>{e>0&&(N.value=`Loading metaverse ... ${e}%`),m.value=e>=100},O=(e,a)=>{t.isAgreedMicTips=!0,t.enableMic=e,T.value=a,localStorage.setItem("enableSound",a?"1":"0")},B=P((()=>m.value&&p.value&&t.isAgreedMicTips));j((()=>B.value),((e,t)=>{null!=t&&e&&H((()=>{var e;null==(e=u.value)||e.playMusic((()=>{S.value="1"===localStorage.getItem("enableBgm")||!localStorage.getItem("enableBgm")}),(()=>{x.value="1"===localStorage.getItem("enableAmbient")||!localStorage.getItem("enableAmbient")}))}))})),j((()=>S.value),((e,t)=>{y.value&&H((()=>{var t,a;e?null==(t=u.value)||t.playBgm():null==(a=u.value)||a.pauseBgm()}))})),j((()=>x.value),((e,t)=>{var a,o;g.value&&(e?null==(a=u.value)||a.playAmbient():null==(o=u.value)||o.pauseAmbient())}));const V=h(),F=(e,t)=>{V.value&&V.value.submitForm(null,e,t)};return(e,o)=>{var l,r,i,h,b,_,C,P,j,R,z,L,H,U;return s(),n(w,null,[p.value?D(t).isAgreedMicTips?d("",!0):(s(),f(we,{key:1,onOnTap:O})):(s(),f(a,{key:0,"loading-text":"Loading character info ..."})),D(t).isAgreedMicTips&&!m.value?(s(),f(a,{key:2,"loading-text":N.value},null,8,["loading-text"])):d("",!0),p.value?(s(),f(Z,{key:3,onLoaded:E,ref_key:"canvasHome",ref:u,skybox:M.skybox?`/metaverse/skybox/ai/${M.skybox}.jpg`:"",me:M.me?-1==M.me.indexOf("mewod-")?`https://api.readyplayer.me/v1/avatars/${M.me}.glb?useDracoMeshCompression=true&textureAtlas=256&textureSizeLimit=256&meshLod=2&morphTargets=mouthSmile,mouthOpen,eyesClosed`:`/metaverse/avatar/glb/mewod/${M.me}.glb`:"/metaverse/avatar/glb/62a2b0461e270d2d0b50ad9a.glb",npc:M.npc?-1==M.npc.indexOf("mewod-")?`https://api.readyplayer.me/v1/avatars/${M.npc}.glb?useDracoMeshCompression=true&textureAtlas=256&textureSizeLimit=256&meshLod=2&morphTargets=mouthSmile,mouthOpen,eyesClosed`:`/metaverse/avatar/glb/mewod/${M.npc}.glb`:"/metaverse/avatar/glb/648806c44e7fe89b29a55a38.glb",particle:k.value||D(G).NONE,bgm:y.value,ambient:g.value,environment:null==(l=v.value)?void 0:l.world_environment},null,8,["skybox","me","npc","particle","bgm","ambient","environment"])):d("",!0),B.value?(s(),f(Ue,{key:4,ref_key:"chatViewRef",ref:V,startNPCTalking:null==(r=u.value)?void 0:r.startNPCTalking,stopNPCTalking:null==(i=u.value)?void 0:i.stopNPCTalking,characterInfo:v.value,cameraToNPC:null==(h=u.value)?void 0:h.cameraToNPC,cameraToMe:null==(b=u.value)?void 0:b.cameraToMe,cameraToDefault:null==(_=u.value)?void 0:_.cameraToDefault,startMyMouthTalking:null==(C=u.value)?void 0:C.startMyMouthTalking,stopMyMouthTalking:null==(P=u.value)?void 0:P.stopMyMouthTalking,startNPCMouthTalking:null==(j=u.value)?void 0:j.startNPCMouthTalking,startNPCSinging:null==(R=u.value)?void 0:R.startNPCSinging,stopNPCMouthTalking:null==(z=u.value)?void 0:z.stopNPCMouthTalking,startMeTalking:null==(L=u.value)?void 0:L.startMeTalking,stopMeTalking:null==(H=u.value)?void 0:H.stopMeTalking,enableMic:D(t).enableMic,enableSound:T.value,setAudio:A,enableBgm:S.value,enableAmbient:x.value,vad:I.value,onSendMessage:c.value.sendMessage},null,8,["startNPCTalking","stopNPCTalking","characterInfo","cameraToNPC","cameraToMe","cameraToDefault","startMyMouthTalking","stopMyMouthTalking","startNPCMouthTalking","startNPCSinging","stopNPCMouthTalking","startMeTalking","stopMeTalking","enableMic","enableSound","enableBgm","enableAmbient","vad","onSendMessage"])):d("",!0),D(t).useXunfeiVad?d("",!0):(s(),f($e,{key:5,ref_key:"vadRef",ref:I,onSubmit:F},null,512)),p.value?(s(),f(Je,{key:6,characterInfo:v.value,onOnSocketMessage:null==(U=V.value)?void 0:U.onSocketMessage,ref_key:"socketConnect",ref:c},null,8,["characterInfo","onOnSocketMessage"])):d("",!0)],64)}}});export{Ke as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.