import{_ as e}from"./index.ALv0mc0f.js";import{u as t,l as a,j as n,F as s,aa as l,an as i,a4 as r,ab as o,i as u,ah as d,g as c,S as v,a2 as g,x as m,a8 as p}from"./vue-vendor.CbU-cCHr.js";import{r as f,b8 as h,l as b,as as I}from"./index.DHkYopKB.js";import{g as y,S,a as N}from"./client.CDpkd6RQ.js";const _={class:"smart-reply-list"},w=["onClick"],E={class:"smart-reply-text"},T=f(t({__name:"SmartReplyList",props:{items:{default:()=>[]},loading:{type:Boolean,default:!1}},emits:["select"],setup(t,{emit:v}){const g=t,m=v,p=c(()=>g.items||[]);return(c,v)=>{const g=e;return r(),a("div",_,[t.loading?(r(),n(g,{key:0})):(r(!0),a(s,{key:1},l(i(p),(e,t)=>(r(),a("button",{key:`${t}-${e}`,type:"button",class:"smart-reply-item",onClick:t=>(e=>{const t=String(e||"").trim();t&&m("select",t)})(e)},[o(c.$slots,"prefix",{item:e},void 0,!0),u("span",E,d(e),1),o(c.$slots,"suffix",{item:e},void 0,!0)],8,w))),128))])}}}),[["__scopeId","data-v-f15cbd24"]]),k=e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"),x=e=>`<span class="dim">${k(e)}</span>`,M=[{pattern:/\r\n|\r|\n/g,render:()=>"<br>"},{pattern:/\*\*\*\*([\s\S]+?)\*\*\*\*/g,render:e=>`<strong><em>${k(e[1]||"")}</em></strong>`},{pattern:/\*\*([\s\S]+?)\*\*/g,render:e=>`<strong>${k(e[1]||"")}</strong>`},{pattern:/(^|[^A-Za-z0-9])'([^'\r\n]+)'(?![A-Za-z0-9])/g,render:e=>`${k(e[1]||"")}<em>${k(e[2]||"")}</em>`},{pattern:/\(([^()\r\n]+)\)/g,render:e=>`<em>${k(e[1]||"")}</em>`},{pattern:/"([^"\r\n]+)"/g,render:e=>k(e[1]||"")},{pattern:/\[([^\]\r\n]+)\]/g,render:e=>x(e[1]||"")},{pattern:/【([^】\r\n]+)】/g,render:e=>x(e[1]||"")}],$=/<\/?(?:em|strong)\s*>|<span\s+class=(["'])dim\1\s*>|<\/span\s*>|<br\s*\/?>/gi,R=(e,t)=>{let a=((e,t)=>{$.lastIndex=t;const a=$.exec(e);if(!a)return null;const n=(s=a[0],/^<em\s*>$/i.test(s)?"<em>":/^<\/em\s*>$/i.test(s)?"</em>":/^<strong\s*>$/i.test(s)?"<strong>":/^<\/strong\s*>$/i.test(s)?"</strong>":/^<br\s*\/?>$/i.test(s)?"<br>":/^<span\s+class=(["'])dim\1\s*>$/i.test(s)?'<span class="dim">':/^<\/span\s*>$/i.test(s)?"</span>":null);var s;return n?{index:a.index,length:a[0].length,html:n,priority:0}:null})(e,t);return M.forEach((n,s)=>{n.pattern.lastIndex=t;const l=n.pattern.exec(e);var i,r;l&&(i=a,r={index:l.index,length:l[0].length,html:n.render(l),priority:s+1},a=!i||r.index<i.index||r.index===i.index&&r.priority<i.priority?r:i)}),a},U=e=>(e=>{let t=0,a="";for(;t<e.length;){const n=R(e,t);if(!n){a+=k(e.slice(t));break}a+=k(e.slice(t,n.index)),a+=n.html,t=n.index+n.length}return a})(String(e??"")),A=["innerHTML"],C=f(t({__name:"index",props:{content:{}},setup(e){const t=e,n=c(()=>U(t.content));return(e,t)=>(r(),a("span",{class:"chat-rich-text",innerHTML:n.value},null,8,A))}}),[["__scopeId","data-v-a8520ff6"]]),D=f(t({__name:"index",props:{variant:{default:"interact"}},setup:e=>(t,n)=>(r(),a("div",{class:v(["chat-typing-indicator",`chat-typing-indicator--${e.variant}`])},[...n[0]||(n[0]=[u("div",{class:"chat-typing-indicator__content"},[u("span",{class:"chat-typing-indicator__dot"}),u("span",{class:"chat-typing-indicator__dot"}),u("span",{class:"chat-typing-indicator__dot"})],-1)])],2))}),[["__scopeId","data-v-ef8f9abc"]]),L=new Map,O=new Map;async function P(e,t=3e4){const a=L.get(e);if(a)return a;let n=O.get(e);return n||(n=(async()=>{const a=new AbortController,n=setTimeout(()=>a.abort(),t);try{const t=await fetch(e,{signal:a.signal});if(!t.ok)throw new Error(`Failed to fetch video: ${t.status}`);const n=await t.blob(),s=URL.createObjectURL(n);return L.set(e,s),s}finally{clearTimeout(n),O.delete(e)}})(),O.set(e,n),n)}function H(e){for(const[t,a]of L)if(a===e){L.delete(t);break}URL.revokeObjectURL(e)}function F(){for(const e of L.values())URL.revokeObjectURL(e);L.clear(),O.clear()}function j(e){return e.startsWith("blob:")}const q=1e3,G=500,K=2e3,X=3e4,Y=2e3,V=3e5,z=20,B=50,W=500,Z=1e4;function J(e){const{botId:t,onNewMessages:a,onStatusChange:n,onGoldCoinsUpdate:s,onGreetingTrigger:l,onHotpointUpdate:i,onStageVideoParse:r,onFloatingNotice:o,onError:u,onIntimacyReset:d,onPullSignals:v}=e,f=(["1","true","on"].includes(String("false").trim().toLowerCase()),y()),_=p(null),w=p(0),E=p("idle"),T=p(!1),k=p(0),x=p(0),M=p(!1),$=p(!1),R=p([]),U=p([]),A=p(!1);let C=null;const D=c(()=>{if(!T.value)return Y;if(Date.now()-x.value>=X)return K;const e=q+k.value*G;return Math.min(e,K)}),L=e=>{switch(e.code){case N.MSG_NEW:{const a=e.data,n=Number((null==a?void 0:a.botId)??0),s=Number((null==a?void 0:a.msgType)??0),l=String((null==a?void 0:a.messageId)||"").trim(),i=String((null==a?void 0:a.interactionType)||"").trim(),r=String((null==a?void 0:a.interactionName)||"").trim();if(n!==t||!l)break;if(!(13!==s||i&&r))break;R.value.push(l);break}case N.STATUS_CHANGE:{const a=e.data;if((null==a?void 0:a.botId)===t&&(null==a?void 0:a.status)){const e=a.status;e!==E.value&&(E.value=e,n(e))}break}case N.STAGE_VIDEO_PARSE:{const a=e.data,n=Number((null==a?void 0:a.botId)??0),s=Number((null==a?void 0:a.msgType)??0),l=Number((null==a?void 0:a.sourceType)??0),i=String((null==a?void 0:a.videoUrl)||"").trim(),o=String((null==a?void 0:a.audioUrl)||"").trim(),u=null==a?void 0:a.isInserted;e.code,e.seq,n===t&&13===s&&2===l&&(i||o)&&"boolean"==typeof u&&(null==r||r({...a,signalSeq:e.seq,videoUrl:i||void 0,audioUrl:o||void 0}));break}case N.HOTPOINT_UPDATE:{const a=e.data;if(Number((null==a?void 0:a.botId)??0)!==t)break;const n=Number((null==a?void 0:a.hotpoint)??(null==a?void 0:a.heatValue)??NaN);Number.isFinite(n)&&n>=0&&(null==i||i(n));break}case N.FLOATING_NOTICE:{const a=e.data,n=Number((null==a?void 0:a.botId)??0);if(n!==t)break;const s=String((null==a?void 0:a.userName)??"").trim(),l=String((null==a?void 0:a.giftName)??"").trim(),i=String((null==a?void 0:a.interactionName)??"").trim(),r=String((null==a?void 0:a.announcementText)??"").trim();if(!l||!i||!r)break;null==o||o({botId:n,userName:s,giftName:l,interactionName:i,announcementText:r,scene:String((null==a?void 0:a.scene)??"").trim()||void 0,sessionId:String((null==a?void 0:a.sessionId)??"").trim()||void 0});break}case N.GOLD_COINS_UPDATE:{const t=e.data,a=Number((null==t?void 0:t.currentBalance)??NaN);Number.isFinite(a)&&a>=0&&(null==s||s(a,t));break}case N.SYS_NOTIFY:case N.SYS_KICK:break;case N.INTIMACY_RESET:null==d||d(e.data)}},O=function(e,t){const a=!!m(),{interval:n,immediate:s=!0,pauseOnHidden:l=!0}=t,i=p(!1),r=p(null),o=p(n),u=p(!1),d=p(!1),c=p(!1),v=()=>{i.value&&(r.value=window.setTimeout(f,o.value))},f=async()=>{if(i.value&&!d.value){d.value=!0;try{await e()}catch(t){}finally{d.value=!1}if(i.value)return c.value?(c.value=!1,void f()):void v()}},h=()=>{i.value||(i.value=!0,c.value=!1,s?f():v())},b=()=>{i.value=!1,c.value=!1,null!==r.value&&(clearTimeout(r.value),r.value=null)},I=()=>{if(document.hidden)return u.value=i.value,void(i.value&&b());u.value&&!i.value&&h()};return l&&(document.addEventListener("visibilitychange",I),a&&g(()=>{document.removeEventListener("visibilitychange",I)})),a&&g(b),{isPolling:i,currentInterval:o,start:h,stop:b,setInterval:e=>{o.value=e},triggerNow:async()=>{i.value&&(d.value?c.value=!0:(null!==r.value&&(clearTimeout(r.value),r.value=null),await f()))}}}(async()=>{try{const t=U.value.length>0?[...U.value]:void 0,n=!A.value,i=await S.pullSignals(w.value>0?w.value:void 0,z,t,n);if(n&&i.success&&(A.value=!0),t&&i.success&&(U.value=[]),!i.success){if(888===i.code||887===i.code){if(888===i.code)try{return await h(),void O.setInterval(Y)}catch(e){return(null==e?void 0:e.code)===b.REFRESH_TOKEN_EXPIRED?(O.stop(),void(null==u||u(new Error("AUTH_EXPIRED")))):void O.setInterval(Y)}return await I(!1),O.stop(),void(null==u||u(new Error("AUTH_EXPIRED")))}return void O.setInterval(Y)}const r=i.signals||[];null==v||v(r,i),r.length>0&&(r.length,r.map(e=>e.code),i.hasMore,w.value),R.value=[];for(const e of r)L(e),e.seq>w.value&&(w.value=e.seq),e.seq&&U.value.push(e.seq);if(U.value.length>=B)return void O.triggerNow();if(R.value.length>0&&await(async t=>{var n;if(0!==t.length&&!$.value){$.value=!0;try{const e=await S.fetchMessages(t);if(e.success&&(null==(n=e.data)?void 0:n.messages)){const t=e.data.messages;if(t.length>0){const e=t[t.length-1];e.id&&(_.value=e.id),a(t),void 0!==e.goldCoins&&s&&s(e.goldCoins)}}}catch(e){null==u||u(e)}finally{$.value=!1}}})(R.value),T.value){k.value++;if(Date.now()-x.value>=V)return null==l||l(),void H();if("idle"===E.value&&R.value.length>0)return void H()}if(i.hasMore)return void O.triggerNow();O.setInterval(D.value)}catch(e){if((null==e?void 0:e.code)===b.REFRESH_TOKEN_EXPIRED)return O.stop(),void(null==u||u(e));null==u||u(e),O.isPolling.value&&O.setInterval(Y)}},{interval:Y,immediate:!0,pauseOnHidden:!0}),P=()=>{T.value=!0,k.value=0,x.value=Date.now(),O.setInterval(q)},H=()=>{T.value=!1,k.value=0,O.setInterval(Y)};return{botStatus:E,isActive:T,lastMsgId:_,deviceId:f,isPolling:O.isPolling,start:O.start,stop:O.stop,sendMessage:async(e,a=1,n)=>{var s;const l=`${Date.now()}-${(null==(s=crypto.randomUUID)?void 0:s.call(crypto))||Math.random().toString(36).substr(2,9)}`,i=await S.sendMessage(t,e,a,l,n);if(!i.success)throw new Error(i.errMsg||"Send message failed");P(),O.triggerNow();const r=i.data||{};return{messageId:r.messageId||"",taskId:r.taskId||"",status:r.status||"",clientMsgId:l}},setActiveMode:P,setIdleMode:H,setGiftMode:()=>{C&&(clearTimeout(C),C=null),T.value=!0,k.value=0,x.value=Date.now(),O.setInterval(W),C=setTimeout(()=>{C=null,H()},Z)},initLastMsgId:e=>{_.value=e},syncNewMessages:async()=>{var e;if(!M.value){M.value=!0;try{const n=await S.syncMessages(t,_.value||void 0,20);if(_.value,n.success&&(null==(e=n.data)?void 0:e.messages)){const e=n.data.messages;if(e.length>0){n.data.lastMsgId&&(_.value=n.data.lastMsgId),a(e);const t=e[e.length-1];void 0!==t.goldCoins&&s&&s(t.goldCoins)}}}catch(n){null==u||u(n)}finally{M.value=!1}}},ackRead:async e=>{try{await S.ackRead(t,e||_.value||void 0,Math.floor(Date.now()/1e3))}catch(a){}},reset:()=>{C&&(clearTimeout(C),C=null),_.value=null,w.value=0,E.value="idle",T.value=!1,k.value=0,x.value=0,R.value=[],U.value=[],A.value=!1,O.setInterval(Y)},flushAndStop:()=>{if(U.value.length>0){const e=[...U.value];U.value=[],S.pullSignals(w.value>0?w.value:void 0,1,e,!1).catch(()=>{})}O.stop()}}}export{C,T as S,D as a,F as c,P as f,j as i,H as r,J as u};