k2-im 0.1.40 → 0.1.42

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.
@@ -1871,6 +1871,8 @@ interface ImThreadSurfaceState {
1871
1871
  entryUnreadNavigation?: ConversationHandleSnapshot['entryUnreadNavigation'];
1872
1872
  /** handle 首次快照是否已经可用。 */
1873
1873
  ready: boolean;
1874
+ /** 宿主已发起、尚未完成 DOM 定位的消息;等待搜索页面返回时也暂停首屏吸底和自动跟随。 */
1875
+ pendingLocationMessageId?: string;
1874
1876
  /** 当前是否正在执行窗口操作。 */
1875
1877
  loading: boolean;
1876
1878
  /** 更早历史分页是否正在执行;未提供时由 Surface 使用 loading 兼容旧宿主。 */
@@ -1 +1 @@
1
- import {h,C,p,i,q,m,z,B,o,j,g}from'./chunk-CVLKJADF.js';import {f,h as h$2,i as i$1,g as g$1}from'./chunk-PPXQWMHO.js';import'./chunk-HE3QXYNQ.js';import'./chunk-YNYTR73D.js';import'./chunk-J77L6JLQ.js';import'./chunk-WOT6VMZA.js';import {defineComponent,h as h$1,ref,provide,watch,nextTick,onMounted,onBeforeUnmount,computed,inject,isVNode,cloneVNode,Fragment,reactive}from'vue';function $t(t){let i=0,p=0;for(let u of t)u.kind==="video"?p+=1:i+=1;return {imageCount:i,videoCount:p}}function Xt(t){return {systemMessage:i=>i.body.system!==void 0?g$1(i.body.system,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):"",mediaPlaceholder:i=>i$1(i.contentType,{locale:t.locale(),durationMs:i.body.voice?.durationMs,stickerImageType:i.body.sticker?.imageType,gameType:i.body.game?.gameType,callKind:i.body.call?.callKind,...i.body.filesAlbum===void 0?{}:{filesAlbum:{count:i.body.filesAlbum.items.length,caption:i.body.filesAlbum.caption}},...i.body.mediaAlbum===void 0?{}:{mediaAlbum:$t(i.body.mediaAlbum.items)}}),lastMessage:i=>i.lastMessageSummary!==void 0?h$2(i.lastMessageSummary,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):i.lastMessagePreview,failureText:i=>i.failure?.displayCode!==void 0?f(i.failure.displayCode,{locale:t.locale(),mediaKind:i.failure.mediaKind,params:i.failure.params}):i.failure?.message??""}}var Ct=Symbol("ImThreadReadActions");function Nt(t){provide(Ct,t);}function Zt(){return inject(Ct,void 0)}var rt=defineComponent({name:"ImThreadBodySwitch",inheritAttrs:false,props:{message:{type:Object,required:true},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup(t,{attrs:i,slots:p}){return Nt(t.readActions),()=>{let u=h(t.message),m=t.rendererRegistry.resolve(u);return m!==void 0?h$1(m,{...i,message:t.message,presentation:t.presentation}):p["unsupported-body"]!==void 0?p["unsupported-body"]({kind:u,message:t.message}):h$1("span",{"data-im-thread-unsupported-body":u,"aria-hidden":"true"})}}});var ot=Symbol("ImThreadViewportRegistration");function Ht(){return inject(ot,void 0)}var it=defineComponent({name:"ImThreadItems",props:{items:{type:Array,required:true},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup(t,{slots:i}){let p=Ht();function u(o,v){let B=Array.isArray(v)?v:[v];return B.length===1&&isVNode(B[0])?cloneVNode(B[0],{key:o}):h$1(Fragment,{key:o},B)}function m(o){return v=>{p?.registerMessageNode(o,v instanceof HTMLElement?v:null);}}function N(o,v){return B=>{p?.registerDateNode(o,v,B instanceof HTMLElement?B:null);}}function j(o){return i.encryption?.({item:o})??h$1("div",{"data-im-thread-encryption":o.key})}function h(o){let v=N(o.key,o.label);return i["date-separator"]?.({item:o,setElement:v})??h$1("div",{ref:v,"data-im-thread-date-separator":o.key},o.label)}function P(o){p?.registerEntryUnreadNode(o instanceof HTMLElement?o:null);}function T(o){return i["entry-unread"]?.({item:o,setElement:P})??h$1("div",{ref:P,"data-im-thread-entry-unread":o.key,...o.count===void 0?{}:{"data-count":String(o.count)}})}function O(o){let v=m(o.message.id);return i.item!==void 0?i.item({item:o,setElement:v}):i.message!==void 0?i.message({item:o,setElement:v}):o.message.deletedForEveryone!==void 0?i["deleted-message"]?.({item:o,setElement:v})??h$1("article",{ref:v,"data-im-thread-message-id":o.message.id,"data-im-thread-message-terminal":"deleted-for-everyone"},[h$1("span",{"data-im-thread-anchor-point":""})]):o.message.recalled!==void 0?i["recalled-message"]?.({item:o,setElement:v})??h$1("article",{ref:v,"data-im-thread-message-id":o.message.id,"data-im-thread-message-terminal":"recalled"},[h$1("span",{"data-im-thread-anchor-point":""})]):o.kind==="system"&&i.system!==void 0?i.system({item:o,setElement:v}):h$1("article",{ref:v,"data-im-thread-message-id":o.message.id,"data-first-of-run":o.kind==="message"?String(o.firstOfRun):void 0},[h$1("span",{"data-im-thread-anchor-point":""}),h$1(rt,{message:o.message,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{"unsupported-body":i["unsupported-body"]===void 0?void 0:B=>i["unsupported-body"]?.(B)})])}return ()=>h$1("div",{"data-im-thread-items":""},t.items.map(o=>{switch(o.kind){case "encryption":return i.item!==void 0?u(o.key,i.item({item:o})):u(o.key,j(o));case "date-separator":return i.item!==void 0?u(o.key,i.item({item:o,setElement:N(o.key,o.label)})):u(o.key,h(o));case "entry-unread":return i.item!==void 0?u(o.key,i.item({item:o,setElement:P})):u(o.key,T(o));case "system":case "message":return u(o.key,O(o))}return o}))}});var Ft=120,fn=500,Ue=.5,mn=8;function at(t){let i=t.ownerDocument.defaultView?.devicePixelRatio;return 1+1/(i!==void 0&&Number.isFinite(i)&&i>0?i:1)}var st=defineComponent({name:"ImThreadViewport",props:{messageIds:{type:Array,required:true},contentKey:{type:String,default:""},loadingOlder:{type:Boolean,default:false},hasNewer:{type:Boolean,default:false},loadingNewer:{type:Boolean,default:false},followThreshold:{type:Number,default:120},olderPrefetchThreshold:{type:Number,default:120},followNewMessages:{type:Boolean,default:true},shouldFollowAppendedMessage:{type:Function,default:void 0},visibleMargin:{type:Number,default:8},resizeFollowEnabled:{type:Boolean,default:true},activeDateOffset:{type:Number,default:16},activeDateEnabled:{type:Boolean,default:false}},emits:{"reach-start":()=>true,"reach-end":()=>true,"visible-range":t=>true,settled:t=>true,"new-message-count":t=>true,"user-scroll":()=>true,"active-date-change":t=>true},setup(t,{emit:i,expose:p$1,slots:u}){let m$1=ref(null),N=ref(null),j$1=new Map,h,P=new Map,T=new Set,O=new Map,o$1=0,v=[],B$1,S,E,k,$=false,W,Q=new Set,G=false,U,Z="",ie=1,z$1=false,ne=false,H=true,K=false,te=false,re=false,X=0,s=-1,ae=-1,Y,L,ee,V,C$1,f=ref(true),I=ref(0),y=C(e=>{I.value=e,i("new-message-count",e);});function D(e){let r=Number.isFinite(t.followThreshold)?Math.max(0,t.followThreshold):0;return e.scrollHeight-e.clientHeight-e.scrollTop<=r}function b(e=t.messageIds){return e.flatMap(r=>{let a=j$1.get(r);if(a===void 0)return [];let g=a.getBoundingClientRect(),M=a.querySelector("[data-im-thread-anchor-point]");return [{id:r,top:g.top,bottom:g.bottom,anchorTop:M?.getBoundingClientRect().top??g.top}]})}function J(e="",r=1){let a=Math.min(1,Math.max(0,r));Z!==""&&Z!==e&&O.get(Z)?.element.style.removeProperty("opacity"),Z=e,ie=a,e!==""&&O.get(e)?.element.style.setProperty("opacity",String(a));}function A(){J();}function q$1(){let e=m$1.value;if(G||e===null||!t.activeDateEnabled)return;let r=[...O.entries()].filter(([,_])=>e.contains(_.element)).map(([_,x])=>{let le=x.element.getBoundingClientRect();return {key:_,label:x.label,top:le.top,height:le.height}}).sort((_,x)=>_.top-x.top),a=e.getBoundingClientRect(),g$1=r.find(_=>_.height>0)?.height??28,M=g({markers:r,viewportTop:a.top,overlayTop:Number.isFinite(t.activeDateOffset)?Math.max(0,t.activeDateOffset):0,overlayHeight:g$1});if(M===null){A(),i("active-date-change",null);return}J(M.inlineDateKey,M.inlineOpacity),i("active-date-change",M);}function We(e){S={scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,width:e.clientWidth,height:e.clientHeight};}function Ve(e){let r=S;if(r===void 0)return false;let a=Math.max(0,e.scrollHeight-e.clientHeight);return a<r.scrollHeight-r.height&&r.scrollTop>a&&Math.abs(e.scrollTop-a)<=at(e)}function Qe(e){return Ve(e)||U!==void 0&&(U.behavior==="smooth"||Math.abs(e.scrollTop-U.targetTop)<=at(e))?0:e.scrollTop-o$1}function Ge(e,r){r!==0&&(o$1=e.scrollTop-r,U=void 0,Ke());}function ze(e,r){let a=Qe(e);if(V!==void 0)return V.expectedOffset-=a,qe(),Ge(e,a),K||He(),false;let g=S;if(g===void 0)return false;let M=B$1,_=M===void 0?void 0:b([M.id])[0],x=e.scrollTop-g.scrollTop,le=Ve(e)?0:x,be=M===void 0||_===void 0?0:(_.anchorTop??_.top)-r.top-M.offset+x;return g.scrollHeight!==e.scrollHeight||g.width!==e.clientWidth||g.height!==e.clientHeight||Math.abs(be)>Ue?(S=void 0,!z$1&&!t.loadingNewer&&!t.hasNewer&&t.resizeFollowEnabled&&f.value&&Math.abs(le)<=Ue?(Fe(),true):(M!==void 0&&ge({...M,offset:M.offset-le}),Ge(e,a),false)):false}function Ce(){let e=m$1.value;if(G||e===null)return;let r=e.getBoundingClientRect();if(ze(e,r))return;let a=k!==void 0&&$?t.messageIds.filter(x=>T.has(x)):t.messageIds,g=b(a);if(k!==void 0&&$&&g.length===0){f.value=D(e);return}let M=g.filter(x=>B({viewportTop:r.top,viewportBottom:r.bottom,messageTop:x.top,messageBottom:x.bottom,margin:t.visibleMargin})).map(x=>x.id),_=M.length!==v.length||M.some((x,le)=>v[le]!==x);v=Object.freeze(M),B$1=o(g,{top:r.top,bottom:r.bottom}),We(e),y.acknowledgeVisible(M),f.value=D(e),_&&i("visible-range",v),i("settled",{visibleMessageIds:v,...v.length===0?{}:{newestVisibleMessageId:v[v.length-1]},isAtBottom:f.value,newMessageCount:I.value});}function ce(e){if(Q.add(e),W!==void 0)return;let r=()=>{W=void 0;let a=[...Q];Q.clear(),a.forEach(g=>g());};typeof globalThis.requestAnimationFrame=="function"?W=globalThis.requestAnimationFrame(r):W=globalThis.setTimeout(r,0);}function _e(){W!==void 0&&(typeof W=="number"&&typeof globalThis.cancelAnimationFrame=="function"?globalThis.cancelAnimationFrame(W):globalThis.clearTimeout(W),W=void 0,Q.clear());}function pe(){ce(Ce);}function Ze(){let e=m$1.value;if(e===null)return;let r=e.getBoundingClientRect(),a=o(b(),{top:r.top,bottom:r.bottom});a!==void 0&&(B$1=a,We(e));}function Ye(){return H&&V===void 0&&!ne&&!t.loadingOlder}function je(){Ze(),H=false,s=X,ne=true,i("reach-start"),ce(()=>{t.loadingOlder||(ne=false);});}function oe(e){return t.hasNewer&&!z$1&&!t.loadingOlder&&!t.loadingNewer&&D(e)}function Ne(){z$1=true,f.value=false,ae=X,i("reach-end"),ce(()=>{t.loadingNewer||(z$1=false);});}function ke(){let e=m$1.value;e===null||X===ae||!oe(e)||Ne();}function Ke(){let e=m$1.value;if(G||e===null)return;let r=e.scrollTop,a=Ve(e),g=U,M=false;if(g!==void 0){let x=Math.abs(r-g.targetTop)<=at(e);M=g.behavior==="smooth"||x,(g.behavior!=="smooth"||x)&&(U=void 0);}!M&&!a&&!K&&V===void 0&&r!==o$1&&(K=true,te=true,X+=1);let _=K&&!M&&!a&&r!==o$1;if(_&&(i("user-scroll"),ce(q$1)),K&&!re&&l(),!H&&te&&X!==s&&r<o$1&&r>Pe()&&(H=true),V!==void 0&&!M)if(K){let x=se();x!==void 0&&(V.expectedOffset=x);}else qe(),He();Ye()&&_&&r>=0&&m({previousScrollTop:o$1,currentScrollTop:r,topThreshold:t.olderPrefetchThreshold})&&je(),_&&oe(e)&&z({previousScrollTop:o$1,currentScrollTop:r,isAtBottom:D(e),isHistoryWindow:t.hasNewer,isPageSettling:M})&&Ne(),o$1=r,pe();}function Me(e,r="auto"){U={targetTop:e,behavior:r};}function Re(e){let r=V,a=N.value;if(!(r===void 0||a===null)){if(r.visualOffset=Math.abs(e)<=Ue?0:e,r.visualOffset===0){a.style.removeProperty("transform"),a.style.removeProperty("will-change");return}a.style.setProperty("transform",`translate3d(0, ${r.visualOffset}px, 0)`),a.style.setProperty("will-change","transform");}}function ye(){C$1!==void 0&&(clearTimeout(C$1),C$1=void 0),V!==void 0&&V.visualOffset!==0&&(B$1=void 0,S=void 0);let e=N.value;e?.style.removeProperty("transform"),e?.style.removeProperty("will-change"),V=void 0,U=void 0;}function se(){let e=m$1.value,r=V;if(e===null||r===void 0)return;let a=b().find(g=>g.id===r.anchor.id);if(a!==void 0)return (a.anchorTop??a.top)-e.getBoundingClientRect().top}function qe(){let e=V,r=se();if(e===void 0||r===void 0)return;let a=e.expectedOffset-r;Math.abs(a)<=Ue||(Re(e.visualOffset+a),e.committed=false,e.attempts=0);}function Te(){C$1!==void 0&&clearTimeout(C$1),C$1=setTimeout(()=>{C$1=void 0,!(K||V?.committed!==true)&&ye();},fn);}function Se(){let e=m$1.value,r=V;if(G||e===null||r===void 0||K)return;let a=r.visualOffset;if(Math.abs(a)<=Ue){r.committed=true,Te();return}let g=Math.max(0,e.scrollHeight-e.clientHeight),M=Math.min(g,Math.max(0,e.scrollTop-a));if(Me(M),e.scrollTop=M,Math.abs(e.scrollTop-M)>Ue){U=void 0,r.committed=false,r.attempts+=1,r.attempts<mn?He():(ye(),U=void 0,o$1=e.scrollTop);return}Re(0),o$1=e.scrollTop,r.expectedOffset=se()??r.expectedOffset,r.committed=true,r.attempts=0,Te();}function He(){C$1!==void 0&&clearTimeout(C$1),C$1=setTimeout(()=>{C$1=void 0,Se();},Ft);}function Le(e){e!==void 0&&(V===void 0&&(V={anchor:e,expectedOffset:e.offset,visualOffset:0,committed:false,attempts:0}),qe(),!K&&Se());}function ge(e){let r=m$1.value;if(r===null||e===void 0)return;let a=r.getBoundingClientRect(),g=q(e,b(),{top:a.top,bottom:a.bottom});if(g!==void 0){let M=Math.max(0,r.scrollHeight-r.clientHeight),_=Math.min(M,Math.max(0,r.scrollTop+g));Me(_),r.scrollTop=_,o$1=r.scrollTop,S=void 0;}}function Pe(){return Number.isFinite(t.olderPrefetchThreshold)?Math.max(0,t.olderPrefetchThreshold):0}function De(){U?.behavior==="smooth"&&(U=void 0),te=false,K||(K=true,X+=1),Y!==void 0&&(clearTimeout(Y),Y=void 0);}function xe(){let e=m$1.value;e===null||X===s||(V!==void 0&&ye(),H=true,e.scrollTop<=Pe()&&Ye()&&je());}function n(){B$1=void 0,S=void 0,Y!==void 0&&(clearTimeout(Y),Y=void 0),ye(),K=false,te=false,re=false,L=void 0,ee=void 0,X+=1,s=-1,ae=-1,H=true,ne=false,z$1=false,U=void 0;}function d(){re||(Y!==void 0&&(clearTimeout(Y),Y=void 0),K=false,te=false,V!==void 0&&(V.attempts=0),Se());}function l(){re||(Y!==void 0&&clearTimeout(Y),Y=setTimeout(()=>{Y=void 0,d();},Ft));}function c(){U=void 0,d();}function w(e){re=true,De(),L=e.touches?.[0]?.clientY;}function R(e){let r=e.touches?.[0]?.clientY;r!==void 0&&(L!==void 0&&r>L?xe():L!==void 0&&r<L&&ke(),L=r);}function F(){re=false,L=void 0,l();}function ve(e){De(),e.deltaY<0?xe():e.deltaY>0&&ke(),l();}function he(e){e.pointerType!=="touch"&&(De(),ee=e.clientY,l());}function Ee(e){e.pointerType==="touch"||!K||ee===void 0||(e.clientY<ee?xe():e.clientY>ee&&ke(),ee=e.clientY,l());}function fe(e){e.pointerType!=="touch"&&(ee=void 0,l());}function Oe(e){["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(e.key)&&(De(),e.key==="ArrowUp"||e.key==="PageUp"||e.key==="Home"||e.key===" "&&e.shiftKey?xe():ke(),l());}function Fe(e="auto"){let r=m$1.value;if(r===null)return;S=void 0,ye();let a=Math.max(0,r.scrollHeight-r.clientHeight);Me(a,e),r.scrollTo?.({top:a,behavior:e}),r.scrollTop!==a&&(r.scrollTop=a),o$1=r.scrollTop,y.clear(),Ce();}function gt(){let e=m$1.value;return e!==null&&e.clientWidth>0&&e.clientHeight>0}function Ut(){let e=m$1.value;return gt()&&e!==null&&e.scrollHeight>e.clientHeight+1}function _t(e,r={}){return vt(j$1.get(e),r)}function vt(e,r){let a=m$1.value;if(a===null||e===void 0||!a.contains(e)||a.clientHeight<=0)return false;ye();let g=a.getBoundingClientRect(),M=e.getBoundingClientRect(),_=r.block??"center",x;_==="start"?x=a.scrollTop+M.top-g.top:_==="end"?x=a.scrollTop+M.bottom-g.bottom:_==="nearest"?M.top>=g.top&&M.bottom<=g.bottom?x=a.scrollTop:M.top<g.top?x=a.scrollTop+M.top-g.top:x=a.scrollTop+M.bottom-g.bottom:x=j({currentScrollTop:a.scrollTop,scrollHeight:a.scrollHeight,targetHeight:M.height,targetTop:M.top,viewportHeight:a.clientHeight,viewportTop:g.top});let le=Math.max(0,a.scrollHeight-a.clientHeight),be=Math.min(le,Math.max(0,x));S=void 0;let Be=r.behavior??"auto";return Me(be,Be),a.scrollTo?.({top:be,behavior:Be}),a.scrollTop!==be&&(a.scrollTop=be),o$1=a.scrollTop,Ce(),true}function jt(){let e=m$1.value;if(e===null||h===void 0||!e.contains(h)||e.clientHeight<=0)return null;let r=h.getBoundingClientRect(),a=e.scrollTop+r.top-e.getBoundingClientRect().top+r.height/2,g=e.clientHeight/2;return {older:a<g-1,newer:e.scrollHeight-a<g-1}}function Kt(){y.clear();}function qt(){z$1=true,f.value=false;}function Wt(){z$1=false,pe();}function Gt(e,r){let a=j$1.get(e);if(a!==void 0&&a!==r&&(k?.unobserve(a),E?.unobserve?.(a),P.delete(a),T.delete(e)),r===null){j$1.delete(e),T.delete(e);return}j$1.set(e,r),P.set(r,e),k?.observe(r),E?.observe(r),pe();}function zt(e,r,a){let g=O.get(e);if(a===null){O.delete(e);return}O.set(e,{element:a,label:r}),Z===e&&a.style.setProperty("opacity",String(ie)),g?.element!==a&&(a.dataset.imThreadDateSeparator=e);}return provide(ot,{registerMessageNode:Gt,registerDateNode:zt,registerEntryUnreadNode:e=>{h=e??void 0;}}),watch(()=>t.contentKey,(e,r)=>{if(e===r)return;n();let a=m$1.value;a!==null&&(o$1=a.scrollTop);},{flush:"sync"}),watch(()=>t.messageIds,async(e,r)=>{let a=m$1.value;if(a===null)return;let g=new Set(r);r.length>0&&e.length>0&&!e.some(Ae=>g.has(Ae))&&n();let _=a.getBoundingClientRect(),x=p(B$1,b(),{top:_.top,bottom:_.bottom}),le=f.value,be=r[r.length-1],Be=be===void 0?-1:e.indexOf(be),et=Be<0?[]:e.slice(Be+1).filter(Ae=>!g.has(Ae)),ht=z$1||t.loadingNewer,Yt=e.length===r.length&&e.every(Ae=>g.has(Ae))&&e.some((Ae,tt)=>Ae!==r[tt]);if(await nextTick(),G)return;if(Yt&&le&&t.followNewMessages&&t.resizeFollowEnabled&&!t.hasNewer&&!ht){Fe();return}let pt=r[0];if(pt!==void 0&&e.indexOf(pt)>0&&(ne=false,Le(x)),et.length>0){if(ht){z$1=false,V===void 0&&ge(x),f.value=false,pe();return}(le||et.some(tt=>t.shouldFollowAppendedMessage?.(tt)===true))&&t.followNewMessages?Fe():y.add(et);}pe();},{flush:"pre"}),watch(()=>t.loadingNewer,(e,r)=>{e||!r||!z$1||ce(()=>{t.loadingNewer||(z$1=false);});},{flush:"pre"}),watch(()=>t.loadingOlder,(e,r)=>{e||!r||!ne||ce(()=>{t.loadingOlder||(ne=false);});},{flush:"pre"}),onMounted(()=>{let e=m$1.value;if(e!==null){if(o$1=e.scrollTop,e.addEventListener("scroll",Ke,{passive:true}),e.addEventListener("scrollend",c,{passive:true}),e.addEventListener("touchstart",w,{passive:true}),e.addEventListener("touchmove",R,{passive:true}),e.addEventListener("touchend",F,{passive:true}),e.addEventListener("touchcancel",F,{passive:true}),e.addEventListener("wheel",ve,{passive:true}),e.addEventListener("pointerdown",he,{passive:true}),e.addEventListener("pointermove",Ee,{passive:true}),e.addEventListener("pointerup",fe,{passive:true}),e.addEventListener("pointercancel",fe,{passive:true}),e.addEventListener("keydown",Oe),typeof globalThis.ResizeObserver=="function"){E=new globalThis.ResizeObserver(()=>{G||m$1.value===null||Ce();}),E.observe(e),N.value!==null&&E.observe(N.value);for(let r of j$1.values())E.observe(r);}if(typeof globalThis.IntersectionObserver=="function"){k=new globalThis.IntersectionObserver(r=>{for(let a of r){let g=P.get(a.target);g!==void 0&&(a.isIntersecting?T.add(g):T.delete(g));}$=true,pe();},{root:e,rootMargin:`${Number.isFinite(t.visibleMargin)?Math.max(0,t.visibleMargin):0}px 0px`});for(let r of j$1.values())k.observe(r);}pe();}}),onBeforeUnmount(()=>{G=true;let e=m$1.value;e!==null&&e.removeEventListener("scroll",Ke),e!==null&&(e.removeEventListener("scrollend",c),e.removeEventListener("touchstart",w),e.removeEventListener("touchmove",R),e.removeEventListener("touchend",F),e.removeEventListener("touchcancel",F),e.removeEventListener("wheel",ve),e.removeEventListener("pointerdown",he),e.removeEventListener("pointermove",Ee),e.removeEventListener("pointerup",fe),e.removeEventListener("pointercancel",fe),e.removeEventListener("keydown",Oe)),Y!==void 0&&clearTimeout(Y),ye(),_e(),E?.disconnect(),k?.disconnect(),A(),h=void 0,j$1.clear(),P.clear(),T.clear(),O.clear(),y.clear();}),p$1({getViewportElement:()=>m$1.value,clearNewMessageBadge:Kt,clearActiveDate:A,isAtBottom:computed(()=>f.value),isMeasurable:gt,isScrollable:Ut,newMessageCount:computed(()=>I.value),prepareHistoryPageAppend:qt,cancelHistoryPageAppend:Wt,trackRemoteMessageIds:(e,r)=>y.trackRemote(e,r),scrollToLatest:Fe,scrollToMessage:_t,scrollToEntryUnread:()=>vt(h,{block:"center",behavior:"auto"}),getEntryUnreadCenteringNeeds:jt,focusViewport:()=>m$1.value?.focus({preventScroll:true})}),()=>h$1("div",{ref:m$1,"data-im-thread-viewport":"",role:"log",tabindex:-1},[h$1("div",{ref:N,"data-im-thread-viewport-content":""},u.default?.())])}});var Bt=Symbol("ImThreadSurfaceContext");function hn(t){if(typeof t.getState!="function")throw new TypeError("ImThreadSurfaceContext.getState \u5FC5\u987B\u662F\u51FD\u6570");if(typeof t.actions?.loadOlder!="function")throw new TypeError("ImThreadSurfaceContext.actions.loadOlder \u5FC5\u987B\u662F\u51FD\u6570");if(typeof t.formatDate!="function")throw new TypeError("ImThreadSurfaceContext.formatDate \u5FC5\u987B\u662F\u51FD\u6570");return Object.freeze({...t,actions:Object.freeze({...t.actions})})}function pn(t){provide(Bt,t);}function lt(){let t=inject(Bt);if(t===void 0)throw new Error("ImThreadSurface \u9700\u8981\u663E\u5F0F context prop \u6216 provideImThreadSurfaceContext");return t}var ut=Object.freeze({followThreshold:120,olderPrefetchThreshold:120,visibleReadDelay:300,visibleMargin:8,activeDateOffset:16,activeDateIdleDelay:1500}),ct=Object.freeze({enabled:true,maxFillPages:8}),bn=8,In=160;function wn(t,i){return t?.conversationType===i.conversationType&&t.conversationId===i.conversationId}var Mn=defineComponent({name:"ImThreadSurface",props:{conversation:{type:Object,required:true},context:{type:Object,default:void 0},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0},viewportOptions:{type:Object,default:()=>({})},initialViewportOptions:{type:Object,default:()=>({})},hooks:{type:Object,default:void 0}},setup(t,{expose:i$1,slots:p}){let u=t.context??lt(),m=ref(null),N=ref(0),j=ref(false),h=ref(false),P,T,O=ref(false),o=ref(false),v=ref(false),B=false,S,E=ref(true),k=[],$,W=0,Q=0,G=null,U="",Z="",ie="",z=false,ne=false,H=ref(false),K=ref(""),te=ref(false),re,X,s=computed(()=>u.getState()),ae=computed(()=>s.value.pageVisible??u.isPageVisible?.()??true),Y=computed(()=>s.value.pageEngaged??u.isPageEngaged?.()??true),L=computed(()=>wn(s.value.activeConversation,t.conversation)),ee=computed(()=>({...ut,...t.viewportOptions})),V=computed(()=>{let n=t.initialViewportOptions.maxFillPages??ct.maxFillPages;return {enabled:t.initialViewportOptions.enabled??ct.enabled,maxFillPages:Number.isFinite(n)?Math.max(0,Math.floor(n)):ct.maxFillPages}}),C=computed(()=>!L.value||!s.value.ready?"":`${t.conversation.conversationType}\0${t.conversation.conversationId}`),f=computed(()=>L.value?i({messages:s.value.messages,entryUnread:s.value.entryUnread,formatDate:u.formatDate,leadingItems:u.leadingItems?.(),beforeMessageItems:u.beforeMessageItems}):[]),I=computed(()=>f.value.flatMap(n=>n.kind==="message"||n.kind==="system"?[n.message.id]:[]));function y(){re!==void 0&&(clearTimeout(re),re=void 0),X!==void 0&&(clearTimeout(X),X=void 0);}function D(n=false){if(y(),te.value=false,n){m.value?.clearActiveDate(),K.value="";return}X=setTimeout(()=>{X=void 0,!te.value&&(m.value?.clearActiveDate(),K.value="");},In);}function b(n){if(n===null){D();return}y(),K.value=n.label,te.value=true;let d=ee.value.activeDateIdleDelay,l=Number.isFinite(d)?Math.max(0,d):ut.activeDateIdleDelay;re=setTimeout(()=>{re=void 0,D();},l);}async function J(n,d,l){t.hooks?.beforeAction?.(n);try{let c=await d();return l?.()!==!1&&t.hooks?.afterAction?.(n,c),c}catch(c){throw l?.()!==false&&t.hooks?.onError?.(n,c),c}}function A(n="automatic",d){return !L.value||s.value.loading||!s.value.hasOlder?Promise.resolve(0):J({kind:"load-older",source:n},()=>u.actions.loadOlder(),d)}function q(){return We()}function We(n){let d=u.actions.loadNewer,l=s.value.loadingNewer??s.value.loading;return !L.value||l||!s.value.hasNewer||d===void 0?Promise.resolve(0):J({kind:"load-newer"},()=>d(),n)}async function Ve(n){for(let d=0;d<bn;d+=1){if(!L.value)return;let l=n==="older"?s.value.hasOlder:s.value.hasNewer,c=n==="older"?s.value.olderError:s.value.newerError;if(!l||c!==null||(n==="older"?await A("user-scroll"):await q())>0)return;let R=n==="older"?s.value.hasOlder:s.value.hasNewer,F=n==="older"?s.value.olderError:s.value.newerError;if(!R||F!==null)return}}async function Qe(){return !L.value||u.actions.loadNewer===void 0?0:ze({kind:"load-newer"},()=>u.actions.retryNewer?.()??u.actions.loadNewer?.({force:true})??Promise.resolve(0))}async function Ge(){return L.value?ze({kind:"retry-older"},()=>u.actions.retryOlder?.()??u.actions.loadOlder({force:true})):0}async function ze(n,d){let l=C.value,c=++W;G=null,ie="";let w;try{w=await J(n,d);}catch(R){throw se(l,c)&&(ie=l),R}return se(l,c)&&!H.value&&(G=null,Le()),w}async function Ce(){if(!L.value)return false;let n=C.value;Pe();let d=++Q;return ge(true),z=true,U=n,Z=Se(Te()),!await J({kind:"jump-to-latest"},()=>u.actions.jumpToLatest?.()??Promise.resolve(!s.value.isHistoryWindow))||!oe(n,d)||(await nextTick(),!oe(n,d))?false:(m.value?.scrollToLatest(),j.value=true,v.value=false,_e(),true)}function ce(n=false){let d=m.value,l=d?.getViewportElement();o.value=d?.isScrollable()===true;let c=s.value.entryUnreadNavigation;O.value=c?.state==="located"&&k.includes(c.firstMessageId),H.value&&O.value&&(j.value=true);let w=l==null?0:Math.max(0,l.scrollHeight-l.clientHeight-l.scrollTop);v.value=c!==void 0&&w>50,n&&c!==void 0&&l!==null&&l!==void 0&&l.clientHeight>0&&w>=l.clientHeight&&(j.value=true);}function _e(){let n=u.actions.markConversationRead;if(n===void 0||!Y.value||!L.value||!H.value||h.value||B&&(!E.value||s.value.hasNewer)||S!==void 0||s.value.error!==null)return;let d=C.value,l=n().then(()=>{S===l&&d===C.value&&(B=true);}).catch(c=>{!ne&&S===l&&d===C.value&&t.hooks?.onError?.({kind:"mark-conversation-read"},c);}).finally(()=>{S===l&&(S=void 0);});S=l;}async function pe(){let n=u.actions.loadEntryUnread;if(!L.value||h.value||n===void 0)return "cancelled";let d=C.value,l=++Q,c=new AbortController;T=c,P=l,h.value=true,ge(true),z=true;try{let w=await J({kind:"jump-to-entry-unread"},()=>n({signal:c.signal}),()=>oe(d,l));if(!oe(d,l))return "cancelled";if(!w||s.value.entryUnread.state!=="located")return "unavailable";let F=await Ze(d,l);return F&&(j.value=!0),F?"located":oe(d,l)?"unavailable":"cancelled"}catch(w){if(!oe(d,l))return "cancelled";throw w}finally{P===l&&(P=void 0,T=void 0,h.value=false);}}async function Ze(n,d){await nextTick();for(let l=0;l<60;l+=1){if(!oe(n,d))return false;if(m.value?.scrollToEntryUnread())return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(c=>window.requestAnimationFrame(()=>c()));}return false}function Ye(n){E.value=n.isAtBottom,N.value=n.newMessageCount,ce(),Le();}function je(n,d){return m.value?.scrollToMessage(n,d)??false}function oe(n,d){return !ne&&Q===d&&C.value===n&&L.value}async function Ne(n,d,l,c){for(let w=0;w<60;w+=1){if(!oe(n,d))return false;if(je(l,c))return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(R=>window.requestAnimationFrame(()=>R()));}return false}async function ke(n,d,l){let c=m.value;if(c===null||!c.isMeasurable()||c.isScrollable())return true;let w=0,R=!s.value.hasOlder,F=!s.value.hasNewer||u.actions.loadNewer===void 0,ve=async()=>(await nextTick(),await nextTick(),Ne(n,d,l,{behavior:"auto",block:"center"})),he=async fe=>{if(!oe(n,d)||w>=V.value.maxFillPages)return false;let Oe=0;if(fe==="older"){if(R||!s.value.hasOlder)return false;Oe=await A(),R=!s.value.hasOlder;}else {if(F||!s.value.hasNewer)return false;c.prepareHistoryPageAppend();try{Oe=await q();}catch(Fe){throw c.cancelHistoryPageAppend(),Fe}Oe<=0&&!s.value.hasNewer&&c.cancelHistoryPageAppend(),F=!s.value.hasNewer;}return w+=1,Oe>0?ve():!(fe==="older"?R:F)};!R&&!await he("older")&&(R=true),!F&&!await he("newer")&&(F=true);let Ee="older";for(;oe(n,d)&&w<V.value.maxFillPages&&c.isMeasurable()&&!c.isScrollable()&&(!R||!F);){let fe=Ee==="older"?R?"newer":"older":F?"older":"newer";Ee=fe==="older"?"newer":"older",await he(fe)||(fe==="older"?R=true:F=true);}return oe(n,d)}async function Ke(n,d={behavior:"auto",block:"center"}){if(!L.value||n==="")return false;let l=C.value;Pe();let c=++Q;if(!I.value.includes(n)){let F=u.actions.loadAround;if(F===void 0||!await J({kind:"locate-message",messageId:n},()=>F(n))||!oe(l,c))return false}return !await Ne(l,c,n,{...d,behavior:"auto"})||!await ke(l,c,n)?false:Ne(l,c,n,d)}function Me(){$!==void 0&&(clearTimeout($),$=void 0);}function Re(){if(Me(),!H.value)return;let n=t.readActions;if(n===void 0&&u.actions.markVisibleMessages===void 0)return;let d=Number.isFinite(ee.value.visibleReadDelay)?Math.max(0,ee.value.visibleReadDelay):ut.visibleReadDelay;$=setTimeout(()=>{if($=void 0,!L.value||!Y.value)return;_e();let l=u.actions.markVisibleMessages;if(l!==void 0){let R=k;l(R).catch(F=>{t.hooks?.onError?.({kind:"visible-range",messageIds:R},F);});return}if(n===void 0)return;let c=k[k.length-1];if(c===void 0)return;let w=n.resolveTarget===void 0?c:n.resolveTarget(c);w!=null&&Promise.resolve(n.markRead(w)).catch(R=>{t.hooks?.onError?.({kind:"visible-range",messageIds:k},R);});},d);}function ye(n){k=Object.freeze([...n]),ce();let d={kind:"visible-range",messageIds:k};t.hooks?.beforeAction?.(d);try{u.actions.onVisibleRange?.(k),t.hooks?.afterAction?.(d,void 0);}catch(l){throw t.hooks?.onError?.(d,l),l}H.value?Re():Le();}function se(n,d){return !ne&&W===d&&C.value===n&&!z}function qe(n,d){se(n,d)&&(U=n,Z=Se(Te()),H.value=true,ce(),_e(),Re());}function Te(){return s.value.entryUnreadNavigation===void 0?s.value.entryUnread:{state:"none"}}function Se(n){return n.state!=="located"?n.state:`${n.state}:${n.firstMessageId}`}async function He(n,d,l){for(let c=0;c<60;c+=1){if(!se(n,d))return false;if(m.value?.scrollToMessage(l,{behavior:"auto",block:"center"})===true)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(R=>window.requestAnimationFrame(()=>R()));}return false}function Le(){let n=C.value,d=Se(Te());if(n===""||s.value.loading||s.value.error!==null&&s.value.messages.length===0||U===n&&(Z===d||Z.startsWith("located:")||z)||ie===n||G!==null)return;if(!V.value.enabled){U=n,Z=d,H.value=true,Re();return}let l=++W;z=false,H.value=false;let c=(async()=>{if(await nextTick(),!se(n,l))return;let w=m.value;if(w===null||!w.isMeasurable())return;let R=Te();if(R.state==="located"&&!I.value.includes(R.firstMessageId))return;let F=R.state==="located"?await He(n,l,R.firstMessageId):false;if(R.state==="located"&&!F)return;F||w.scrollToLatest();let ve=0;for(;se(n,l)&&ve<V.value.maxFillPages&&s.value.error===null&&(s.value.hasOlder||s.value.hasNewer&&u.actions.loadNewer!==void 0)&&w.isMeasurable()&&!w.isScrollable();){if(s.value.hasNewer&&u.actions.loadNewer!==void 0&&(s.value.messages.length===0||!s.value.hasOlder)){let Ee=Q;w.prepareHistoryPageAppend();try{await q(),await nextTick();}finally{C.value===n&&Q===Ee&&(W===l||z)&&w.cancelHistoryPageAppend();}}else await A();if(!se(n,l)||(ve+=1,await nextTick(),await nextTick(),!w.isMeasurable()))return}if(!se(n,l)||!w.isMeasurable())return;let he=Te();if(he.state==="located"){if(!I.value.includes(he.firstMessageId)||!await He(n,l,he.firstMessageId))return}else w.scrollToLatest();await nextTick(),qe(n,l);})().catch(()=>{se(n,l)&&(ie=n);}).finally(()=>{G===c&&(G=null);});G=c;}function ge(n,d=false){W+=1,G=null,z=false,H.value=n,n||(U="",Z="",d||(ie="")),Me();}function Pe(){T!==void 0&&(Q+=1,T.abort(),T=void 0,P=void 0,h.value=false);}function De(){if(ce(true),Pe(),z=true,H.value)return;let n=C.value;W+=1,G=null,U=n,H.value=true,Re();}let xe=Object.freeze({getViewportElement:()=>m.value?.getViewportElement()??null,loadOlder:A,retryOlder:Ge,loadNewer:q,retryNewer:Qe,jumpToLatest:Ce,jumpToEntryUnread:pe,scrollToMessage:je,locateMessage:Ke,focusViewport:()=>m.value?.focusViewport()});return i$1(xe),watch(Y,n=>{n&&H.value?Re():Me();}),watch([()=>s.value.activeRemoteMessageRevision??0,m,C],()=>{let n=m.value;if(n===null||!L.value)return;let d=u.actions.drainActiveRemoteMessageIds?.()??[];n.trackRemoteMessageIds(d,{isAtBottom:E.value,isHistoryWindow:s.value.isHistoryWindow,isPageVisible:ae.value})&&(E.value=false);},{flush:"post"}),watch([C,()=>s.value.loading,()=>s.value.error,()=>I.value.length,()=>s.value.hasOlder,()=>Se(Te()),V,()=>s.value.hasNewer],([n,d,l,c,,w],[R,,,F,,ve])=>{if(n!==R&&(Pe(),Q+=1,ge(false),D(true),m.value?.clearNewMessageBadge(),N.value=0,E.value=true,k=[],j.value=false,O.value=false,o.value=false,v.value=false,h.value=false,P=void 0,B=false,S=void 0),n!==""&&n===R&&F!==void 0&&F>0&&c===0&&(s.value.hasOlder||s.value.hasNewer)&&H.value&&ge(false,true),n!==""&&n===R&&w!==ve&&!Z.startsWith("located:")&&!z&&w.startsWith("located:")&&(U="",Z="",H.value=false),n===""){ge(false);return}if(l!==null&&s.value.messages.length===0){H.value||ge(false,true);return}d||Le();},{flush:"post",immediate:true}),onBeforeUnmount(()=>{ne=true,Pe(),Q+=1,ge(false),D(true);}),()=>{let n={conversation:t.conversation,state:s.value,items:f.value,actions:xe,initialViewportSettled:C.value!==""&&(s.value.messages.length===0?!s.value.loading&&s.value.error===null&&!s.value.hasOlder&&!s.value.hasNewer:H.value&&U===C.value)},d=[p.header?.(n),p["before-list"]?.(n)];if(!L.value)d.push(p.unsupported?.(n)??h$1("div",{"data-im-thread-unsupported":""}));else if(!s.value.ready&&s.value.loading)d.push(p.loading?.(n)??h$1("div",{"data-im-thread-loading":""}));else if(s.value.error!==null&&s.value.messages.length===0)d.push(p.error?.(n)??h$1("div",{"data-im-thread-error":""}));else if(s.value.ready&&s.value.messages.length===0&&!s.value.hasOlder&&!s.value.hasNewer)d.push(p.empty?.(n)??h$1("div",{"data-im-thread-empty":""}));else {let l=h$1(st,{ref:m,messageIds:I.value,contentKey:`${t.conversation.conversationType}\0${t.conversation.conversationId}`,loadingOlder:s.value.loadingOlder??s.value.loading,hasNewer:s.value.hasNewer,loadingNewer:s.value.loadingNewer??s.value.loading,followThreshold:ee.value.followThreshold,olderPrefetchThreshold:ee.value.olderPrefetchThreshold,visibleMargin:ee.value.visibleMargin,activeDateOffset:ee.value.activeDateOffset,activeDateEnabled:p["active-date"]!==void 0,resizeFollowEnabled:H.value&&!h.value,followNewMessages:ae.value&&!h.value,shouldFollowAppendedMessage:c=>{let w=s.value.messages.find(R=>R.id===c);return w===void 0?false:u.shouldFollowMessage?.(w)===true},onReachStart:()=>{Ve("older").catch(()=>{});},onReachEnd:()=>{Ve("newer").catch(()=>{});},onSettled:Ye,onUserScroll:De,onActiveDateChange:b,onVisibleRange:ye,onNewMessageCount:c=>{N.value=c;}},{default:()=>[p["viewport-before"]?.(n),h$1(it,{items:f.value,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{item:p.item,"date-separator":p["date-separator"],"entry-unread":p["entry-unread"],encryption:p.encryption,system:p.system,message:p.message,"recalled-message":p["recalled-message"],"deleted-message":p["deleted-message"],"unsupported-body":p["unsupported-body"]}),p["viewport-after"]?.(n)]});d.push(h$1("div",{"data-im-thread-viewport-shell":""},[p["active-date"]?.({label:K.value,visible:te.value&&K.value!==""}),l,p["entry-unread-navigation"]?.({...n,count:s.value.entryUnreadNavigation?.state==="none"?0:s.value.entryUnreadNavigation?.count??0,loading:h.value,visible:n.initialViewportSettled&&!j.value&&!O.value&&!s.value.isHistoryWindow&&s.value.entryUnreadNavigation!==void 0&&s.value.entryUnreadNavigation.state!=="none"&&s.value.entryUnreadNavigation.count>0&&(o.value||s.value.hasOlder)})])),s.value.error!==null&&d.push(p.error?.(n)??h$1("div",{"data-im-thread-error":""}));}return d.push(p["after-list"]?.(n),p["jump-to-latest"]?.({...n,count:N.value,visible:v.value||!E.value||s.value.isHistoryWindow}),p["context-menu"]?.(n),p.composer?.(n)),h$1("section",{"data-im-thread-surface":"","data-conversation-type":t.conversation.conversationType,"data-conversation-id":t.conversation.conversationId},d)}}});function Rn(t){let i=new Map;for(let u of t){if(i.has(u.kind))throw new Error(`\u6D88\u606F renderer kind \u91CD\u590D\u6CE8\u518C\uFF1A${u.kind}`);i.set(u.kind,u.component);}let p=Object.freeze([...i.keys()]);return Object.freeze({kinds:p,resolve:u=>i.get(u)})}var Pn=140,En=120;function Je(t,i){if(t.width<=0||t.height<=0)return 0;let p=Math.max(0,Math.min(t.right,i.right)-Math.max(t.left,i.left)),u=Math.max(0,Math.min(t.bottom,i.bottom)-Math.max(t.top,i.top));return Math.min(1,p*u/(t.width*t.height))}function ft(t,i){return {x:t.x,y:t.top-i,top:t.top-i,bottom:t.bottom+i,left:t.left,right:t.right,width:t.width,height:t.height+i*2,toJSON:()=>({})}}function mt(t){let i=Math.max(0,t.scrollIdleMs??Pn),p=Math.max(0,t.visibilityDwellMs??En),u=Math.min(1,Math.max(0,t.minimumIntersectionRatio??.01)),m=Math.max(0,t.revealMarginPx??0),N=Math.max(0,t.preloadMarginPx??0),j=Math.max(m,N),h=Math.max(0,t.maxPreloadTargets??Number.POSITIVE_INFINITY),P=Math.max(1,t.maxSettledVisible??Number.POSITIVE_INFINITY),T=new Map,O=new Map,o=reactive(new Set),v=new Set,B=new Set,S=[],E=null,k=null,$=null,W=false,Q=false,G=false,U=false,Z,ie;function z(){Z!==void 0&&clearTimeout(Z),Z=void 0;}function ne(){ie!==void 0&&clearTimeout(ie),ie=void 0;}function H(f=false){if(!f&&k!==null||E===null)return;let I=E.getBoundingClientRect(),y=ft(I,j);for(let[D,b]of T){let J=D.getBoundingClientRect();b.ratio=Je(J,I),b.intersecting=b.ratio>0,b.revealIntersecting=j>0?Je(J,y)>0:b.intersecting&&b.ratio>=u;}}function K(f){return f.intersecting&&f.ratio>=u}function te(){for(let[f,I]of T)!I.revealIntersecting||o.has(I.key)||j>m&&(m===0&&!K(I)||m>0&&(E===null||Je(f.getBoundingClientRect(),ft(E.getBoundingClientRect(),m))<=0))||(o.add(I.key),t.onRevealed?.(I.item));}function re(f,I=false){let y=new Set(f.map(b=>b.key));if(!(!(y.size!==B.size||[...y].some(b=>!B.has(b)))&&!I)){B.clear();for(let b of y)B.add(b);t.onSettledVisibleChange?.(f.map(b=>b.item));}}function X(f,I=false){!I&&f.length===S.length&&f.every((y,D)=>y.key===S[D]?.key&&y.item===S[D]?.item)||(S=f,t.onSettledPreloadChange?.(f.map(y=>y.item)));}function s(){if(G||W)return;let f=Q;Q=false,H(),te();let I=E?.getBoundingClientRect(),y=I===void 0?0:(I.top+I.bottom)/2,D=[...T.entries()].filter(([,b])=>K(b)).sort(([b],[J])=>{let A=b.getBoundingClientRect(),q=J.getBoundingClientRect();return Math.abs((A.top+A.bottom)/2-y)-Math.abs((q.top+q.bottom)/2-y)}).slice(0,P).map(([,b])=>b);if(re(D,f),t.onSettledPreloadChange!==void 0&&I!==void 0){let b=ft(I,N),J=[...T.entries()].filter(([,A])=>A.revealIntersecting).map(([A,q])=>({target:q,rect:A.getBoundingClientRect()})).filter(({target:A,rect:q})=>K(A)||N>0&&Je(q,b)>0).sort((A,q)=>Number(K(q.target))-Number(K(A.target))||Math.abs((A.rect.top+A.rect.bottom)/2-y)-Math.abs((q.rect.top+q.rect.bottom)/2-y)).slice(0,h).map(({target:A})=>A);X(J,f);}for(let b of D)v.has(b.key)||(v.add(b.key),t.onActivated?.(b.item));}function ae(){G||W||(ne(),ie=setTimeout(()=>{ie=void 0,s();},p));}function Y(){G||(Q=true,L(true),X([]),H(),te(),re([]),ne(),z(),Z=setTimeout(()=>{Z=void 0,L(false),ae();},i));}function L(f){W!==f&&(W=f,t.onScrollingChange?.(f));}function ee(){E?.removeEventListener("scroll",Y),k?.disconnect(),$?.disconnect(),k=null,$=null,E=null;}function V(f=true){if(G)return;let I=t.getRoot();if(!(I===E&&E!==null)){if(X([]),ee(),E=I,E===null){f&&!U&&(U=true,Promise.resolve().then(()=>{U=false,G||(V(false),ae());}));return}if(E.addEventListener("scroll",Y,{passive:true}),typeof IntersectionObserver<"u"){k=new IntersectionObserver(y=>{for(let D of y){let b=T.get(D.target);b!==void 0&&(b.intersecting=D.isIntersecting,b.ratio=D.intersectionRatio,j===0&&(b.revealIntersecting=D.isIntersecting&&D.intersectionRatio>=u));}te(),ae();},{root:E,threshold:[0,u,1]}),j>0&&($=new IntersectionObserver(y=>{for(let D of y){let b=T.get(D.target);b!==void 0&&(b.revealIntersecting=D.isIntersecting);}te(),ae();},{root:E,rootMargin:`${j}px 0px`,threshold:0}));for(let y of T.keys())k.observe(y);for(let y of T.keys())$?.observe(y);}else H(),te();}}function C(f){X(S.filter(I=>I.key!==f)),o.delete(f),v.delete(f),B.delete(f);}return {register(f,I){if(G)return;let y=t.getKey(f),D=o.has(y),b=v.has(y),J=I===null?void 0:T.get(I);J!==void 0&&J.key!==y&&(O.delete(J.key),T.delete(I),C(J.key));let A=O.get(y);if(A!==void 0&&A!==I&&(k?.unobserve(A),$?.unobserve(A),T.delete(A),O.delete(y)),I===null){A!==void 0&&(k?.unobserve(A),$?.unobserve(A),T.delete(A),O.delete(y)),C(y);return}let q=T.get(I);if(q?.key===y&&q.item===f){V();return}T.set(I,{item:f,key:y,intersecting:q?.key===y?q.intersecting:false,ratio:q?.key===y?q.ratio:0,revealIntersecting:q?.key===y?q.revealIntersecting:false}),O.set(y,I),V(),k?.observe(I),$?.observe(I),H(true),te(),D&&t.onRevealed?.(f),b&&t.onActivated?.(f),ae();},isRevealed:f=>o.has(t.getKey(f)),isActivated:f=>v.has(t.getKey(f)),isSettledVisible:f=>B.has(t.getKey(f)),isScrolling:()=>W,notifyScroll:Y,refresh(){V(),H(true),te(),ae();},reset(){z(),ne(),L(false),Q=false,re([]),X([]),ee(),T.clear(),O.clear(),o.clear(),v.clear();},dispose(){G||(z(),ne(),L(false),Q=false,re([]),X([]),ee(),T.clear(),O.clear(),o.clear(),v.clear(),G=true);}}}function An(t){let i=new Map,p=new Map,u=false,m=h=>{let P=i.get(h.channel);return P===void 0?h.channel:`${h.channel}\0${P.getKey(h.item)}`},N=mt({getRoot:t.getRoot,getKey:m,revealMarginPx:t.revealMarginPx,preloadMarginPx:t.preloadMarginPx,minimumIntersectionRatio:t.minimumIntersectionRatio,scrollIdleMs:t.scrollIdleMs,visibilityDwellMs:t.visibilityDwellMs,onScrollingChange:h=>{for(let P of i.values())P.onScrollingChange?.(h);},onRevealed:h=>i.get(h.channel)?.onRevealed?.(h.item),onActivated:h=>i.get(h.channel)?.onActivated?.(h.item),onSettledPreloadChange:h=>{for(let[P,T]of i){let O=h.filter(o=>o.channel===P).map(o=>o.item);T.onSettledPreloadChange?.(O.slice(0,Math.max(0,T.maxPreloadTargets??Number.POSITIVE_INFINITY)));}},onSettledVisibleChange:h=>{for(let[P,T]of i){let O=h.filter(v=>v.channel===P).map(v=>v.item),o=T.maxSettledVisible===void 0?O:O.slice(0,T.maxSettledVisible);T.onSettledVisibleChange?.(o);}}});function j(h){return P=>{if(u)throw new Error("Thread visibility target group \u5DF2\u91CA\u653E");if(i.has(h))throw new Error(`Thread visibility channel \u5DF2\u5B58\u5728: ${h}`);i.set(h,P);let T=new Map;p.set(h,T);let O=false,o=S=>({channel:h,item:S});function v(){for(let S of T.values())N.register(S.target,null);T.clear(),P.onScrollingChange?.(false),P.onSettledVisibleChange?.([]),P.onSettledPreloadChange?.([]);}return {register(S,E){if(O||u)return;let k=P.getKey(S),$=T.get(k);if(E===null){$!==void 0&&(N.register($.target,null),T.delete(k));return}let W=$?.target.item===S?$.target:o(S);T.set(k,{target:W,element:E}),N.register(W,E);},isRevealed:S=>N.isRevealed(o(S)),isActivated:S=>N.isActivated(o(S)),isSettledVisible:S=>N.isSettledVisible(o(S)),isScrolling:N.isScrolling,notifyScroll:N.notifyScroll,refresh:N.refresh,reset:v,dispose(){O||(v(),O=true,i.delete(h),p.delete(h));}}}}return {createFactory:j,refresh:N.refresh,dispose(){if(!u){for(let h of p.values())for(let P of h.values())N.register(P.target,null);for(let h of i.values())h.onSettledPreloadChange?.([]);p.clear(),i.clear(),N.dispose(),u=true;}}}}export{rt as ImThreadBodySwitch,it as ImThreadItems,Mn as ImThreadSurface,st as ImThreadViewport,hn as createImThreadSurfaceContext,Rn as createMessageRendererRegistry,An as createThreadVisibilityTargetGroup,mt as createThreadVisibilityTargets,pn as provideImThreadSurfaceContext,Xt as useImText,lt as useImThreadSurfaceContext,Zt as useOptionalImThreadReadActions};
1
+ import {h,C,p,i,q,m,z,B,o,j,g}from'./chunk-CVLKJADF.js';import {f,h as h$2,i as i$1,g as g$1}from'./chunk-PPXQWMHO.js';import'./chunk-SVA6OESM.js';import'./chunk-YNYTR73D.js';import'./chunk-J77L6JLQ.js';import'./chunk-WOT6VMZA.js';import {defineComponent,h as h$1,ref,provide,watch,nextTick,onMounted,onBeforeUnmount,computed,inject,isVNode,cloneVNode,Fragment,reactive}from'vue';function $t(t){let a=0,b=0;for(let c of t)c.kind==="video"?b+=1:a+=1;return {imageCount:a,videoCount:b}}function Xt(t){return {systemMessage:a=>a.body.system!==void 0?g$1(a.body.system,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):"",mediaPlaceholder:a=>i$1(a.contentType,{locale:t.locale(),durationMs:a.body.voice?.durationMs,stickerImageType:a.body.sticker?.imageType,gameType:a.body.game?.gameType,callKind:a.body.call?.callKind,...a.body.filesAlbum===void 0?{}:{filesAlbum:{count:a.body.filesAlbum.items.length,caption:a.body.filesAlbum.caption}},...a.body.mediaAlbum===void 0?{}:{mediaAlbum:$t(a.body.mediaAlbum.items)}}),lastMessage:a=>a.lastMessageSummary!==void 0?h$2(a.lastMessageSummary,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):a.lastMessagePreview,failureText:a=>a.failure?.displayCode!==void 0?f(a.failure.displayCode,{locale:t.locale(),mediaKind:a.failure.mediaKind,params:a.failure.params}):a.failure?.message??""}}var Nt=Symbol("ImThreadReadActions");function kt(t){provide(Nt,t);}function Zt(){return inject(Nt,void 0)}var at=defineComponent({name:"ImThreadBodySwitch",inheritAttrs:false,props:{message:{type:Object,required:true},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup(t,{attrs:a,slots:b}){return kt(t.readActions),()=>{let c=h(t.message),m=t.rendererRegistry.resolve(c);return m!==void 0?h$1(m,{...a,message:t.message,presentation:t.presentation}):b["unsupported-body"]!==void 0?b["unsupported-body"]({kind:c,message:t.message}):h$1("span",{"data-im-thread-unsupported-body":c,"aria-hidden":"true"})}}});var st=Symbol("ImThreadViewportRegistration");function Lt(){return inject(st,void 0)}var lt=defineComponent({name:"ImThreadItems",props:{items:{type:Array,required:true},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup(t,{slots:a}){let b=Lt();function c(i,y){let k=Array.isArray(y)?y:[y];return k.length===1&&isVNode(k[0])?cloneVNode(k[0],{key:i}):h$1(Fragment,{key:i},k)}function m(i){return y=>{b?.registerMessageNode(i,y instanceof HTMLElement?y:null);}}function C(i,y){return k=>{b?.registerDateNode(i,y,k instanceof HTMLElement?k:null);}}function _(i){return a.encryption?.({item:i})??h$1("div",{"data-im-thread-encryption":i.key})}function p(i){let y=C(i.key,i.label);return a["date-separator"]?.({item:i,setElement:y})??h$1("div",{ref:y,"data-im-thread-date-separator":i.key},i.label)}function S(i){b?.registerEntryUnreadNode(i instanceof HTMLElement?i:null);}function I(i){return a["entry-unread"]?.({item:i,setElement:S})??h$1("div",{ref:S,"data-im-thread-entry-unread":i.key,...i.count===void 0?{}:{"data-count":String(i.count)}})}function O(i){let y=m(i.message.id);return a.item!==void 0?a.item({item:i,setElement:y}):a.message!==void 0?a.message({item:i,setElement:y}):i.message.deletedForEveryone!==void 0?a["deleted-message"]?.({item:i,setElement:y})??h$1("article",{ref:y,"data-im-thread-message-id":i.message.id,"data-im-thread-message-terminal":"deleted-for-everyone"},[h$1("span",{"data-im-thread-anchor-point":""})]):i.message.recalled!==void 0?a["recalled-message"]?.({item:i,setElement:y})??h$1("article",{ref:y,"data-im-thread-message-id":i.message.id,"data-im-thread-message-terminal":"recalled"},[h$1("span",{"data-im-thread-anchor-point":""})]):i.kind==="system"&&a.system!==void 0?a.system({item:i,setElement:y}):h$1("article",{ref:y,"data-im-thread-message-id":i.message.id,"data-first-of-run":i.kind==="message"?String(i.firstOfRun):void 0},[h$1("span",{"data-im-thread-anchor-point":""}),h$1(at,{message:i.message,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{"unsupported-body":a["unsupported-body"]===void 0?void 0:k=>a["unsupported-body"]?.(k)})])}return ()=>h$1("div",{"data-im-thread-items":""},t.items.map(i=>{switch(i.kind){case "encryption":return a.item!==void 0?c(i.key,a.item({item:i})):c(i.key,_(i));case "date-separator":return a.item!==void 0?c(i.key,a.item({item:i,setElement:C(i.key,i.label)})):c(i.key,p(i));case "entry-unread":return a.item!==void 0?c(i.key,a.item({item:i,setElement:S})):c(i.key,I(i));case "system":case "message":return c(i.key,O(i))}return i}))}});var Bt=120,fn=500,Be=.5,mn=8;function dt(t){let a=t.ownerDocument.defaultView?.devicePixelRatio;return 1+1/(a!==void 0&&Number.isFinite(a)&&a>0?a:1)}var ut=defineComponent({name:"ImThreadViewport",props:{messageIds:{type:Array,required:true},contentKey:{type:String,default:""},loadingOlder:{type:Boolean,default:false},hasNewer:{type:Boolean,default:false},loadingNewer:{type:Boolean,default:false},followThreshold:{type:Number,default:120},olderPrefetchThreshold:{type:Number,default:120},followNewMessages:{type:Boolean,default:true},shouldFollowAppendedMessage:{type:Function,default:void 0},visibleMargin:{type:Number,default:8},resizeFollowEnabled:{type:Boolean,default:true},activeDateOffset:{type:Number,default:16},activeDateEnabled:{type:Boolean,default:false}},emits:{"reach-start":()=>true,"reach-end":()=>true,"visible-range":t=>true,settled:t=>true,"new-message-count":t=>true,"user-scroll":()=>true,"active-date-change":t=>true},setup(t,{emit:a,expose:b,slots:c}){let m$1=ref(null),C$1=ref(null),_=new Map,p$1,S=new Map,I=new Set,O=new Map,i=0,y=[],k,E,P,B$1,L=false,q$1,te=new Set,D=false,W,$="",Z=1,j$1=false,ee=false,G=true,K=false,V=false,ne=false,X=0,ce=-1,oe=-1,o$1,J,ae,H,N,f=ref(true),w=ref(0),u=C(e=>{w.value=e,a("new-message-count",e);});function F(e){let r=Number.isFinite(t.followThreshold)?Math.max(0,t.followThreshold):0;return e.scrollHeight-e.clientHeight-e.scrollTop<=r}function T(e=t.messageIds){return e.flatMap(r=>{let s=_.get(r);if(s===void 0)return [];let h=s.getBoundingClientRect(),M=s.querySelector("[data-im-thread-anchor-point]");return [{id:r,top:h.top,bottom:h.bottom,anchorTop:M?.getBoundingClientRect().top??h.top}]})}function re(e="",r=1){let s=Math.min(1,Math.max(0,r));$!==""&&$!==e&&O.get($)?.element.style.removeProperty("opacity"),$=e,Z=s,e!==""&&O.get(e)?.element.style.setProperty("opacity",String(s));}function A(){re();}function z$1(){let e=m$1.value;if(D||e===null||!t.activeDateEnabled)return;let r=[...O.entries()].filter(([,U])=>e.contains(U.element)).map(([U,x])=>{let fe=x.element.getBoundingClientRect();return {key:U,label:x.label,top:fe.top,height:fe.height}}).sort((U,x)=>U.top-x.top),s=e.getBoundingClientRect(),h=r.find(U=>U.height>0)?.height??28,M=g({markers:r,viewportTop:s.top,overlayTop:Number.isFinite(t.activeDateOffset)?Math.max(0,t.activeDateOffset):0,overlayHeight:h});if(M===null){A(),a("active-date-change",null);return}re(M.inlineDateKey,M.inlineOpacity),a("active-date-change",M);}function ye(e){E={scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,width:e.clientWidth,height:e.clientHeight};}function Ee(e){let r=E;if(r===void 0)return false;let s=Math.max(0,e.scrollHeight-e.clientHeight);return s<r.scrollHeight-r.height&&r.scrollTop>s&&Math.abs(e.scrollTop-s)<=dt(e)}function Ue(e){return Ee(e)||W!==void 0&&(W.behavior==="smooth"||Math.abs(e.scrollTop-W.targetTop)<=dt(e))?0:e.scrollTop-i}function _e(e,r){r!==0&&(i=e.scrollTop-r,W=void 0,Q());}function qe(e,r){let s=Ue(e);if(H!==void 0)return H.expectedOffset-=s,Ie(),_e(e,s),K||je(),false;let h=E;if(h===void 0)return false;let M=k,U=M===void 0?void 0:T([M.id])[0],x=e.scrollTop-h.scrollTop,fe=Ee(e)?0:x,Se=M===void 0||U===void 0?0:(U.anchorTop??U.top)-r.top-M.offset+x;return h.scrollHeight!==e.scrollHeight||h.width!==e.clientWidth||h.height!==e.clientHeight||Math.abs(Se)>Be?(E=void 0,!j$1&&!t.loadingNewer&&!t.hasNewer&&t.resizeFollowEnabled&&f.value&&Math.abs(fe)<=Be?(le(),true):(M!==void 0&&xe({...M,offset:M.offset-fe}),_e(e,s),false)):false}function ke(){let e=m$1.value;if(D||e===null)return;let r=e.getBoundingClientRect();if(qe(e,r))return;let s=B$1!==void 0&&L?t.messageIds.filter(x=>I.has(x)):t.messageIds,h=T(s);if(B$1!==void 0&&L&&h.length===0){f.value=F(e);return}let M=h.filter(x=>B({viewportTop:r.top,viewportBottom:r.bottom,messageTop:x.top,messageBottom:x.bottom,margin:t.visibleMargin})).map(x=>x.id),U=M.length!==y.length||M.some((x,fe)=>y[fe]!==x);y=Object.freeze(M),k=o(h,{top:r.top,bottom:r.bottom}),ye(e),u.acknowledgeVisible(M),f.value=F(e),U&&a("visible-range",y),a("settled",{visibleMessageIds:y,...y.length===0?{}:{newestVisibleMessageId:y[y.length-1]},isAtBottom:f.value,newMessageCount:w.value});}function Ae(e){if(te.add(e),q$1!==void 0)return;let r=()=>{q$1=void 0;let s=[...te];te.clear(),s.forEach(h=>h());};typeof globalThis.requestAnimationFrame=="function"?q$1=globalThis.requestAnimationFrame(r):q$1=globalThis.setTimeout(r,0);}function We(){q$1!==void 0&&(typeof q$1=="number"&&typeof globalThis.cancelAnimationFrame=="function"?globalThis.cancelAnimationFrame(q$1):globalThis.clearTimeout(q$1),q$1=void 0,te.clear());}function Te(){Ae(ke);}function He(){let e=m$1.value;if(e===null)return;let r=e.getBoundingClientRect(),s=o(T(),{top:r.top,bottom:r.bottom});s!==void 0&&(k=s,ye(e));}function Le(){return G&&H===void 0&&!ee&&!t.loadingOlder}function Ge(){He(),G=false,ce=X,ee=true,a("reach-start"),Ae(()=>{t.loadingOlder||(ee=false);});}function ze(e){return t.hasNewer&&!j$1&&!t.loadingOlder&&!t.loadingNewer&&F(e)}function Ye(){j$1=true,f.value=false,oe=X,a("reach-end"),Ae(()=>{t.loadingNewer||(j$1=false);});}function Ve(){let e=m$1.value;e===null||X===oe||!ze(e)||Ye();}function Q(){let e=m$1.value;if(D||e===null)return;let r=e.scrollTop,s=Ee(e),h=W,M=false;if(h!==void 0){let x=Math.abs(r-h.targetTop)<=dt(e);M=h.behavior==="smooth"||x,(h.behavior!=="smooth"||x)&&(W=void 0);}!M&&!s&&!K&&H===void 0&&r!==i&&(K=true,V=true,X+=1);let U=K&&!M&&!s&&r!==i;if(U&&(a("user-scroll"),Ae(z$1)),K&&!ne&&ve(),!G&&V&&X!==ce&&r<i&&r>Ke()&&(G=true),H!==void 0&&!M)if(K){let x=Ce();x!==void 0&&(H.expectedOffset=x);}else Ie(),je();Le()&&U&&r>=0&&m({previousScrollTop:i,currentScrollTop:r,topThreshold:t.olderPrefetchThreshold})&&Ge(),U&&ze(e)&&z({previousScrollTop:i,currentScrollTop:r,isAtBottom:F(e),isHistoryWindow:t.hasNewer,isPageSettling:M})&&Ye(),i=r,Te();}function De(e,r="auto"){W={targetTop:e,behavior:r};}function $e(e){let r=H,s=C$1.value;if(!(r===void 0||s===null)){if(r.visualOffset=Math.abs(e)<=Be?0:e,r.visualOffset===0){s.style.removeProperty("transform"),s.style.removeProperty("will-change");return}s.style.setProperty("transform",`translate3d(0, ${r.visualOffset}px, 0)`),s.style.setProperty("will-change","transform");}}function be(){N!==void 0&&(clearTimeout(N),N=void 0),H!==void 0&&H.visualOffset!==0&&(k=void 0,E=void 0);let e=C$1.value;e?.style.removeProperty("transform"),e?.style.removeProperty("will-change"),H=void 0,W=void 0;}function Ce(){let e=m$1.value,r=H;if(e===null||r===void 0)return;let s=T().find(h=>h.id===r.anchor.id);if(s!==void 0)return (s.anchorTop??s.top)-e.getBoundingClientRect().top}function Ie(){let e=H,r=Ce();if(e===void 0||r===void 0)return;let s=e.expectedOffset-r;Math.abs(s)<=Be||($e(e.visualOffset+s),e.committed=false,e.attempts=0);}function Xe(){N!==void 0&&clearTimeout(N),N=setTimeout(()=>{N=void 0,!(K||H?.committed!==true)&&be();},fn);}function ue(){let e=m$1.value,r=H;if(D||e===null||r===void 0||K)return;let s=r.visualOffset;if(Math.abs(s)<=Be){r.committed=true,Xe();return}let h=Math.max(0,e.scrollHeight-e.clientHeight),M=Math.min(h,Math.max(0,e.scrollTop-s));if(De(M),e.scrollTop=M,Math.abs(e.scrollTop-M)>Be){W=void 0,r.committed=false,r.attempts+=1,r.attempts<mn?je():(be(),W=void 0,i=e.scrollTop);return}$e(0),i=e.scrollTop,r.expectedOffset=Ce()??r.expectedOffset,r.committed=true,r.attempts=0,Xe();}function je(){N!==void 0&&clearTimeout(N),N=setTimeout(()=>{N=void 0,ue();},Bt);}function we(e){e!==void 0&&(H===void 0&&(H={anchor:e,expectedOffset:e.offset,visualOffset:0,committed:false,attempts:0}),Ie(),!K&&ue());}function xe(e){let r=m$1.value;if(r===null||e===void 0)return;let s=r.getBoundingClientRect(),h=q(e,T(),{top:s.top,bottom:s.bottom});if(h!==void 0){let M=Math.max(0,r.scrollHeight-r.clientHeight),U=Math.min(M,Math.max(0,r.scrollTop+h));De(U),r.scrollTop=U,i=r.scrollTop,E=void 0;}}function Ke(){return Number.isFinite(t.olderPrefetchThreshold)?Math.max(0,t.olderPrefetchThreshold):0}function Me(){W?.behavior==="smooth"&&(W=void 0),V=false,K||(K=true,X+=1),o$1!==void 0&&(clearTimeout(o$1),o$1=void 0);}function se(){let e=m$1.value;e===null||X===ce||(H!==void 0&&be(),G=true,e.scrollTop<=Ke()&&Le()&&Ge());}function Re(){k=void 0,E=void 0,o$1!==void 0&&(clearTimeout(o$1),o$1=void 0),be(),K=false,V=false,ne=false,J=void 0,ae=void 0,X+=1,ce=-1,oe=-1,G=true,ee=false,j$1=false,W=void 0;}function Je(){ne||(o$1!==void 0&&(clearTimeout(o$1),o$1=void 0),K=false,V=false,H!==void 0&&(H.attempts=0),ue());}function ve(){ne||(o$1!==void 0&&clearTimeout(o$1),o$1=setTimeout(()=>{o$1=void 0,Je();},Bt));}function n(){W=void 0,Je();}function d(e){ne=true,Me(),J=e.touches?.[0]?.clientY;}function l(e){let r=e.touches?.[0]?.clientY;r!==void 0&&(J!==void 0&&r>J?se():J!==void 0&&r<J&&Ve(),J=r);}function g$1(){ne=false,J=void 0,ve();}function v(e){Me(),e.deltaY<0?se():e.deltaY>0&&Ve(),ve();}function R(e){e.pointerType!=="touch"&&(Me(),ae=e.clientY,ve());}function Y(e){e.pointerType==="touch"||!K||ae===void 0||(e.clientY<ae?se():e.clientY>ae&&Ve(),ae=e.clientY,ve());}function ie(e){e.pointerType!=="touch"&&(ae=void 0,ve());}function he(e){["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(e.key)&&(Me(),e.key==="ArrowUp"||e.key==="PageUp"||e.key==="Home"||e.key===" "&&e.shiftKey?se():Ve(),ve());}function le(e="auto"){let r=m$1.value;if(r===null)return;E=void 0,be();let s=Math.max(0,r.scrollHeight-r.clientHeight);De(s,e),r.scrollTo?.({top:s,behavior:e}),r.scrollTop!==s&&(r.scrollTop=s),i=r.scrollTop,u.clear(),L=false,ke();}function Ne(){let e=m$1.value;return e!==null&&e.clientWidth>0&&e.clientHeight>0}function nt(){let e=m$1.value;return Ne()&&e!==null&&e.scrollHeight>e.clientHeight+1}function _t(e,r={}){return ht(_.get(e),r)}function ht(e,r){let s=m$1.value;if(s===null||e===void 0||!s.contains(e)||s.clientHeight<=0)return false;be();let h=s.getBoundingClientRect(),M=e.getBoundingClientRect(),U=r.block??"center",x;U==="start"?x=s.scrollTop+M.top-h.top:U==="end"?x=s.scrollTop+M.bottom-h.bottom:U==="nearest"?M.top>=h.top&&M.bottom<=h.bottom?x=s.scrollTop:M.top<h.top?x=s.scrollTop+M.top-h.top:x=s.scrollTop+M.bottom-h.bottom:x=j({currentScrollTop:s.scrollTop,scrollHeight:s.scrollHeight,targetHeight:M.height,targetTop:M.top,viewportHeight:s.clientHeight,viewportTop:h.top});let fe=Math.max(0,s.scrollHeight-s.clientHeight),Se=Math.min(fe,Math.max(0,x));E=void 0;let Fe=r.behavior??"auto";return De(Se,Fe),s.scrollTo?.({top:Se,behavior:Fe}),s.scrollTop!==Se&&(s.scrollTop=Se),i=s.scrollTop,L=false,ke(),true}function jt(){let e=m$1.value;if(e===null||p$1===void 0||!e.contains(p$1)||e.clientHeight<=0)return null;let r=p$1.getBoundingClientRect(),s=e.scrollTop+r.top-e.getBoundingClientRect().top+r.height/2,h=e.clientHeight/2;return {older:s<h-1,newer:e.scrollHeight-s<h-1}}function Kt(){u.clear();}function qt(){j$1=true,f.value=false;}function Wt(){j$1=false,Te();}function Gt(e,r){let s=_.get(e);if(s!==void 0&&s!==r&&(B$1?.unobserve(s),P?.unobserve?.(s),S.delete(s),I.delete(e)),r===null){_.delete(e),I.delete(e);return}_.set(e,r),S.set(r,e),B$1?.observe(r),P?.observe(r),Te();}function zt(e,r,s){let h=O.get(e);if(s===null){O.delete(e);return}O.set(e,{element:s,label:r}),$===e&&s.style.setProperty("opacity",String(Z)),h?.element!==s&&(s.dataset.imThreadDateSeparator=e);}return provide(st,{registerMessageNode:Gt,registerDateNode:zt,registerEntryUnreadNode:e=>{p$1=e??void 0;}}),watch(()=>t.contentKey,(e,r)=>{if(e===r)return;Re();let s=m$1.value;s!==null&&(i=s.scrollTop);},{flush:"sync"}),watch(()=>t.messageIds,async(e,r)=>{let s=m$1.value;if(s===null)return;let h=new Set(r);r.length>0&&e.length>0&&!e.some(Oe=>h.has(Oe))&&Re();let U=s.getBoundingClientRect(),x=p(k,T(),{top:U.top,bottom:U.bottom}),fe=f.value,Se=r[r.length-1],Fe=Se===void 0?-1:e.indexOf(Se),rt=Fe<0?[]:e.slice(Fe+1).filter(Oe=>!h.has(Oe)),pt=j$1||t.loadingNewer,Yt=e.length===r.length&&e.every(Oe=>h.has(Oe))&&e.some((Oe,ot)=>Oe!==r[ot]);if(await nextTick(),D)return;if(Yt&&fe&&t.followNewMessages&&t.resizeFollowEnabled&&!t.hasNewer&&!pt){le();return}let yt=r[0];if(yt!==void 0&&e.indexOf(yt)>0&&(ee=false,we(x)),rt.length>0){if(pt){j$1=false,H===void 0&&xe(x),f.value=false,Te();return}(fe||rt.some(ot=>t.shouldFollowAppendedMessage?.(ot)===true))&&t.followNewMessages?le():u.add(rt);}Te();},{flush:"pre"}),watch(()=>t.loadingNewer,(e,r)=>{e||!r||!j$1||Ae(()=>{t.loadingNewer||(j$1=false);});},{flush:"pre"}),watch(()=>t.loadingOlder,(e,r)=>{e||!r||!ee||Ae(()=>{t.loadingOlder||(ee=false);});},{flush:"pre"}),onMounted(()=>{let e=m$1.value;if(e!==null){if(i=e.scrollTop,e.addEventListener("scroll",Q,{passive:true}),e.addEventListener("scrollend",n,{passive:true}),e.addEventListener("touchstart",d,{passive:true}),e.addEventListener("touchmove",l,{passive:true}),e.addEventListener("touchend",g$1,{passive:true}),e.addEventListener("touchcancel",g$1,{passive:true}),e.addEventListener("wheel",v,{passive:true}),e.addEventListener("pointerdown",R,{passive:true}),e.addEventListener("pointermove",Y,{passive:true}),e.addEventListener("pointerup",ie,{passive:true}),e.addEventListener("pointercancel",ie,{passive:true}),e.addEventListener("keydown",he),typeof globalThis.ResizeObserver=="function"){P=new globalThis.ResizeObserver(()=>{D||m$1.value===null||ke();}),P.observe(e),C$1.value!==null&&P.observe(C$1.value);for(let r of _.values())P.observe(r);}if(typeof globalThis.IntersectionObserver=="function"){B$1=new globalThis.IntersectionObserver(r=>{for(let s of r){let h=S.get(s.target);h!==void 0&&(s.isIntersecting?I.add(h):I.delete(h));}L=true,Te();},{root:e,rootMargin:`${Number.isFinite(t.visibleMargin)?Math.max(0,t.visibleMargin):0}px 0px`});for(let r of _.values())B$1.observe(r);}Te();}}),onBeforeUnmount(()=>{D=true;let e=m$1.value;e!==null&&e.removeEventListener("scroll",Q),e!==null&&(e.removeEventListener("scrollend",n),e.removeEventListener("touchstart",d),e.removeEventListener("touchmove",l),e.removeEventListener("touchend",g$1),e.removeEventListener("touchcancel",g$1),e.removeEventListener("wheel",v),e.removeEventListener("pointerdown",R),e.removeEventListener("pointermove",Y),e.removeEventListener("pointerup",ie),e.removeEventListener("pointercancel",ie),e.removeEventListener("keydown",he)),o$1!==void 0&&clearTimeout(o$1),be(),We(),P?.disconnect(),B$1?.disconnect(),A(),p$1=void 0,_.clear(),S.clear(),I.clear(),O.clear(),u.clear();}),b({getViewportElement:()=>m$1.value,clearNewMessageBadge:Kt,clearActiveDate:A,isAtBottom:computed(()=>f.value),isMeasurable:Ne,isScrollable:nt,newMessageCount:computed(()=>w.value),prepareHistoryPageAppend:qt,cancelHistoryPageAppend:Wt,trackRemoteMessageIds:(e,r)=>u.trackRemote(e,r),scrollToLatest:le,scrollToMessage:_t,scrollToEntryUnread:()=>ht(p$1,{block:"center",behavior:"auto"}),getEntryUnreadCenteringNeeds:jt,focusViewport:()=>m$1.value?.focus({preventScroll:true})}),()=>h$1("div",{ref:m$1,"data-im-thread-viewport":"",role:"log",tabindex:-1},[h$1("div",{ref:C$1,"data-im-thread-viewport-content":""},c.default?.())])}});var Ut=Symbol("ImThreadSurfaceContext");function hn(t){if(typeof t.getState!="function")throw new TypeError("ImThreadSurfaceContext.getState \u5FC5\u987B\u662F\u51FD\u6570");if(typeof t.actions?.loadOlder!="function")throw new TypeError("ImThreadSurfaceContext.actions.loadOlder \u5FC5\u987B\u662F\u51FD\u6570");if(typeof t.formatDate!="function")throw new TypeError("ImThreadSurfaceContext.formatDate \u5FC5\u987B\u662F\u51FD\u6570");return Object.freeze({...t,actions:Object.freeze({...t.actions})})}function pn(t){provide(Ut,t);}function ct(){let t=inject(Ut);if(t===void 0)throw new Error("ImThreadSurface \u9700\u8981\u663E\u5F0F context prop \u6216 provideImThreadSurfaceContext");return t}var ft=Object.freeze({followThreshold:120,olderPrefetchThreshold:120,visibleReadDelay:300,visibleMargin:8,activeDateOffset:16,activeDateIdleDelay:1500}),mt=Object.freeze({enabled:true,maxFillPages:8}),bn=8,In=160;function wn(t,a){return t?.conversationType===a.conversationType&&t.conversationId===a.conversationId}var Mn=defineComponent({name:"ImThreadSurface",props:{conversation:{type:Object,required:true},context:{type:Object,default:void 0},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0},viewportOptions:{type:Object,default:()=>({})},initialViewportOptions:{type:Object,default:()=>({})},hooks:{type:Object,default:void 0}},setup(t,{expose:a,slots:b}){let c=t.context??ct(),m=ref(null),C=ref(0),_=ref(false),p=ref(false),S=ref(false),I,O,i$1=ref(false),y=ref(false),k=ref(false),E=false,P,B=ref(true),L=[],q,te=0,D=0,W,$=null,Z="",j="",ee="",G=false,K=false,V=ref(false),ne=ref(""),X=ref(false),ce,oe,o=computed(()=>c.getState()),J=computed(()=>!!o.value.pendingLocationMessageId),ae=computed(()=>o.value.pageVisible??c.isPageVisible?.()??true),H=computed(()=>o.value.pageEngaged??c.isPageEngaged?.()??true),N=computed(()=>wn(o.value.activeConversation,t.conversation)),f=computed(()=>({...ft,...t.viewportOptions})),w=computed(()=>{let n=t.initialViewportOptions.maxFillPages??mt.maxFillPages;return {enabled:t.initialViewportOptions.enabled??mt.enabled,maxFillPages:Number.isFinite(n)?Math.max(0,Math.floor(n)):mt.maxFillPages}}),u=computed(()=>!N.value||!o.value.ready?"":`${t.conversation.conversationType}\0${t.conversation.conversationId}`),F=computed(()=>N.value?i({messages:o.value.messages,entryUnread:o.value.entryUnread,formatDate:c.formatDate,leadingItems:c.leadingItems?.(),beforeMessageItems:c.beforeMessageItems}):[]),T=computed(()=>F.value.flatMap(n=>n.kind==="message"||n.kind==="system"?[n.message.id]:[]));function re(){ce!==void 0&&(clearTimeout(ce),ce=void 0),oe!==void 0&&(clearTimeout(oe),oe=void 0);}function A(n=false){if(re(),X.value=false,n){m.value?.clearActiveDate(),ne.value="";return}oe=setTimeout(()=>{oe=void 0,!X.value&&(m.value?.clearActiveDate(),ne.value="");},In);}function z(n){if(n===null){A();return}re(),ne.value=n.label,X.value=true;let d=f.value.activeDateIdleDelay,l=Number.isFinite(d)?Math.max(0,d):ft.activeDateIdleDelay;ce=setTimeout(()=>{ce=void 0,A();},l);}async function ye(n,d,l){t.hooks?.beforeAction?.(n);try{let g=await d();return l?.()!==!1&&t.hooks?.afterAction?.(n,g),g}catch(g){throw l?.()!==false&&t.hooks?.onError?.(n,g),g}}function Ee(n="automatic",d){return !N.value||o.value.loading||!o.value.hasOlder?Promise.resolve(0):ye({kind:"load-older",source:n},()=>c.actions.loadOlder(),d)}function Ue(){return _e()}function _e(n){let d=c.actions.loadNewer,l=o.value.loadingNewer??o.value.loading;return !N.value||l||!o.value.hasNewer||d===void 0?Promise.resolve(0):ye({kind:"load-newer"},()=>d(),n)}async function qe(n){for(let d=0;d<bn;d+=1){if(!N.value||S.value||p.value||J.value)return;let l=n==="older"?o.value.hasOlder:o.value.hasNewer,g=n==="older"?o.value.olderError:o.value.newerError;if(!l||g!==null||(n==="older"?await Ee("user-scroll"):await Ue())>0)return;let R=n==="older"?o.value.hasOlder:o.value.hasNewer,Y=n==="older"?o.value.olderError:o.value.newerError;if(!R||Y!==null)return}}async function ke(){return !N.value||c.actions.loadNewer===void 0?0:We({kind:"load-newer"},()=>c.actions.retryNewer?.()??c.actions.loadNewer?.({force:true})??Promise.resolve(0))}async function Ae(){return N.value?We({kind:"retry-older"},()=>c.actions.retryOlder?.()??c.actions.loadOlder({force:true})):0}async function We(n,d){let l=u.value,g=++te;$=null,ee="";let v;try{v=await ye(n,d);}catch(R){throw ue(l,g)&&(ee=l),R}return ue(l,g)&&!V.value&&($=null,Me()),v}async function Te(){if(!N.value)return false;let n=u.value;Re();let d=++D;return S.value=false,se(true),G=true,Z=n,j=xe(we()),!await ye({kind:"jump-to-latest"},()=>c.actions.jumpToLatest?.()??Promise.resolve(!o.value.isHistoryWindow),()=>Q(n,d))||!Q(n,d)||(await nextTick(),!Q(n,d))?false:(m.value?.scrollToLatest(),_.value=true,k.value=false,Le(),true)}function He(n=false){let d=m.value,l=d?.getViewportElement();y.value=d?.isScrollable()===true;let g=o.value.entryUnreadNavigation;i$1.value=g?.state==="located"&&L.includes(g.firstMessageId),V.value&&i$1.value&&(_.value=true);let v=l==null?0:Math.max(0,l.scrollHeight-l.clientHeight-l.scrollTop);k.value=g!==void 0&&v>50,n&&g!==void 0&&l!==null&&l!==void 0&&l.clientHeight>0&&v>=l.clientHeight&&(_.value=true);}function Le(){let n=c.actions.markConversationRead;if(n===void 0||!H.value||!N.value||!V.value||p.value||E&&(!B.value||o.value.hasNewer)||P!==void 0||o.value.error!==null)return;let d=u.value,l=n().then(()=>{P===l&&d===u.value&&(E=true);}).catch(g=>{!K&&P===l&&d===u.value&&t.hooks?.onError?.({kind:"mark-conversation-read"},g);}).finally(()=>{P===l&&(P=void 0);});P=l;}async function Ge(){let n=c.actions.loadEntryUnread;if(!N.value||p.value||n===void 0)return "cancelled";let d=u.value,l=++D;S.value=false;let g=new AbortController;O=g,I=l,p.value=true,se(true),G=true;try{let v=await ye({kind:"jump-to-entry-unread"},()=>n({signal:g.signal}),()=>Q(d,l));if(!Q(d,l))return "cancelled";if(!v||o.value.entryUnread.state!=="located")return "unavailable";let Y=await ze(d,l);return Y&&(_.value=!0),Y?"located":Q(d,l)?"unavailable":"cancelled"}catch(v){if(!Q(d,l))return "cancelled";throw v}finally{I===l&&(I=void 0,O=void 0,p.value=false);}}async function ze(n,d){await nextTick();for(let l=0;l<60;l+=1){if(!Q(n,d))return false;if(m.value?.scrollToEntryUnread())return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(g=>window.requestAnimationFrame(()=>g()));}return false}function Ye(n){B.value=n.isAtBottom,C.value=n.newMessageCount,He(),Me();}function Ve(n,d){return m.value?.scrollToMessage(n,d)??false}function Q(n,d){return !K&&D===d&&u.value===n&&N.value}async function De(n,d,l,g){for(let v=0;v<60;v+=1){if(!Q(n,d))return false;if(Ve(l,g))return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(R=>window.requestAnimationFrame(()=>R()));}return false}async function $e(n,d){let l=m.value;if(l===null||!l.isMeasurable()||l.isScrollable())return true;let g=0,v=!o.value.hasOlder,R=!o.value.hasNewer||c.actions.loadNewer===void 0,Y=()=>Q(n,d),ie=async le=>{if(!Q(n,d)||g>=w.value.maxFillPages)return false;let Ne=0;if(le==="older"){if(v||!o.value.hasOlder)return false;Ne=await Ee("automatic",Y),v=!o.value.hasOlder;}else {if(R||!o.value.hasNewer)return false;l.prepareHistoryPageAppend();try{Ne=await _e(Y);}catch(nt){throw Y()&&l.cancelHistoryPageAppend(),nt}Y()&&Ne<=0&&!o.value.hasNewer&&l.cancelHistoryPageAppend(),R=!o.value.hasNewer;}return g+=1,await nextTick(),await nextTick(),Q(n,d)&&(Ne>0||!(le==="older"?v:R))};!v&&!await ie("older")&&(v=true),!R&&!await ie("newer")&&(R=true);let he="older";for(;Q(n,d)&&g<w.value.maxFillPages&&l.isMeasurable()&&!l.isScrollable()&&(!v||!R);){let le=he==="older"?v?"newer":"older":R?"older":"newer";he=le==="older"?"newer":"older",await ie(le)||(le==="older"?v=true:R=true);}return Q(n,d)}async function be(n,d={behavior:"auto",block:"center"}){if(!N.value||n==="")return false;let l=u.value;Re();let g=S.value||W!==void 0||(o.value.loadingOlder??o.value.loading)||(o.value.loadingNewer??o.value.loading),v=++D;S.value=true,se(true),G=true,Z=l,j=xe(we());let R=()=>Q(l,v);try{if(g||!T.value.includes(n)){let Y=c.actions.loadAround;if(Y===void 0)return !1;let ie={};W=ie;try{if(!await ye({kind:"locate-message",messageId:n},()=>Y(n),R)||!R())return !1}finally{W===ie&&(W=void 0);}}return await nextTick(),await nextTick(),!R()||!await $e(l,v)?!1:await De(l,v,n,d)}finally{D===v&&(S.value=false);}}function Ce(){q!==void 0&&(clearTimeout(q),q=void 0);}function Ie(){if(Ce(),!V.value)return;let n=t.readActions;if(n===void 0&&c.actions.markVisibleMessages===void 0)return;let d=Number.isFinite(f.value.visibleReadDelay)?Math.max(0,f.value.visibleReadDelay):ft.visibleReadDelay;q=setTimeout(()=>{if(q=void 0,!N.value||!H.value)return;Le();let l=c.actions.markVisibleMessages;if(l!==void 0){let R=L;l(R).catch(Y=>{t.hooks?.onError?.({kind:"visible-range",messageIds:R},Y);});return}if(n===void 0)return;let g=L[L.length-1];if(g===void 0)return;let v=n.resolveTarget===void 0?g:n.resolveTarget(g);v!=null&&Promise.resolve(n.markRead(v)).catch(R=>{t.hooks?.onError?.({kind:"visible-range",messageIds:L},R);});},d);}function Xe(n){L=Object.freeze([...n]),He();let d={kind:"visible-range",messageIds:L};t.hooks?.beforeAction?.(d);try{c.actions.onVisibleRange?.(L),t.hooks?.afterAction?.(d,void 0);}catch(l){throw t.hooks?.onError?.(d,l),l}V.value?Ie():Me();}function ue(n,d){return !K&&te===d&&u.value===n&&!G&&!J.value}function je(n,d){ue(n,d)&&(Z=n,j=xe(we()),V.value=true,He(),Le(),Ie());}function we(){return o.value.entryUnreadNavigation===void 0?o.value.entryUnread:{state:"none"}}function xe(n){return n.state!=="located"?n.state:`${n.state}:${n.firstMessageId}`}async function Ke(n,d,l){for(let g=0;g<60;g+=1){if(!ue(n,d))return false;if(m.value?.scrollToMessage(l,{behavior:"auto",block:"center"})===true)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(R=>window.requestAnimationFrame(()=>R()));}return false}function Me(){let n=u.value,d=xe(we());if(n===""||o.value.loading||S.value||J.value||o.value.error!==null&&o.value.messages.length===0||Z===n&&(j===d||j.startsWith("located:")||G)||ee===n||$!==null)return;if(!w.value.enabled){Z=n,j=d,V.value=true,Ie();return}let l=++te;G=false,V.value=false;let g=(async()=>{if(await nextTick(),!ue(n,l))return;let v=m.value;if(v===null||!v.isMeasurable())return;let R=we();if(R.state==="located"&&!T.value.includes(R.firstMessageId))return;let Y=R.state==="located"?await Ke(n,l,R.firstMessageId):false;if(R.state==="located"&&!Y)return;Y||v.scrollToLatest();let ie=0;for(;ue(n,l)&&ie<w.value.maxFillPages&&o.value.error===null&&(o.value.hasOlder||o.value.hasNewer&&c.actions.loadNewer!==void 0)&&v.isMeasurable()&&!v.isScrollable();){if(o.value.hasNewer&&c.actions.loadNewer!==void 0&&(o.value.messages.length===0||!o.value.hasOlder)){let le=D;v.prepareHistoryPageAppend();try{await Ue(),await nextTick();}finally{u.value===n&&D===le&&(te===l||G)&&v.cancelHistoryPageAppend();}}else await Ee();if(!ue(n,l)||(ie+=1,await nextTick(),await nextTick(),!v.isMeasurable()))return}if(!ue(n,l)||!v.isMeasurable())return;let he=we();if(he.state==="located"){if(!T.value.includes(he.firstMessageId)||!await Ke(n,l,he.firstMessageId))return}else v.scrollToLatest();await nextTick(),je(n,l);})().catch(()=>{ue(n,l)&&(ee=n);}).finally(()=>{$===g&&($=null);});$=g;}function se(n,d=false){te+=1,$=null,G=false,V.value=n,n||(Z="",j="",d||(ee="")),Ce();}function Re(){O!==void 0&&(D+=1,O.abort(),O=void 0,I=void 0,p.value=false);}function Je(){if(He(true),Re(),G=true,V.value)return;let n=u.value;te+=1,$=null,Z=n,V.value=true,Ie();}let ve=Object.freeze({getViewportElement:()=>m.value?.getViewportElement()??null,loadOlder:Ee,retryOlder:Ae,loadNewer:Ue,retryNewer:ke,jumpToLatest:Te,jumpToEntryUnread:Ge,scrollToMessage:Ve,locateMessage:be,focusViewport:()=>m.value?.focusViewport()});return a(ve),watch(H,n=>{n&&V.value?Ie():Ce();}),watch([()=>o.value.activeRemoteMessageRevision??0,m,u],()=>{let n=m.value;if(n===null||!N.value)return;let d=c.actions.drainActiveRemoteMessageIds?.()??[];n.trackRemoteMessageIds(d,{isAtBottom:B.value,isHistoryWindow:o.value.isHistoryWindow,isPageVisible:ae.value})&&(B.value=false);},{flush:"post"}),watch(()=>o.value.pendingLocationMessageId??"",n=>{(n!==""||S.value)&&(D+=1,S.value=false),n!==""&&(Re(),V.value||se(false));},{flush:"sync"}),watch([u,()=>o.value.loading,()=>o.value.error,()=>T.value.length,()=>o.value.hasOlder,()=>xe(we()),w,()=>o.value.hasNewer,J],([n,d,l,g,,v],[R,,,Y,,ie])=>{if(n!==R&&(Re(),D+=1,S.value=false,W=void 0,se(false),A(true),m.value?.clearNewMessageBadge(),C.value=0,B.value=true,L=[],_.value=false,i$1.value=false,y.value=false,k.value=false,p.value=false,I=void 0,E=false,P=void 0),n!==""&&n===R&&Y!==void 0&&Y>0&&g===0&&(o.value.hasOlder||o.value.hasNewer)&&V.value&&se(false,true),n!==""&&n===R&&v!==ie&&!j.startsWith("located:")&&!G&&v.startsWith("located:")&&(Z="",j="",V.value=false),n===""){se(false);return}if(l!==null&&o.value.messages.length===0){V.value||se(false,true);return}d||Me();},{flush:"post",immediate:true}),onBeforeUnmount(()=>{K=true,Re(),D+=1,se(false),A(true);}),()=>{let n={conversation:t.conversation,state:o.value,items:F.value,actions:ve,initialViewportSettled:u.value!==""&&(o.value.messages.length===0?!o.value.loading&&o.value.error===null&&!o.value.hasOlder&&!o.value.hasNewer:V.value&&Z===u.value)},d=[b.header?.(n),b["before-list"]?.(n)];if(!N.value)d.push(b.unsupported?.(n)??h$1("div",{"data-im-thread-unsupported":""}));else if(!o.value.ready&&o.value.loading)d.push(b.loading?.(n)??h$1("div",{"data-im-thread-loading":""}));else if(o.value.error!==null&&o.value.messages.length===0)d.push(b.error?.(n)??h$1("div",{"data-im-thread-error":""}));else if(o.value.ready&&o.value.messages.length===0&&!o.value.hasOlder&&!o.value.hasNewer)d.push(b.empty?.(n)??h$1("div",{"data-im-thread-empty":""}));else {let l=h$1(ut,{ref:m,messageIds:T.value,contentKey:`${t.conversation.conversationType}\0${t.conversation.conversationId}`,loadingOlder:o.value.loadingOlder??o.value.loading,hasNewer:o.value.hasNewer,loadingNewer:o.value.loadingNewer??o.value.loading,followThreshold:f.value.followThreshold,olderPrefetchThreshold:f.value.olderPrefetchThreshold,visibleMargin:f.value.visibleMargin,activeDateOffset:f.value.activeDateOffset,activeDateEnabled:b["active-date"]!==void 0,resizeFollowEnabled:V.value&&!p.value&&!S.value&&!J.value,followNewMessages:ae.value&&!p.value&&!S.value&&!J.value,shouldFollowAppendedMessage:g=>{let v=o.value.messages.find(R=>R.id===g);return v===void 0?false:c.shouldFollowMessage?.(v)===true},onReachStart:()=>{qe("older").catch(()=>{});},onReachEnd:()=>{qe("newer").catch(()=>{});},onSettled:Ye,onUserScroll:Je,onActiveDateChange:z,onVisibleRange:Xe,onNewMessageCount:g=>{C.value=g;}},{default:()=>[b["viewport-before"]?.(n),h$1(lt,{items:F.value,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{item:b.item,"date-separator":b["date-separator"],"entry-unread":b["entry-unread"],encryption:b.encryption,system:b.system,message:b.message,"recalled-message":b["recalled-message"],"deleted-message":b["deleted-message"],"unsupported-body":b["unsupported-body"]}),b["viewport-after"]?.(n)]});d.push(h$1("div",{"data-im-thread-viewport-shell":""},[b["active-date"]?.({label:ne.value,visible:X.value&&ne.value!==""}),l,b["entry-unread-navigation"]?.({...n,count:o.value.entryUnreadNavigation?.state==="none"?0:o.value.entryUnreadNavigation?.count??0,loading:p.value,visible:n.initialViewportSettled&&!_.value&&!i$1.value&&!o.value.isHistoryWindow&&o.value.entryUnreadNavigation!==void 0&&o.value.entryUnreadNavigation.state!=="none"&&o.value.entryUnreadNavigation.count>0&&(y.value||o.value.hasOlder)})])),o.value.error!==null&&d.push(b.error?.(n)??h$1("div",{"data-im-thread-error":""}));}return d.push(b["after-list"]?.(n),b["jump-to-latest"]?.({...n,count:C.value,visible:k.value||!B.value||o.value.isHistoryWindow}),b["context-menu"]?.(n),b.composer?.(n)),h$1("section",{"data-im-thread-surface":"","data-conversation-type":t.conversation.conversationType,"data-conversation-id":t.conversation.conversationId},d)}}});function Rn(t){let a=new Map;for(let c of t){if(a.has(c.kind))throw new Error(`\u6D88\u606F renderer kind \u91CD\u590D\u6CE8\u518C\uFF1A${c.kind}`);a.set(c.kind,c.component);}let b=Object.freeze([...a.keys()]);return Object.freeze({kinds:b,resolve:c=>a.get(c)})}var Pn=140,En=120;function tt(t,a){if(t.width<=0||t.height<=0)return 0;let b=Math.max(0,Math.min(t.right,a.right)-Math.max(t.left,a.left)),c=Math.max(0,Math.min(t.bottom,a.bottom)-Math.max(t.top,a.top));return Math.min(1,b*c/(t.width*t.height))}function gt(t,a){return {x:t.x,y:t.top-a,top:t.top-a,bottom:t.bottom+a,left:t.left,right:t.right,width:t.width,height:t.height+a*2,toJSON:()=>({})}}function vt(t){let a=Math.max(0,t.scrollIdleMs??Pn),b=Math.max(0,t.visibilityDwellMs??En),c=Math.min(1,Math.max(0,t.minimumIntersectionRatio??.01)),m=Math.max(0,t.revealMarginPx??0),C=Math.max(0,t.preloadMarginPx??0),_=Math.max(m,C),p=Math.max(0,t.maxPreloadTargets??Number.POSITIVE_INFINITY),S=Math.max(1,t.maxSettledVisible??Number.POSITIVE_INFINITY),I=new Map,O=new Map,i=reactive(new Set),y=new Set,k=new Set,E=[],P=null,B=null,L=null,q=false,te=false,D=false,W=false,$,Z;function j(){$!==void 0&&clearTimeout($),$=void 0;}function ee(){Z!==void 0&&clearTimeout(Z),Z=void 0;}function G(f=false){if(!f&&B!==null||P===null)return;let w=P.getBoundingClientRect(),u=gt(w,_);for(let[F,T]of I){let re=F.getBoundingClientRect();T.ratio=tt(re,w),T.intersecting=T.ratio>0,T.revealIntersecting=_>0?tt(re,u)>0:T.intersecting&&T.ratio>=c;}}function K(f){return f.intersecting&&f.ratio>=c}function V(){for(let[f,w]of I)!w.revealIntersecting||i.has(w.key)||_>m&&(m===0&&!K(w)||m>0&&(P===null||tt(f.getBoundingClientRect(),gt(P.getBoundingClientRect(),m))<=0))||(i.add(w.key),t.onRevealed?.(w.item));}function ne(f,w=false){let u=new Set(f.map(T=>T.key));if(!(!(u.size!==k.size||[...u].some(T=>!k.has(T)))&&!w)){k.clear();for(let T of u)k.add(T);t.onSettledVisibleChange?.(f.map(T=>T.item));}}function X(f,w=false){!w&&f.length===E.length&&f.every((u,F)=>u.key===E[F]?.key&&u.item===E[F]?.item)||(E=f,t.onSettledPreloadChange?.(f.map(u=>u.item)));}function ce(){if(D||q)return;let f=te;te=false,G(),V();let w=P?.getBoundingClientRect(),u=w===void 0?0:(w.top+w.bottom)/2,F=[...I.entries()].filter(([,T])=>K(T)).sort(([T],[re])=>{let A=T.getBoundingClientRect(),z=re.getBoundingClientRect();return Math.abs((A.top+A.bottom)/2-u)-Math.abs((z.top+z.bottom)/2-u)}).slice(0,S).map(([,T])=>T);if(ne(F,f),t.onSettledPreloadChange!==void 0&&w!==void 0){let T=gt(w,C),re=[...I.entries()].filter(([,A])=>A.revealIntersecting).map(([A,z])=>({target:z,rect:A.getBoundingClientRect()})).filter(({target:A,rect:z})=>K(A)||C>0&&tt(z,T)>0).sort((A,z)=>Number(K(z.target))-Number(K(A.target))||Math.abs((A.rect.top+A.rect.bottom)/2-u)-Math.abs((z.rect.top+z.rect.bottom)/2-u)).slice(0,p).map(({target:A})=>A);X(re,f);}for(let T of F)y.has(T.key)||(y.add(T.key),t.onActivated?.(T.item));}function oe(){D||q||(ee(),Z=setTimeout(()=>{Z=void 0,ce();},b));}function o(){D||(te=true,J(true),X([]),G(),V(),ne([]),ee(),j(),$=setTimeout(()=>{$=void 0,J(false),oe();},a));}function J(f){q!==f&&(q=f,t.onScrollingChange?.(f));}function ae(){P?.removeEventListener("scroll",o),B?.disconnect(),L?.disconnect(),B=null,L=null,P=null;}function H(f=true){if(D)return;let w=t.getRoot();if(!(w===P&&P!==null)){if(X([]),ae(),P=w,P===null){f&&!W&&(W=true,Promise.resolve().then(()=>{W=false,D||(H(false),oe());}));return}if(P.addEventListener("scroll",o,{passive:true}),typeof IntersectionObserver<"u"){B=new IntersectionObserver(u=>{for(let F of u){let T=I.get(F.target);T!==void 0&&(T.intersecting=F.isIntersecting,T.ratio=F.intersectionRatio,_===0&&(T.revealIntersecting=F.isIntersecting&&F.intersectionRatio>=c));}V(),oe();},{root:P,threshold:[0,c,1]}),_>0&&(L=new IntersectionObserver(u=>{for(let F of u){let T=I.get(F.target);T!==void 0&&(T.revealIntersecting=F.isIntersecting);}V(),oe();},{root:P,rootMargin:`${_}px 0px`,threshold:0}));for(let u of I.keys())B.observe(u);for(let u of I.keys())L?.observe(u);}else G(),V();}}function N(f){X(E.filter(w=>w.key!==f)),i.delete(f),y.delete(f),k.delete(f);}return {register(f,w){if(D)return;let u=t.getKey(f),F=i.has(u),T=y.has(u),re=w===null?void 0:I.get(w);re!==void 0&&re.key!==u&&(O.delete(re.key),I.delete(w),N(re.key));let A=O.get(u);if(A!==void 0&&A!==w&&(B?.unobserve(A),L?.unobserve(A),I.delete(A),O.delete(u)),w===null){A!==void 0&&(B?.unobserve(A),L?.unobserve(A),I.delete(A),O.delete(u)),N(u);return}let z=I.get(w);if(z?.key===u&&z.item===f){H();return}I.set(w,{item:f,key:u,intersecting:z?.key===u?z.intersecting:false,ratio:z?.key===u?z.ratio:0,revealIntersecting:z?.key===u?z.revealIntersecting:false}),O.set(u,w),H(),B?.observe(w),L?.observe(w),G(true),V(),F&&t.onRevealed?.(f),T&&t.onActivated?.(f),oe();},isRevealed:f=>i.has(t.getKey(f)),isActivated:f=>y.has(t.getKey(f)),isSettledVisible:f=>k.has(t.getKey(f)),isScrolling:()=>q,notifyScroll:o,refresh(){H(),G(true),V(),oe();},reset(){j(),ee(),J(false),te=false,ne([]),X([]),ae(),I.clear(),O.clear(),i.clear(),y.clear();},dispose(){D||(j(),ee(),J(false),te=false,ne([]),X([]),ae(),I.clear(),O.clear(),i.clear(),y.clear(),D=true);}}}function An(t){let a=new Map,b=new Map,c=false,m=p=>{let S=a.get(p.channel);return S===void 0?p.channel:`${p.channel}\0${S.getKey(p.item)}`},C=vt({getRoot:t.getRoot,getKey:m,revealMarginPx:t.revealMarginPx,preloadMarginPx:t.preloadMarginPx,minimumIntersectionRatio:t.minimumIntersectionRatio,scrollIdleMs:t.scrollIdleMs,visibilityDwellMs:t.visibilityDwellMs,onScrollingChange:p=>{for(let S of a.values())S.onScrollingChange?.(p);},onRevealed:p=>a.get(p.channel)?.onRevealed?.(p.item),onActivated:p=>a.get(p.channel)?.onActivated?.(p.item),onSettledPreloadChange:p=>{for(let[S,I]of a){let O=p.filter(i=>i.channel===S).map(i=>i.item);I.onSettledPreloadChange?.(O.slice(0,Math.max(0,I.maxPreloadTargets??Number.POSITIVE_INFINITY)));}},onSettledVisibleChange:p=>{for(let[S,I]of a){let O=p.filter(y=>y.channel===S).map(y=>y.item),i=I.maxSettledVisible===void 0?O:O.slice(0,I.maxSettledVisible);I.onSettledVisibleChange?.(i);}}});function _(p){return S=>{if(c)throw new Error("Thread visibility target group \u5DF2\u91CA\u653E");if(a.has(p))throw new Error(`Thread visibility channel \u5DF2\u5B58\u5728: ${p}`);a.set(p,S);let I=new Map;b.set(p,I);let O=false,i=E=>({channel:p,item:E});function y(){for(let E of I.values())C.register(E.target,null);I.clear(),S.onScrollingChange?.(false),S.onSettledVisibleChange?.([]),S.onSettledPreloadChange?.([]);}return {register(E,P){if(O||c)return;let B=S.getKey(E),L=I.get(B);if(P===null){L!==void 0&&(C.register(L.target,null),I.delete(B));return}let q=L?.target.item===E?L.target:i(E);I.set(B,{target:q,element:P}),C.register(q,P);},isRevealed:E=>C.isRevealed(i(E)),isActivated:E=>C.isActivated(i(E)),isSettledVisible:E=>C.isSettledVisible(i(E)),isScrolling:C.isScrolling,notifyScroll:C.notifyScroll,refresh:C.refresh,reset:y,dispose(){O||(y(),O=true,a.delete(p),b.delete(p));}}}}return {createFactory:_,refresh:C.refresh,dispose(){if(!c){for(let p of b.values())for(let S of p.values())C.register(S.target,null);for(let p of a.values())p.onSettledPreloadChange?.([]);b.clear(),a.clear(),C.dispose(),c=true;}}}}export{at as ImThreadBodySwitch,lt as ImThreadItems,Mn as ImThreadSurface,ut as ImThreadViewport,hn as createImThreadSurfaceContext,Rn as createMessageRendererRegistry,An as createThreadVisibilityTargetGroup,vt as createThreadVisibilityTargets,pn as provideImThreadSurfaceContext,Xt as useImText,ct as useImThreadSurfaceContext,Zt as useOptionalImThreadReadActions};
@@ -5210,7 +5210,8 @@ interface ConversationHandle<TType extends ProductHandleConversationType = Produ
5210
5210
  * 按稳定消息 id 打开目标附近的连续历史窗口。
5211
5211
  *
5212
5212
  * @remarks GROUP 完整置顶预览可按消息时间定位;CHANNEL 置顶未缓存时先按 ID 取回正式历史记录,
5213
- * 以服务端游标继续双向分页。短期搜索结果只作为只读锚点;partial 置顶和过期搜索结果明确拒绝定位。
5213
+ * 以服务端游标准备前后相邻页后一次替换窗口;准备失败保留原窗口。只含控制行的页每侧最多继续四页,
5214
+ * 预算用完仍保留分页能力。短期搜索结果只作为只读锚点;partial 置顶和过期搜索结果明确拒绝定位。
5214
5215
  * @throws 没有可用锚点、远端确认缺失或目标不属于当前复合会话时,抛出稳定 `IM_SDK_MESSAGE_NOT_FOUND`
5215
5216
  * (`category: 'state'`、`retryable: false`、`details.messageId`)。这是常见产品结果而非链路异常,
5216
5217
  * 调用方应据此与真正的存储/协议失败区分反馈,不要解析错误文案。
@@ -7059,7 +7060,7 @@ declare const EMOJI_CATALOG: readonly ImEmojiCatalogEntry[];
7059
7060
  * PC Web 发送面板使用的当前版表情目录。
7060
7061
  *
7061
7062
  * H5 或 CDN 路径不同时,在 `emojiAssetUrl` / `emojiUrlByCode` 传入自己的 base,无需修改目录数据。
7062
- * PC 消息回显会在当前版资源加载失败时显式尝试 `/images/emoji/v2`,因此旧目录不能复用这个默认值。
7063
+ * PC/H5 消息只消费 v1:静态场景由宿主提取首帧,加载失败显示占位,不回退旧版资源。
7063
7064
  */
7064
7065
  declare const DEFAULT_EMOJI_ASSET_BASE = "/images/emoji/v1";
7065
7066
  /**
@@ -8330,7 +8331,7 @@ declare function resolveMemberDisplayName(cache: Readonly<Record<string, SenderP
8330
8331
  /**
8331
8332
  * 解析社群消息发送者的展示名。
8332
8333
  *
8333
- * 优先好友备注,再使用该社群内的成员名称和公开昵称,全部缺失时显示完整用户 ID。
8334
+ * 优先好友备注,再使用该社群内的成员名称、机器人目录名和公开昵称,全部缺失时显示完整用户 ID。
8334
8335
  * 社群成员资料与普通群昵称是两套独立数据,不能互相借用。
8335
8336
  */
8336
8337
  declare function resolveChannelMemberDisplayName(cache: Readonly<Record<string, SenderProfileEntry>>, channelMembers: Readonly<Record<string, Record<string, ChannelMemberProfileEntry>>>, channelId: string, userId: string): string;
package/dist/chat-kit.js CHANGED
@@ -1 +1 @@
1
- export{q as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,p as DEFAULT_LOADING_SHOW_DELAY_MS,x as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,w as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,e as MINI_PROGRAM_LANG_NUMBERS,S as SPIKE_STEP,N as calculateMediaBox,E as canCopyMessageImage,t as canPromoteMediaPresentationSource,B as captureRuntimeClientOperation,A as captureRuntimeOperation,n as channelMiniProgramRelKey,z as createConversationPrefetchController,r as createDelayedLoadingIndicator,L as createLinkMatcher,F as createMessageImageCopySource,f as csvIncludes,d as decideChannelMiniProgramRelOpen,P as formatFileSize,O as formatMediaDuration,Q as getFileExtension,D as getMessageCopyImageUrl,C as getMessageCopyText,K as hasLinkCandidate,u as highlightSegments,a as isMiniProgramShowTypeOpenable,G as mediaService,J as normalizeLinkHref,V as placeholderWaveform,H as readService,U as resampleWaveform,s as resolveBestMediaPresentationSource,h as resolveChannelMiniProgramRelIcon,g as resolveChannelMiniProgramRelName,j as resolveChannelMiniProgramRelOpenSurface,i as resolveChannelMiniProgramRelUrl,k as resolveChannelPinnedGameCopy,o as resolveConversationListPresentation,M as resolveMediaPresentation,R as resolveMediaTransferPresentation,v as resolveMessageSearchPreview,c as resolveMiniProgramFloatLinkUrl,y as resolveMiniProgramGamePreviewLayout,b as resolveMiniProgramOpenUrl,I as resolveQuotedMessagePresentation,m as resolveVisibleChannelMiniProgramRels,l as sortChannelMiniProgramFloatingItems,T as spikeCountForDuration}from'./chunk-GMM3QOMY.js';export{j as DEFAULT_EMOJI_ASSET_BASE,i as EMOJI_CATALOG,c as EMOJI_GAME_DICE_STABLE_KEY,b as EMOJI_GAME_RPS_STABLE_KEY,m as EMOJI_TOKEN_RE,P as MAX_BATCH_FILES,a as MAX_RECENT_EMOJI_COUNT,g as UNICODE_EMOJI_CATALOG,O as blockReasonForChannelSession,N as blockReasonForChannelState,V as blockReasonForGroupState,Y as blockReasonForSession,I as canEditMessage,w as canPinChannelMessage,v as canPinGroupMessage,x as canPinMessage,H as canRecallMessage,fa as cancelMediaUpload,T as classifyGifFile,S as classifyMediaFile,s as countUnreadConversations,u as createChatRuntime,p as createEmojiMatcher,K as decideConversationAction,M as decideMemberTargetAction,L as decideMessageAction,l as emojiAssetUrl,n as emojiUrlByCode,Fa as fetchConversationFileBatch,Ga as fetchConversationImageBatch,Da as fetchConversationMessageBatch,Ha as fetchConversationVideoBatch,Ia as fetchConversationVoiceBatch,Ja as fetchNextConversationSearchBatch,r as formatConversationUnreadBadge,ia as forwardService,o as hasEmojiCandidate,U as isGifFile,y as isPinnedMessageProtected,aa as isVoiceStorageConfigured,Q as mediaBatchBudgetBytes,na as messageService,e as parseUnicodeEmojiCode,sa as pinnedMessageService,d as prependRecentEmoji,Ca as profileService,$ as replaceInterruptedMediaFile,W as requiresConversationEncryption,D as resolveChannelMemberAvatarUrl,C as resolveChannelMemberDisplayName,k as resolveEmojiToken,G as resolveFriendDisplayName,ta as resolveImProfileAccessDestination,A as resolveMemberDisplayName,t as resolveMessageNotificationDecision,F as resolvePublicNickname,E as resolveSenderAvatarUrl,q as resolveStandaloneEmojiMessage,h as resolveUnicodeEmoji,ga as retryMessage,R as runMediaSendBatch,ea as sendAsFilesBatch,J as sendBlockReasonForDecision,ca as sendMediaAlbum,_ as sendMediaFile,da as sendMediaFilesBatch,Z as sendText,ba as sendVoice,X as supportsConversationMention,f as unicodeEmojiTextFromCode}from'./chunk-VWXKODJ7.js';export{C as createNewMessageBadgeController,i as createThreadItems,f as formatChatDateSeparator,e as formatConversationDisplayTime,c as getLocalDayKey,l as isMessageLocateScrollProtected,v as isMessageTailChangeFromOlderWindowTrim,k as isMessageViewportMeasurable,B as isMessageVisibleForNewMessageBadge,x as loadOlderUntilBoundary,p as refreshPrependMessageAnchorPosition,j as resolveCenteredMessageScrollTop,a as resolveDisplayTimestamp,g as resolveImThreadActiveDate,h as resolveMessageBodyKind,b as resolveMessageTimelineTimestamp,n as resolvePrependMessageAnchor,q as resolvePrependMessageAnchorAdjustment,o as resolvePrependMessageAnchorPosition,s as resolveSurvivingMessageAnchorAdjustment,r as resolveVisibleMessageAnchorPositions,t as shouldCompleteInitialViewport,y as shouldFillInitialHistoryViewport,u as shouldFollowIncomingMessage,z as shouldLoadNewerHistoryPage,m as shouldPrefetchOlderHistory,w as shouldRestoreMessageViewportFocus,d as shouldShowChatDateSeparator,A as shouldTrackRemoteMessageForBadge}from'./chunk-CVLKJADF.js';import'./chunk-PPXQWMHO.js';import'./chunk-HE3QXYNQ.js';import'./chunk-YNYTR73D.js';export{va as canTransmit,ta as canTransmitByType,ua as canTransmitContent,sa as requiresForwardTypeConfirmation}from'./chunk-J77L6JLQ.js';import'./chunk-WOT6VMZA.js';
1
+ export{q as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,p as DEFAULT_LOADING_SHOW_DELAY_MS,x as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,w as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,e as MINI_PROGRAM_LANG_NUMBERS,S as SPIKE_STEP,N as calculateMediaBox,E as canCopyMessageImage,t as canPromoteMediaPresentationSource,B as captureRuntimeClientOperation,A as captureRuntimeOperation,n as channelMiniProgramRelKey,z as createConversationPrefetchController,r as createDelayedLoadingIndicator,L as createLinkMatcher,F as createMessageImageCopySource,f as csvIncludes,d as decideChannelMiniProgramRelOpen,P as formatFileSize,O as formatMediaDuration,Q as getFileExtension,D as getMessageCopyImageUrl,C as getMessageCopyText,K as hasLinkCandidate,u as highlightSegments,a as isMiniProgramShowTypeOpenable,G as mediaService,J as normalizeLinkHref,V as placeholderWaveform,H as readService,U as resampleWaveform,s as resolveBestMediaPresentationSource,h as resolveChannelMiniProgramRelIcon,g as resolveChannelMiniProgramRelName,j as resolveChannelMiniProgramRelOpenSurface,i as resolveChannelMiniProgramRelUrl,k as resolveChannelPinnedGameCopy,o as resolveConversationListPresentation,M as resolveMediaPresentation,R as resolveMediaTransferPresentation,v as resolveMessageSearchPreview,c as resolveMiniProgramFloatLinkUrl,y as resolveMiniProgramGamePreviewLayout,b as resolveMiniProgramOpenUrl,I as resolveQuotedMessagePresentation,m as resolveVisibleChannelMiniProgramRels,l as sortChannelMiniProgramFloatingItems,T as spikeCountForDuration}from'./chunk-GQHGZRFP.js';export{j as DEFAULT_EMOJI_ASSET_BASE,i as EMOJI_CATALOG,c as EMOJI_GAME_DICE_STABLE_KEY,b as EMOJI_GAME_RPS_STABLE_KEY,m as EMOJI_TOKEN_RE,P as MAX_BATCH_FILES,a as MAX_RECENT_EMOJI_COUNT,g as UNICODE_EMOJI_CATALOG,O as blockReasonForChannelSession,N as blockReasonForChannelState,V as blockReasonForGroupState,Y as blockReasonForSession,I as canEditMessage,w as canPinChannelMessage,v as canPinGroupMessage,x as canPinMessage,H as canRecallMessage,fa as cancelMediaUpload,T as classifyGifFile,S as classifyMediaFile,s as countUnreadConversations,u as createChatRuntime,p as createEmojiMatcher,K as decideConversationAction,M as decideMemberTargetAction,L as decideMessageAction,l as emojiAssetUrl,n as emojiUrlByCode,Fa as fetchConversationFileBatch,Ga as fetchConversationImageBatch,Da as fetchConversationMessageBatch,Ha as fetchConversationVideoBatch,Ia as fetchConversationVoiceBatch,Ja as fetchNextConversationSearchBatch,r as formatConversationUnreadBadge,ia as forwardService,o as hasEmojiCandidate,U as isGifFile,y as isPinnedMessageProtected,aa as isVoiceStorageConfigured,Q as mediaBatchBudgetBytes,na as messageService,e as parseUnicodeEmojiCode,sa as pinnedMessageService,d as prependRecentEmoji,Ca as profileService,$ as replaceInterruptedMediaFile,W as requiresConversationEncryption,D as resolveChannelMemberAvatarUrl,C as resolveChannelMemberDisplayName,k as resolveEmojiToken,G as resolveFriendDisplayName,ta as resolveImProfileAccessDestination,A as resolveMemberDisplayName,t as resolveMessageNotificationDecision,F as resolvePublicNickname,E as resolveSenderAvatarUrl,q as resolveStandaloneEmojiMessage,h as resolveUnicodeEmoji,ga as retryMessage,R as runMediaSendBatch,ea as sendAsFilesBatch,J as sendBlockReasonForDecision,ca as sendMediaAlbum,_ as sendMediaFile,da as sendMediaFilesBatch,Z as sendText,ba as sendVoice,X as supportsConversationMention,f as unicodeEmojiTextFromCode}from'./chunk-B4SOXSDP.js';export{C as createNewMessageBadgeController,i as createThreadItems,f as formatChatDateSeparator,e as formatConversationDisplayTime,c as getLocalDayKey,l as isMessageLocateScrollProtected,v as isMessageTailChangeFromOlderWindowTrim,k as isMessageViewportMeasurable,B as isMessageVisibleForNewMessageBadge,x as loadOlderUntilBoundary,p as refreshPrependMessageAnchorPosition,j as resolveCenteredMessageScrollTop,a as resolveDisplayTimestamp,g as resolveImThreadActiveDate,h as resolveMessageBodyKind,b as resolveMessageTimelineTimestamp,n as resolvePrependMessageAnchor,q as resolvePrependMessageAnchorAdjustment,o as resolvePrependMessageAnchorPosition,s as resolveSurvivingMessageAnchorAdjustment,r as resolveVisibleMessageAnchorPositions,t as shouldCompleteInitialViewport,y as shouldFillInitialHistoryViewport,u as shouldFollowIncomingMessage,z as shouldLoadNewerHistoryPage,m as shouldPrefetchOlderHistory,w as shouldRestoreMessageViewportFocus,d as shouldShowChatDateSeparator,A as shouldTrackRemoteMessageForBadge}from'./chunk-CVLKJADF.js';import'./chunk-PPXQWMHO.js';import'./chunk-SVA6OESM.js';import'./chunk-YNYTR73D.js';export{va as canTransmit,ta as canTransmitByType,ua as canTransmitContent,sa as requiresForwardTypeConfirmation}from'./chunk-J77L6JLQ.js';import'./chunk-WOT6VMZA.js';
@@ -0,0 +1 @@
1
+ import {j,p,b as b$1,i,f,q}from'./chunk-SVA6OESM.js';import {fb,eb}from'./chunk-YNYTR73D.js';import {va,a as a$1,b,ra,Aa,Ca,o}from'./chunk-J77L6JLQ.js';import {a}from'./chunk-WOT6VMZA.js';var Pn=14,Tn="game:rps",En="game:dice";function Je(e){if(e.stableKey.length===0||e.stableKey.trim()!==e.stableKey)throw new TypeError("Emoji recent item \u9700\u8981\u975E\u7A7A\u4E14\u65E0\u9996\u5C3E\u7A7A\u767D\u7684 stableKey")}function Rn(e,t){Je(t);let n=new Set([t.stableKey]),r=[t];for(let o of e)if(Je(o),!n.has(o.stableKey)&&(n.add(o.stableKey),r.push(o),r.length===14))break;return Object.freeze(r)}var qe=["0x1f600","0x1f603","0x1f604","0x1f601","0x1f606","0x1f605","0x1f923","0x1f602","0x1f642","0x1f643","0x1f609","0x1f60a","0x1f607","0x1f970","0x1f60d","0x1f929","0x1f618","0x1f617","0x1f61a","0x1f619","0x1f60b","0x1f61b","0x1f61c","0x1f92a","0x1f61d","0x1f911","0x1f917","0x1f92d","0x1f92b","0x1f914","0x1f910","0x1f928","0x1f610","0x1f611","0x1f636","0x1f60f","0x1f612","0x1f644","0x1f62c","0x1f925","0x1f60c","0x1f614","0x1f62a","0x1f924","0x1f634","0x1f637","0x1f912","0x1f915","0x1f922","0x1f92e","0x1f927","0x1f975","0x1f976","0x1f974","0x1f635","0x1f92f","0x1f920","0x1f973","0x1f60e","0x1f913","0x1f9d0","0x1f615","0x1f61f","0x1f641","0x1f62e","0x1f62f","0x1f632","0x1f633","0x1f97a","0x1f626","0x1f627","0x1f628","0x1f630","0x1f625","0x1f622","0x1f62d","0x1f631","0x1f616","0x1f623","0x1f61e","0x1f613","0x1f629","0x1f62b","0x1f971","0x1f624","0x1f621","0x1f620","0x1f92c","0x1f608","0x1f47f","0x1f480","0x1f4a9","0x1f921","0x1f479","0x1f47a","0x1f47b","0x1f47d","0x1f47e","0x1f916","0x1f63a","0x1f638","0x1f639","0x1f63b","0x1f63c","0x1f63d","0x1f640","0x1f63f","0x1f63e","0x1f648","0x1f649","0x1f64a","0x1f48c","0x1f498","0x1f49d","0x1f496","0x1f497","0x1f493","0x1f49e","0x1f495","0x1f49f","0x1f494","0x1f9e1","0x1f49b","0x1f49a","0x1f499","0x1f49c","0x1f90e","0x1f5a4","0x1f90d","0x1f48b","0x1f4af","0x1f4a2","0x1f4a5","0x1f4ab","0x1f4a6","0x1f4a8","0x1f4ac","0x1f4ad","0x1f4a4","0x1f44b","0x1f91a","0x1f590","0x270b","0x1f596","0x1f44c","0x1f90f","0x270c","0x1f91e","0x1f91f","0x1f918","0x1f919","0x1f448","0x1f449","0x1f446","0x1f595","0x1f447","0x1f44d","0x1f44e","0x270a","0x1f44a","0x1f91b","0x1f91c","0x1f44f","0x1f64c","0x1f450","0x1f932","0x1f91d","0x1f64f","0x270d","0x1f485","0x1f933","0x1f4aa","0x1f9be","0x1f9bf","0x1f9b5","0x1f9b6","0x1f442","0x1f9bb","0x1f443","0x1f9e0","0x1f9b7","0x1f9b4","0x1f440","0x1f445","0x1f444","0x1f435","0x1f9a7","0x1f436","0x1f98a","0x1f99d","0x1f431","0x1f981","0x1f42f","0x1f42e","0x1f437","0x1f43d","0x1f42d","0x1f439","0x1f430","0x1f43b","0x1f428","0x1f43c","0x1f9a5","0x1f983","0x1f414","0x1f423","0x1f425","0x1f427","0x1f985","0x1f986","0x1f989","0x1f9a9","0x1f99a","0x1f99c","0x1f438","0x1f433","0x1f980","0x1f490","0x1f338","0x1f4ae","0x1f339","0x1f940","0x1f33a","0x1f33b","0x1f340","0x1f341","0x1f342","0x1f343","0x1f9c0","0x1f969","0x1f354","0x1f35f","0x1f355","0x1f32d","0x1f96a","0x1f32e","0x1f32f","0x1f365","0x1f36b","0x2615","0x1f37a","0x1f943","0x1f30f","0x1f9f1","0x1f6d1","0x1f6a7","0x2693","0x1f680","0x23f3","0x231a","0x23f0","0x1f553","0x1f319","0x1f31a","0x1f31b","0x1f31c","0x1f31d","0x1f31e","0x1fa90","0x2b50","0x1f31f","0x1f320","0x1f30c","0x26c5","0x1f300","0x1f308","0x1f302","0x2614","0x26a1","0x26c4","0x1f525","0x1f4a7","0x1f30a","0x1f383","0x1f384","0x1f386","0x1f387","0x1f9e8","0x2728","0x1f388","0x1f389","0x1f38a","0x1f38b","0x1f38d","0x1f38e","0x1f38f","0x1f390","0x1f391","0x1f9e7","0x1f380","0x1f381","0x1f3ab","0x1f3c6","0x1f3c5","0x1f947","0x1f948","0x1f949","0x1f3c1","0x1f6a9","0x1f38c","0x1f3f4"];var An=1114111,kn=55296,_n=57343,Ze=65039,Nn="0123456789abcdef";function Dn(e,t){if(!e.startsWith("0x")||e.length<=2)throw new TypeError(`\u975E\u6CD5 Unicode emoji code: ${t}`);let n=e.slice(2);for(let o of n)if(!Nn.includes(o))throw new TypeError(`\u975E\u6CD5 Unicode emoji code: ${t}`);let r=Number.parseInt(n,16);if(!Number.isSafeInteger(r)||r>An||r>=kn&&r<=_n)throw new RangeError(`Unicode emoji code point \u8D8A\u754C: ${t}`);return r}function ue(e){if(e.length===0||e.trim()!==e)throw new TypeError(`\u975E\u6CD5 Unicode emoji code: ${e}`);let t=e.split(" ");if(t.some(n=>n.length===0))throw new TypeError(`\u975E\u6CD5 Unicode emoji code: ${e}`);return Object.freeze(t.map(n=>Dn(n,e)))}function On(e){return String.fromCodePoint(...ue(e))}function Te(e){return e.map(t=>`0x${t.toString(16)}`).join(" ")}function Gn(e){let t=ue(e),n=Te(t);if(n!==e)throw new TypeError(`Unicode emoji code \u5FC5\u987B\u4F7F\u7528 canonical \u5C0F\u5199\u683C\u5F0F: ${e}`);return Object.freeze({stableKey:`unicode:${n}`,code:e,codePoints:t,text:String.fromCodePoint(...t),kind:"unicode"})}var Ee=Object.freeze(qe.map(Gn)),Q=new Map,ee=new Map;for(let e of Ee){if(Q.has(e.code)||ee.has(e.text))throw new Error(`Unicode emoji \u76EE\u5F55\u5B58\u5728\u91CD\u590D\u9879: ${e.code}`);Q.set(e.code,e),ee.set(e.text,e);}for(let e of Ee){let n=e.codePoints.at(-1)===Ze?e.codePoints.slice(0,-1):[...e.codePoints,Ze],r=Te(n),o=String.fromCodePoint(...n);Q.has(r)||Q.set(r,e),ee.has(o)||ee.set(o,e);}function Bn(e){if(e.startsWith("0x")){let t=Te(ue(e));return Q.get(t)}return ee.get(e)}var Qe=["[100\u5206]","[VS]","[\u4E0A]","[\u4E0B]","[\u4E0D\u542C]","[\u4E0D\u770B]","[\u4E0D\u9AD8\u5174]","[\u4EB2\u543B]","[\u4F1E]","[\u51FB\u638C]","[\u5357\u74DC\u5934]","[\u53F3]","[\u54C8\u54C8]","[\u54E6]","[\u5564\u9152]","[\u55B7\u568F]","[\u5723\u8BDE\u6811]","[\u5929\u4F7F\u7B11]","[\u5956\u676F]","[\u5BB3\u6015]","[\u5DE6]","[\u5E73\u9759]","[\u5F3A\u58EE]","[\u5F69\u8679]","[\u5F97\u610F]","[\u5FAE\u7B11]","[\u5FC3\u7D2F]","[\u5FC3\u8DF3]","[\u601D\u8003]","[\u6076\u9B54\u6012]","[\u6076\u9B54\u7B11]","[\u6210\u957F]","[\u6293\u72C2]","[\u62F3\u5934]","[\u6325\u624B]","[\u63E1\u62F3]","[\u65E0]","[\u661F\u661F]","[\u661F\u661F\u773C]","[\u6708\u997C]","[\u6C14\u6124]","[\u6EE1\u8DB3]","[\u706B]","[\u718A\u732B]","[\u7231\u4F60]","[\u725B]","[\u72D7]","[\u732B]","[\u7591\u60D1]","[\u7687\u51A0]","[\u778C\u7761]","[\u795D]","[\u79D8]","[\u7BEE\u7403]","[\u7F8E\u5473]","[\u836F]","[\u8DB3\u7403]","[\u95EA\u7535]","[\u95EA\u8000\u7684\u5FC3]","[\u96EA\u82B1]","[\u997A\u5B50]","[\u9A6C]","[\u9B3C]","[\u9E21]","[\u9F13\u638C]","[\u9F20]","[ALLIN]","[\u4F24\u5FC3]","[\u4FBF\u4FBF]","[\u5077\u7B11]","[\u50B2\u6162]","[\u50BB\u7B11]","[\u5192\u6C57]","[\u51CB\u96F6]","[\u53D1\u5446]","[\u53EF\u601C]","[\u53F9\u6C14]","[\u5403\u60CA]","[\u5403\u74DC]","[\u5408\u638C]","[\u5446\u6EDE]","[\u5455\u5410]","[\u5492\u9A82]","[\u5496\u5561]","[\u54C7]","[\u559C\u7231]","[\u5634\u5507]","[\u563F\u54C8]","[\u56F0]","[\u56F0\u4F4F]","[\u5927\u54ED]","[\u5927\u7B11]","[\u592A\u9633]","[\u5931\u671B]","[\u594B\u6597]","[\u5978\u7B11]","[\u59D4\u5C48]","[\u5BB3\u7F9E]","[\u5C2C\u7B11]","[\u5E72\u676F]","[\u5E86\u795D]","[\u5FC3\u788E]","[\u6050\u60E7]","[\u60CA\u8BB6]","[\u6109\u60A6]","[\u611F\u5192]","[\u6124\u6012]","[\u61CA\u607C]","[\u620F\u5F04]","[\u6253\u51FB]","[\u62A0\u9F3B]","[\u62B1\u62F3]","[\u62C5\u5FC3]","[\u62DC\u62DC]","[\u62E5\u62B1]","[\u6342\u8138]","[\u63E1\u624B]","[\u642C\u7816]","[\u6536\u5230]","[\u6536\u5272]","[\u65B9\u5757]","[\u65E0\u8BED]","[\u6655]","[\u6708\u4EAE]","[\u673A\u667A]","[\u6C57]","[\u6D77\u8482]","[\u70B8\u5F39]","[\u70DF\u82B1]","[\u718A\u54ED\u4E86]","[\u7206\u7AF9]","[\u7231\u5FC3]","[\u725B\u5E02]","[\u72D7\u5934]","[\u732A]","[\u73AB\u7470]","[\u751F\u65E5\u86CB\u7CD5]","[\u767D\u773C]","[\u76B1\u7709]","[\u770B\u6DA8]","[\u770B\u8DCC]","[\u7728\u773C]","[\u7761\u89C9]","[\u793C\u7269]","[\u793E\u4F1A]","[\u798F]","[\u7B11\u54ED]","[\u7CD6\u679C]","[\u7EA2\u5305]","[\u8036]","[\u8138\u7EA2]","[\u82E6\u6DA9]","[\u83DC\u5200]","[\u8870]","[\u88C2\u5F00]","[\u8981\u54ED\u4E86]","[\u8C03\u76AE]","[\u8D5E]","[\u8E29]","[\u9119\u89C6]","[\u9177]","[\u91D1\u94B1]","[\u9501\u7BB1]","[\u957F\u8349]","[\u95EE\u53F7]","[\u95F9\u5267]","[\u9634\u9669]","[\u964D\u843D\u4F1E]","[\u96BE\u8FC7]","[\u98DE\u543B]","[\u9AB7\u9AC5]","[\u9EBB\u5C06]"];var en=j,Ln=new Set(Qe),Hn="/images/emoji/v1",Fn=(()=>{let e=new Map;for(let t of en)for(let n of t.tokens)e.set(n,t);return e})();function Un(e){return Fn.get(e)}function Vn(e,t=Hn){return `${t}/${e.file}`}var Kn=/\[[^[\]]{1,20}\]/g,zn=(()=>{let e=new Map;for(let t of en)e.set(t.code,t);return e})();function ur(e,t){let n=zn.get(e);return n===void 0?void 0:Vn(n,t)}var Wn=/\[[^[\]]{1,20}\]/;function mr(e){return Wn.test(e)}function $n(){return e=>{let t=[];for(let n of e.matchAll(Kn)){let r=Un(n[0]);if(n.index!==void 0){if(r!==void 0){t.push({start:n.index,end:n.index+n[0].length-1,segment:{kind:"emoji",text:n[0],code:r.code}});continue}Ln.has(n[0])&&t.push({start:n.index,end:n.index+n[0].length-1,segment:{kind:"legacy-emoji-placeholder",text:n[0]}});}}return t}}var Xn=$n();function gr(e){if(e.contentType!=="text"||e.encryption.decryptFailed===true||e.mention!==void 0)return null;let t=e.body.text;if(t===void 0||t==="")return null;let n=Xn(t);if(n.length===0)return null;let r=0,o=[];for(let a of n){if(a.start!==r||a.segment.kind!=="emoji"&&a.segment.kind!=="legacy-emoji-placeholder")return null;o.push(a.segment),r=a.end+1;}return r!==t.length?null:Object.freeze({segments:Object.freeze(o),count:o.length})}function Cr(e){if(!Number.isFinite(e)||e<1)return "";let t=Math.floor(e);return t>1e4?"10k+":t>=1e3?`${Math.floor(t/1e3)}k`:String(t)}function Mr(e){return e.reduce((t,n)=>t+ +(!n.muted&&n.unreadCount>0),0)}function br(e){return e.source!=="live"?{show:false,reason:"not-live"}:e.permission===null?{show:false,reason:"unsupported"}:e.permission!=="granted"?{show:false,reason:"permission-denied"}:e.visibilityState==="visible"?{show:false,reason:"page-visible"}:e.accountId!==""&&e.senderId===e.accountId?{show:false,reason:"self-message"}:e.contentType==="system"?{show:false,reason:"system-message"}:e.muted?{show:false,reason:"conversation-muted"}:e.globallyEnabled?{show:true}:{show:false,reason:"globally-disabled"}}function nn(e){let t=new Map,n=new Set,r=e.revokeObjectUrl??(v=>URL.revokeObjectURL(v)),o=e.now??Date.now,a=e.maxIdleMs;if((!Number.isFinite(a)||a<=0))throw new RangeError("maxIdleMs must be a finite positive number");let s;function i(){s!==void 0&&clearTimeout(s),s=void 0;}function c(){if(i(),a===void 0);let v=Number.POSITIVE_INFINITY;for(let C of t.values())C.evictable&&C.leases===0&&(v=Math.min(v,C.lastAccessedAt+a));Number.isFinite(v)&&(s=setTimeout(()=>{s=void 0,u();},Math.min(2147483647,Math.max(0,v-o()))),s.unref?.());}function l(v){v.revoked||(v.revoked=true,n.delete(v),r(v.url));}function f(v){t.get(v.key)===v&&t.delete(v.key),v.retired=true,v.leases===0?l(v):n.add(v);}function p(){let v=0,C=0;for(let P of t.values())P.evictable&&(v+=1,C+=P.byteSize);return {entries:v,bytes:C}}function g(){let v=p();for(;v.entries>e.maxCachedEntries||v.bytes>e.maxCachedBytes;){let C;for(let P of t.values())if(P.evictable&&P.leases===0){C=P;break}if(C===void 0)return;f(C),v=p();}}function u(){if(a!==void 0){let v=o();for(let C of t.values())C.evictable&&C.leases===0&&v-C.lastAccessedAt>=a&&f(C);}g(),c();}function y(v,C,P){let O=P.byteSize??0,G=Number.isFinite(O)&&O>0?Math.floor(O):0,w=t.get(v);if(w?.url===C){w.byteSize=G,w.evictable=P.evictable,w.lastAccessedAt=o(),t.delete(v),t.set(v,w),u();return}w!==void 0&&f(w),t.set(v,{key:v,url:C,byteSize:G,evictable:P.evictable,leases:0,retired:false,revoked:false,lastAccessedAt:o()}),u();}function d(v,C){u();let P=t.get(v);if(P===void 0)return false;let O=t.get(C);return O!==void 0&&O!==P&&f(O),t.delete(v),P.key=C,t.set(C,P),c(),true}function M(v,C){u();let P=t.get(v);return P===void 0?false:(C!==void 0&&Number.isFinite(C)&&C>0&&(P.byteSize=Math.floor(C)),P.evictable=true,P.lastAccessedAt=o(),t.delete(v),t.set(v,P),u(),t.get(v)===P)}function h(v){u();let C=t.get(v);if(C===void 0||C.revoked)return;C.leases+=1,C.lastAccessedAt=o(),t.delete(v),t.set(v,C),c();let P=false;return Object.freeze({url:C.url,release(){P||(P=true,C.leases=Math.max(0,C.leases-1),C.leases===0&&!C.revoked&&(C.lastAccessedAt=o()),C.retired&&C.leases===0&&l(C),u());}})}function E(v){let C=t.get(v);C!==void 0&&f(C),u();}function b(v){for(let C of [...t.keys()])C.startsWith(v)&&E(C);}function k(){i();let v=[...t.values()];t.clear();for(let C of [...v,...n])l(C);n.clear();}function j(){for(let v of t.values())v.evictable&&f(v);u();}return {register:y,move:d,makeEvictable:M,acquire:h,has:v=>(u(),t.has(v)&&!t.get(v).revoked),remove:E,removeByPrefix:b,clearAll:k,clearCached:j,prune:u,getStats:()=>(u(),Object.freeze({activeEntries:t.size,retiredEntries:n.size,...p()}))}}var Yn=20;function Jn(){if(typeof navigator>"u")return {maxCachedEntries:6,maxCachedBytes:512*1024*1024};let e=navigator,t=e.deviceMemory??4,n=/Android|iPhone|iPad|Mobile/i.test(e.userAgent);return e.connection?.saveData===true||t<=2||navigator.hardwareConcurrency<=2?{maxCachedEntries:2,maxCachedBytes:128*1024*1024}:n?{maxCachedEntries:4,maxCachedBytes:256*1024*1024}:t>=8&&navigator.hardwareConcurrency>=8?{maxCachedEntries:9,maxCachedBytes:1024*1024*1024}:{maxCachedEntries:6,maxCachedBytes:512*1024*1024}}function ne(e){let t=`message\0${e.conversationType}\0${e.conversationId}\0${e.messageId}`;return e.itemIndex===void 0?t:`${t}\0${e.itemIndex}`}function qn(e){return `message\0${e.conversationType}\0${e.conversationId}\0`}function Re(e){return `source\0${e}`}function tn(e){if(!(typeof e!="object"||e===null||!("code"in e))){if(e.code==="IM_CONNECTION_OWNED_ELSEWHERE")return "lifecycle.connectionOccupied";if(e.code==="IM_CONNECTION_OWNERSHIP_UNAVAILABLE")return "lifecycle.connectionCoordinationUnavailable"}}function Wr(e){let t=a$1(e.cachePrefix),n=b(t),r=e.createClient??p,o=e.createStorage??(m=>typeof indexedDB>"u"?void 0:fb({...m,mediaAssetCache:{strategies:b$1()}})),a=e.createProfile,s=e.deleteStorage??(m=>eb(m.accountId,{namespaceFactory:m.namespaceFactory})),i$1=null,c=null,l=false,f,p$1,g,u=0,y,d=false,M,h=false,E,b$2={wsUrl:"",userId:"",token:"",deviceToken:"",channelType:"0",cmHttpBaseUrl:""},k=i(e.debug,()=>({generation:u,...b$2.userId===""?{}:{accountId:b$2.userId}}));k.record("debug","chat-kit","session","runtime-created");function j(){return {generation:u,...b$2.userId===""?{}:{accountId:b$2.userId}}}function v(){b$2.userId="",b$2.token="",b$2.deviceToken="",b$2.channelType="0";}let C={},P={},O={},G=new Map,w=nn({...Jn(),maxIdleMs:10080*60*1e3}),ce=new Set,Y=new Set,de=new Set;function J(){for(let m of de)m();}function pe(m=false){let S=j(),I=i$1,T=p$1!==void 0||g!==void 0;p$1?.(),p$1=void 0,g?.(),g=void 0,T&&k.record("debug","chat-kit","session","client-subscriptions-released",()=>S),m||I?.connection.disconnect("im-chat-auth-changed"),i$1=null,c=null;let R=f;f=void 0;let D;try{D=I!==null&&y?.uploadRecovery?.enabled&&!m?I.logout({localData:"preserve"}).finally(()=>I.dispose()):Promise.resolve(I!==null?I.dispose():R?.close());}catch(z){D=Promise.reject(z);}let L=D.catch(z=>{h=true,E=z,k.record("error","chat-kit","session","previous-client-dispose-failed",()=>({...S,error:{message:"\u65E7 IM Client \u6E05\u7406\u5931\u8D25\uFF0C\u5DF2\u963B\u6B62\u65B0\u8D26\u53F7\u51C6\u5907",data:z}}));});M=M===void 0?L:Promise.all([M,L]).then(()=>{}),u+=1,C={},P={},O={},ve(),G.clear(),J();}function le(){if(d)throw new Error("ChatRuntime \u5DF2 dispose\uFF0C\u4E0D\u80FD\u521B\u5EFA/\u590D\u7528 client");if(i$1===null){let S=o({namespaceFactory:n});f=S;let I=y?.getCoreClient(),T=y?.getCoreApi?.();l=I!==void 0||T!==void 0;let R=y?.clientType??2,D=u,L=y?.onRequestError,z=I&&a?a({client:I,clientType:R,storage:f}):void 0,Sn={authProvider:{getLoginContext:async()=>{let _=y?.getSession?.(),B=y?.getSession!==void 0,W=(B?_?.userId:b$2.userId)?.trim()??"",Ke=(B?_?.token:b$2.token)?.trim()??"";return W===""||Ke===""||W!==b$2.userId?null:{userId:W,token:Ke,deviceToken:b$2.deviceToken,clientType:R,channelType:Number(b$2.channelType)}}},endpointProvider:{getEndpoints:async()=>[{url:b$2.wsUrl}],getCmHttpBaseUrl:async()=>b$2.cmHttpBaseUrl},cache:{prefix:t},adapters:{namespaceFactory:n,storage:{create:_=>{if(_.namespaceFactory!==n)throw new Error("ChatRuntime storage namespace factory \u4E0D\u4E00\u81F4");return S},purgeCurrentAccount:_=>s(_)}},profile:z,media:y?.getMediaConfig(),uploadRecovery:y?.uploadRecovery,expressions:y?.getExpressionOptions?.(),coreApi:T,coreClient:I,onRequestError:L===void 0?void 0:_=>!d&&u===D?L(_):void 0,debug:e.debug},Ve=r(Sn),ye=Ve.events;if(ye===void 0&&Y.size>0)throw Promise.resolve(f?.close?.()).catch(()=>{}),f=void 0,new Error("IM client \u7F3A\u5C11\u4EA7\u54C1\u4E8B\u4EF6 API");i$1=Ve,p$1=i$1.connection.subscribe(_=>{if((_.type==="message:updated"||_.type==="message:received")&&_.message.status==="failed"&&_.message.failure?.displayCode==="media.uploadInterrupted"&&_.message.failure.retryable===false){let B=_.message,W=ne({conversationType:B.conversationType,conversationId:B.conversationId,messageId:B.id});w.remove(W),w.removeByPrefix(`${W}\0`);}for(let B of ce)B(_);}),ye!==void 0&&(g=ye.subscribe(_=>{for(let B of Y)B(_);})),k.record("debug","chat-kit","session","client-subscriptions-established",()=>j());}return i$1}function Ue(){let m=le();return c??=q(m,{coreApiAvailable:l}),c}function ve(){w.clearAll();}function hn(m){w.removeByPrefix(qn(m));}return {getClient:()=>i$1,getProductClient:()=>i$1===null?null:Ue(),ensureProductClient:Ue,getConnectionState:()=>i$1?.connection.state??"idle",getGeneration:()=>u,getCredentials:()=>b$2,getMediaConfig:()=>y?.getMediaConfig(),getDiagnostics:()=>k,configureHost(m){y=m;},applySession(m,S,I){let T=m?.userId??"",R=m?.token??"",D=i$1!==null&&(b$2.userId!==T||b$2.token!==R);return D&&pe(b$2.userId===T&&R!==""),b$2.wsUrl=S.wsUrl,b$2.cmHttpBaseUrl=S.cmHttpBaseUrl,b$2.userId=T,b$2.token=R,b$2.deviceToken=I,b$2.channelType="0",k.record("info","chat-kit","session","session-applied",()=>({data:{accountId:T,hasToken:R!=="",didReset:D}})),{didReset:D,hasToken:R!==""}},ensureClient:le,async prepare(){if(d)return {ok:false,errorKey:"lifecycle.disposed"};if(b$2.userId==="")return {ok:false,errorKey:"lifecycle.missingLoginState"};let m=Date.now(),S=j();k.record("info","chat-kit","session","prepare-start",()=>S);try{let I=b$2.userId,T=b$2.token;if(M!==void 0&&await M,d||u!==S.generation||b$2.userId!==I||b$2.token!==T)throw new Error("IM session \u5DF2\u53D8\u5316\uFF0C\u53D6\u6D88\u65E7 prepare");if(h)throw new Error("\u65E7 IM Client \u672A\u80FD\u5B8C\u6210\u6E05\u7406\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5",{cause:E});return await le().connection.prepare(),k.record("info","chat-kit","session","prepare-complete",()=>({...S,durationMs:Date.now()-m})),{ok:!0}}catch(I){k.record("error","chat-kit","session","prepare-failed",()=>({...S,durationMs:Date.now()-m,error:{message:"ChatRuntime prepare \u5931\u8D25",data:I}}));let T=tn(I);return T!==void 0?{ok:false,errorKey:T}:{ok:false,errorKey:"lifecycle.prepareFailed",errorParams:{reason:I instanceof Error?I.message:String(I)}}}},async connect(){if(d)return {ok:false,errorKey:"lifecycle.disposed"};if(b$2.wsUrl===""||b$2.userId===""||b$2.token==="")return {ok:false,errorKey:"lifecycle.missingConnectParams"};let m=Date.now(),S=j();k.record("info","chat-kit","connection","connect-start",()=>S);try{let I=b$2.userId,T=b$2.token;if(M!==void 0&&await M,d||u!==S.generation||b$2.userId!==I||b$2.token!==T)throw new Error("IM session \u5DF2\u53D8\u5316\uFF0C\u53D6\u6D88\u65E7 connect");if(h)throw new Error("\u65E7 IM Client \u672A\u80FD\u5B8C\u6210\u6E05\u7406\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5",{cause:E});return await le().connection.connect(),k.record("info","chat-kit","connection","connect-complete",()=>({...S,durationMs:Date.now()-m})),{ok:!0}}catch(I){k.record("error","chat-kit","connection","connect-failed",()=>({...S,durationMs:Date.now()-m,error:{message:"ChatRuntime connect \u5931\u8D25",data:I}}));let T=tn(I);return T!==void 0?{ok:false,errorKey:T}:{ok:false,errorKey:"lifecycle.connectFailed",errorParams:{reason:I instanceof Error?I.message:String(I)}}}},disconnect(){let m=j();k.record("info","chat-kit","connection","disconnect",()=>m),i$1?.connection.disconnect("im-chat-manual");},async logout(m){let S=Date.now(),I=j();k.record("info","chat-kit","session","logout-start",()=>({...I,data:m}));let T=i$1,R,D;if(T!==null)try{D=T.logout(m);}catch(L){R=L;}if(v(),u+=1,D!==void 0)try{await D;}catch(L){R=L;}if(C={},P={},O={},ve(),G.clear(),J(),k.record(R===void 0?"info":"error","chat-kit","session",R===void 0?"logout-complete":"logout-failed",()=>({...I,durationMs:Date.now()-S,...R===void 0?{}:{error:{message:"ChatRuntime logout \u5931\u8D25",data:R}}})),R!==void 0)throw R},resetForAuthChange:pe,dispose(){if(d)return;d=true;let m=j();k.record("info","chat-kit","session","dispose",()=>m),pe(true),ce.clear(),Y.clear(),de.clear();},subscribeEvents(m){return ce.add(m),()=>{ce.delete(m);}},subscribeProductEvents(m){return Y.add(m),()=>{Y.delete(m);}},getSenderProfileCache:()=>C,setSenderProfileCache(m){C=m,J();},getGroupMemberNames:()=>P,setGroupMemberNames(m){P=m,J();},getChannelMemberProfiles:()=>O,setChannelMemberProfiles(m){O=m,J();},subscribeProfileChange(m){return de.add(m),()=>{de.delete(m);}},putSelfVoiceBytes(m,S){for(G.delete(m),G.set(m,S);G.size>Yn;){let I=G.keys().next().value;if(I===void 0)break;G.delete(I);}},getSelfVoiceBytes:m=>G.get(m),clearSelfVoiceBytes(){G.clear();},createLocalMediaPreview(m){let S=URL.createObjectURL(m);return w.register(Re(S),S,{byteSize:m.size,evictable:false}),S},discardLocalMediaPreview(m){w.remove(Re(m));},trackLocalMediaPreview(m,S){w.move(Re(S),ne(m));},resolveMediaPreviewToRemote(m,S,I){let T=ne(m);S==="image"||S==="video"?w.makeEvictable(T,I):w.remove(T);},hasMediaBlob(m){return w.has(ne(m))},acquireMediaBlob(m){return w.acquire(ne(m))},async clearMediaCache(){let m=i$1,S=u;if(m===null)throw new Error("IM session is not ready");if(w.clearCached(),await m.media.clearCache(),u!==S||i$1!==m)throw new Error("IM session changed during media cache cleanup")},cleanupLocalMediaBlobs:ve,cleanupConversationMediaBlobs:hn}}function rn(e){return "group"in e?e.group:e.channel}function on(e,t,n){if(t.conversationType!==e.ref.conversationType||t.conversationId!==e.ref.conversationId||t.status!=="sent"||t.recalled!==void 0||t.deletedForEveryone!==void 0||t.encryption.decryptFailed===true||!["text","image","video","voice","file","miniProgram","transfer","gift","game"].includes(t.contentType))return false;if(n===null)return true;let r=rn(n);return r.conversationType!==e.ref.conversationType||r.conversationId!==e.ref.conversationId||n.messageId!==t.id}function Zn(e){let{session:t,message:n,currentPinnedMessage:r,selfId:o,ownerId:a}=e;return t?.ref.conversationType==="group"&&(t.groupState===void 0||t.groupState==="active")&&o!==""&&a!==void 0&&a!==""&&o===a&&on(t,n,r)}function Qn(e){let{session:t,message:n,currentPinnedMessage:r}=e;return t?.ref.conversationType==="channel"&&t.channelState==="active"&&t.channelPermissions?.moderateMessages===true&&on(t,n,r)}function Xr(e){return e.session?.ref.conversationType==="group"?Zn(e):e.session?.ref.conversationType==="channel"?Qn(e):false}function an(e,t){if(e===null)return false;let n=rn(e);return n.conversationType===t.conversationType&&n.conversationId===t.conversationId&&e.messageId===t.id}function et(e,t,n,r){let o=e[r];if(o&&o.remark!=="")return o.remark;let a=n===""?void 0:t[n]?.[r];return a!==void 0&&a!==""?a:o&&o.nickname!==""?o.nickname:""}function Jr(e,t,n,r,o){let a=et(e,t,n,r);if(a!=="")return a;let s=(o??"").trim();return s!==""?s:r.length>12?`${r.slice(0,6)}\u2026${r.slice(-4)}`:r}function nt(e,t,n,r){let o=e[r];if(o?.remark!==void 0&&o.remark!=="")return o.remark;let a=t[n]?.[r]?.displayName;return a!==void 0&&a!==""&&a!==r?a:o?.nickname!==void 0&&o.nickname!==""?o.nickname:""}function qr(e,t,n,r){return nt(e,t,n,r)||r}function Zr(e,t,n,r){let o=t[n]?.[r]?.avatar;return o!==void 0&&o!==""?o:tt(e,r)}function tt(e,t){return e[t]?.avatar??""}function Qr(e,t){return e[t]?.nickname??""}function eo(e){return (e.remark??"").trim()||e.nickname||e.id}function we(e,t,n=Date.now()){return e.senderId!==t||e.status!=="sent"||e.recalled!==void 0||e.deletedForEveryone!==void 0?false:n-(e.serverTime??e.createdAt)<=300*1e3}function Ae(e,t,n,r=Date.now()){return e.senderId!==t||e.status!=="sent"||e.recalled!==void 0||e.deletedForEveryone!==void 0||e.body.text===void 0||e.body.text===""?false:r-(e.serverTime??e.createdAt)<=n}var A=Object.freeze({availability:"available",reason:"ok"});function x(e){return Object.freeze({availability:"unavailable",reason:e})}function rt(e,t){return e.ref.conversationType===t.conversationType&&e.ref.conversationId===t.conversationId}function te(e){if(e.status!=="sent"||e.recalled!==void 0||e.deletedForEveryone!==void 0||e.contentType==="system")return x("unsupported-type")}function ot(e){return e.status==="sent"&&e.recalled===void 0&&e.deletedForEveryone===void 0&&e.encryption.decryptFailed!==true&&["text","image","video","voice","file","miniProgram","game","mediaAlbum"].includes(e.contentType)}function at(e){return e.status==="sent"&&e.recalled===void 0&&e.deletedForEveryone===void 0}function re(e){return e.conversationType==="channel"?e.value.canMutateMessages:(e.conversationType==="group",e.value.canUseMessageActions)}function sn(e,t,n={}){return t.availability==="available"?"":e==="direct"?n.mode!=="target"?"":t.reason==="blocked"||t.reason==="not-friend"?"directBlock.contactRequired":"":e==="group"?t.reason==="left"?"groupBlock.left":t.reason==="removed"?"groupBlock.removed":t.reason==="dismissed"?"groupBlock.dismissed":"groupBlock.unknownRestricted":e==="channel"?t.reason==="guest"?"channelBlock.guest":t.reason==="left"?"channelBlock.left":t.reason==="removed"?"channelBlock.removed":t.reason==="dismissed"?"channelBlock.dismissed":t.reason==="muted-all"?"channelBlock.allMembersMuted":t.reason==="muted-self"?"channelBlock.currentUserMuted":t.reason==="muted"?"channelBlock.muted":t.reason==="blacklisted"?"channelBlock.blacklisted":"channelBlock.unknownRestricted":""}function ao(e,t){switch(t){case "conversation.openProfile":return e.conversationType==="direct"||e.conversationType==="group",e.value.canOpenProfile;case "conversation.readHistory":return e.conversationType==="direct"?A:e.value.canReadHistory;case "conversation.listPreferences":return e.conversationType==="channel"?e.value.state==="muted"?A:e.value.canOpenProfile:e.conversationType==="group"?e.value.canOpenProfile:A;case "composer.send":return e.value.canSendMessages;case "composer.mentionAll":return e.conversationType==="channel"?e.value.canMentionAll:A;case "profile.edit":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canEditProfile:A;case "relationship.manage":return e.conversationType==="direct"?e.value.canManageRelationship:x("unsupported-type");case "members.view":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canViewMembers:x("unsupported-type");case "members.manage":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canManageMembers:x("unsupported-type");case "members.invite":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canInviteMembers:x("unsupported-type");case "members.remove":return e.conversationType==="channel"?e.value.canRemoveMembers:e.conversationType==="group"?e.value.canManageMembers:x("unsupported-type");case "members.setAdmin":return e.conversationType==="channel"?e.value.canSetMemberAdmin:x("unsupported-type");case "ownership.transfer":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canTransferOwnership:x("unsupported-type");case "conversation.leave":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canLeave:x("unsupported-type");case "channel.manageMute":return e.conversationType==="channel"?e.value.canManageMute:x("unsupported-type");case "channel.setMemberPrivateChat":return e.conversationType==="channel"?e.value.canSetMemberPrivateChat:x("unsupported-type");case "channel.dismiss":return e.conversationType==="channel"?e.value.canDismiss:x("unsupported-type")}}function io(e,t){let{message:n,pinnedMessage:r,selfId:o,snapshot:a,nowMs:s=Date.now()}=t;if(!rt(a,n))return x("unsupported-type");let i=an(r,n);switch(e){case "message.react":return n.status!=="sent"||!Aa(n)?x("unsupported-type"):a.conversationType==="channel"?a.value.canSendMessages:A;case "message.forward":{let c=te(n);return c!==void 0?c:va(n)?A:x("unsupported-type")}case "message.favorite":{let c=te(n);return c!==void 0?c:n.encryption?.decryptFailed===true?x("unsupported-type"):n.contentType==="text"||n.contentType==="image"||n.contentType==="video"||n.contentType==="voice"||n.contentType==="file"||n.contentType==="mediaAlbum"?A:x("unsupported-type")}case "message.multiSelect":{let c=te(n);return c!==void 0?c:i?x("message-protected"):A}case "message.reply":{let c=te(n);return c!==void 0?c:a.conversationType==="direct"?A:re(a)}case "message.recall":return i?x("message-protected"):a.conversationType==="direct"?we(n,o,s)?A:x("role-insufficient"):re(a).availability!=="available"?re(a):we(n,o,s)?A:x("role-insufficient");case "message.edit":return i?x("message-protected"):a.conversationType==="direct"?Ae(n,o,ra,s)?A:x("role-insufficient"):re(a).availability!=="available"?re(a):Ae(n,o,ra,s)?A:x("role-insufficient");case "message.pin":return i?x("message-protected"):ot(n)&&(a.conversationType==="group"||a.conversationType==="channel")?a.value.canPinMessages:x("unsupported-type");case "message.unpin":return a.conversationType==="group"||a.conversationType==="channel"?a.value.canUnpinMessages:x("unsupported-type");case "message.deleteLocal":{if(i)return x("message-protected");let c=te(n);return c!==void 0?c:n.contentType==="unknown"?x("unsupported-type"):a.conversationType==="direct"||a.conversationType==="group"?A:x("unsupported-type")}case "message.deleteForEveryone":return i?x("message-protected"):a.conversationType!=="channel"||!at(n)?x("unsupported-type"):a.value.canDeleteMessagesForEveryone}}function so(e,t){let{selfId:n,snapshot:r,targetRole:o="unknown",targetUserId:a}=t;if(a===""||a===n)return x("role-insufficient");if(r.conversationType==="group"){if(e!=="members.removeTarget")return x("unsupported-type");let i=r.value.canManageMembers;return i.availability!=="available"?i:r.value.ownerId!==void 0&&a===r.value.ownerId?x("role-insufficient"):A}if(r.conversationType!=="channel")return x("unsupported-type");if(e==="members.removeTarget"||e==="members.editNicknameTarget"){let i=r.value.canRemoveMembers;return i.availability!=="available"?i:r.value.role==="owner"?o==="member"||o==="admin"?A:x("role-insufficient"):r.value.role==="admin"&&o==="member"?A:x("role-insufficient")}let s=r.value.canSetMemberAdmin;return s.availability!=="available"?s:r.value.role!=="owner"?x("role-insufficient"):e==="members.setAdminTarget"?o==="member"?A:x("role-insufficient"):o==="admin"?A:x("role-insufficient")}function cn(e){if(e===void 0||e==="active")return "";switch(e){case "guest":return "channelBlock.guest";case "left":return "channelBlock.left";case "removed":return "channelBlock.removed";case "dismissed":return "channelBlock.dismissed";case "muted":return "channelBlock.muted";case "blacklisted":return "channelBlock.blacklisted";case "unknown_restricted":return "channelBlock.unknownRestricted"}}function dn(e,t=Date.now()){if(e?.channelState===void 0)return "channelBlock.unknownRestricted";let n=Ca({channelState:e.channelState,snapshot:e.channelAccessSnapshot,permissions:e.channelPermissions,nowMs:t});return n.channelState==="muted"?n.muteReason==="all-members"?"channelBlock.allMembersMuted":n.muteReason==="current-user"?"channelBlock.currentUserMuted":"channelBlock.muted":n.channelState!=="active"?cn(n.channelState)||"channelBlock.unknownRestricted":n.permissions.sendMessages?"":"channelBlock.unknownRestricted"}var H=9;function it(e={}){let t=typeof navigator<"u"?navigator:void 0,n=e.deviceMemoryGb??(typeof t?.deviceMemory=="number"?t.deviceMemory:4),r=Math.floor(n*1024*1024*1024/8);return Math.min(512*1024*1024,Math.max(64*1024*1024,r))}async function ln(e,t,n={}){if(e.length===0)return {processedCount:0,rejectedByLimit:false};let r=e.length>9;r&&n.onRejectedByLimit?.({reason:"count-limit",maxCount:9,selectedCount:e.length});let o=e.slice(0,9);if(n.startAll)return await Promise.all(o.map(l=>t(l).catch(()=>false))),{processedCount:o.length,rejectedByLimit:r};let a=it(n),s=Math.max(1,Math.floor(n.maxConcurrency??Number.POSITIVE_INFINITY)),i=0,c=new Set;for(let l of o){for(;c.size>0&&(c.size>=s||i+l.size>a);)await Promise.race(c);i+=l.size;let f=t(l).catch(()=>false).finally(()=>{i-=l.size,c.delete(f);});c.add(f);}return await Promise.all(c),{processedCount:o.length,rejectedByLimit:r}}async function fn(e){if(await oe(e)!=="not-gif")return "sticker";if(await f(e))return "image";let t=e.type.trim().toLowerCase();return t.startsWith("image/")||/\.(?:jpe?g|png|webp|gif|svgz?|heic|heif|avif|bmp|tiff?|ico|jfif|jxl|psd|dng|raw)$/i.test(e.name)?"unsupported-image":t.startsWith("video/")?"video":"file"}async function oe(e){let t=e.type.trim().toLowerCase(),n=new Uint8Array(await e.slice(0,6).arrayBuffer()),r=n.length===6?String.fromCharCode(...n):"",o=r==="GIF87a"||r==="GIF89a",a=t==="image/gif";return o&&(a||t==="")?"gif":o||a?"invalid-gif":"not-gif"}async function ke(e){return await oe(e)==="gif"}var st=new Set(["group","channel"]),ct=new Set(["group","channel"]),un=30*1024*1024,_e=200*1024*1024,Ne=2*1024*1024*1024,dt=3*1024*1024;function ie(e,t,n){let r=e.getConversationHandle();if(!(r===void 0||n===void 0||n==="supergroup"))return r.ref.conversationId===t&&r.ref.conversationType===n?r:void 0}function se(e,t){return e.retainConversationHandle?.(t)??(()=>{})}function ae(e,t){try{return e.getSnapshot().messages.find(n=>n.contentType==="video"?n.body.video?.url===t:n.contentType==="image"?n.body.image?.url===t:n.contentType==="sticker"?n.body.sticker?.url===t:n.contentType==="mediaAlbum"?n.body.mediaAlbum?.items.some(r=>r.url===t)===!0:!1)?.id}catch{return}}function De(e){if(e===void 0)return;let t=e.atAll?[{userId:"0",displayName:""}]:[];for(let n of e.atUserIds)t.push({userId:n,displayName:e.atUsersName?.[n]??n});return t.length===0?void 0:t}function lt(e){if(e===void 0||e==="active")return "";switch(e){case "left":return "groupBlock.left";case "removed":return "groupBlock.removed";case "dismissed":return "groupBlock.dismissed";default:return "groupBlock.unknownRestricted"}}function xo(e){return st.has(e)}function ft(e){return ct.has(e)}function bo(e,t=Date.now()){return e?.type==="channel"?dn(e,t):e?.type==="group"?lt(e.groupState):""}function F(e,t,n,r={}){let o=e.getProductClient();if(o===null)return "";let a=n??o.conversations.list().find(i=>i.ref.conversationId===t)?.ref.conversationType;if(a===void 0||a==="supergroup")return "";let s=o.capabilities.get({conversationType:a,conversationId:t}).value.canSendMessages;return sn(a,s,r)}async function Io(e,t,n){let r=e.getClient(),o=t.text.trim();if(r===null)return n.setNote(n.t("common.notConnected")),false;if(t.conversationId==="")return n.setNote(n.t("common.selectOrOpenConversation")),false;if(o==="")return false;let a=e.getGeneration();try{let s=t.conversationType;if(s===void 0)return n.setNote(n.t("common.conversationTypeNotReady")),!1;let i=ie(n,t.conversationId,s);if(i===void 0)return n.setNote(n.t("common.conversationNotReady")),!1;let c=F(e,t.conversationId,s);if(c!=="")return n.setNote(n.t(c)),!1;let l=se(n,i);try{let f=await i.messages.sendText(o,{...ft(s)?{mentions:De(t.mention)}:{},...t.refMessageId===void 0?{}:{replyToMessageId:t.refMessageId}});return n.refreshActiveMessages(),f.ok?e.getGeneration()===a:(e.getGeneration()===a&&n.setNote(n.t("send.failed",{reason:f.error.code})),!1)}finally{l();}}catch(s){return e.getGeneration()===a&&n.setNote(n.t("send.failed",{reason:s instanceof Error?s.message:String(s)})),false}}async function mn(e,t,n){let{kind:r,file:o,conversationId:a,conversationType:s,refMessageId:i}=t,c=n.t(`label.${r}`);if(e.getClient()===null)return n.setNote(n.t("common.notConnected")),false;if(a===""||s===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let f$1=ie(n,a,s);if(f$1===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let p=F(e,a,s);if(p!=="")return n.setNote(n.t(p)),false;let g=r==="video"?_e:r==="file"?Ne:r==="sticker"?dt:un;if(o.size>g)return n.pushMediaLimitItem({name:o.name,sizeMb:o.size/1024/1024,label:c,maxMb:Math.round(g/1024/1024)}),n.showWarning?.(n.t("send.mediaTooLarge",{name:o.name,label:c,maxMb:Math.round(g/1024/1024)})),false;let u=e.getGeneration();if(o.size===0)return e.getGeneration()===u&&n.setNote(n.t("send.mediaEmpty",{label:c})),false;if(r==="sticker"&&!await ke(o))return e.getGeneration()===u&&n.setNote(n.t("send.mediaFormatMismatch",{name:o.name})),false;let y=se(n,f$1),d;try{if(r==="image"&&!await f(o))return e.getGeneration()===u&&n.setNote(n.t("send.imageFormatUnsupported",{name:o.name})),!1;if(e.getGeneration()!==u)return !1;d=r==="file"?void 0:e.createLocalMediaPreview(o);let M=t.localPreviewMetadata;if(e.getGeneration()!==u)return d!==void 0&&e.discardLocalMediaPreview(d),!1;let h=await(r==="image"?f$1.messages.sendImage(o,{...d===void 0?{}:{localPreviewUrl:d},...M===void 0?{}:{localPreviewMetadata:M},...i===void 0?{}:{replyToMessageId:i}}):r==="video"?f$1.messages.sendVideo(o,{...d===void 0?{}:{localPreviewUrl:d},...M===void 0?{}:{localPreviewMetadata:M},...i===void 0?{}:{replyToMessageId:i}}):r==="sticker"?f$1.messages.sendGif(o,{...d===void 0?{}:{localPreviewUrl:d},...i===void 0?{}:{replyToMessageId:i}}):f$1.messages.sendFile(o,{fileName:o.name,...t.caption===void 0?{}:{caption:t.caption},...t.filesAlbum===void 0?{}:{filesAlbum:t.filesAlbum},...i===void 0?{}:{replyToMessageId:i}}));if(n.refreshActiveMessages(),!h.ok){if(e.getGeneration()===u&&h.error.code!=="IM_SDK_MEDIA_PAUSED"&&h.error.code!=="IM_SDK_MEDIA_CANCELLED"&&(h.error.code==="IM_SDK_VIDEO_DURATION_TOO_LONG"?n.showWarning?.(n.t("send.videoTooLong",{name:o.name,maxMinutes:5})):h.error.code==="IM_SDK_VIDEO_DURATION_UNAVAILABLE"?n.showWarning?.(n.t("send.videoDurationUnavailable",{name:o.name})):n.setNote(n.t("send.mediaFailed",{label:c,reason:h.error.code}))),d!==void 0){let E=ae(f$1,d);E===void 0?e.discardLocalMediaPreview(d):e.trackLocalMediaPreview({conversationId:a,conversationType:s,messageId:E},d);}return !1}return e.getGeneration()===u}catch(M){if(e.getGeneration()===u&&n.setNote(n.t("send.mediaFailed",{label:c,reason:M instanceof Error?M.message:String(M)})),d!==void 0){let h=ae(f$1,d);h===void 0?e.discardLocalMediaPreview(d):e.trackLocalMediaPreview({conversationId:a,conversationType:s,messageId:h},d);}return false}finally{y();}}async function ho(e,t,n){let{kind:r,file:o,messageId:a,conversationId:s,conversationType:i}=t,c=n.t(`label.${r}`);if(e.getClient()===null)return n.setNote(n.t("common.notConnected")),false;let l=ie(n,s,i);if(l===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let f=F(e,s,i);if(f!=="")return n.setNote(n.t(f)),false;let p=r==="video"?_e:Ne;if(o.size>p)return n.pushMediaLimitItem({name:o.name,sizeMb:o.size/1024/1024,label:c,maxMb:Math.round(p/1024/1024)}),n.showWarning?.(n.t("send.mediaTooLarge",{name:o.name,label:c,maxMb:Math.round(p/1024/1024)})),false;let g=e.getGeneration();if(o.size===0)return e.getGeneration()===g&&n.setNote(n.t("send.mediaEmpty",{label:c})),false;let u=se(n,l),y;try{if(y=r==="video"?e.createLocalMediaPreview(o):void 0,e.getGeneration()!==g)return y!==void 0&&e.discardLocalMediaPreview(y),!1;let d=await(r==="video"?l.messages.replaceInterruptedVideo(a,o,{...y===void 0?{}:{localPreviewUrl:y}}):l.messages.replaceInterruptedFile(a,o,{fileName:o.name}));if(n.refreshActiveMessages(),!d.ok){e.getGeneration()===g&&d.error.code!=="IM_SDK_MEDIA_PAUSED"&&d.error.code!=="IM_SDK_MEDIA_CANCELLED"&&(d.error.code==="IM_SDK_VIDEO_DURATION_TOO_LONG"?n.showWarning?.(n.t("send.videoTooLong",{name:o.name,maxMinutes:5})):d.error.code==="IM_SDK_VIDEO_DURATION_UNAVAILABLE"?n.showWarning?.(n.t("send.videoDurationUnavailable",{name:o.name})):n.setNote(n.t("send.mediaFailed",{label:c,reason:d.error.code})));let M=y!==void 0&&l.getSnapshot().messages.some(h=>h.id===a&&h.contentType==="video"&&h.body.video?.url===y);return y!==void 0&&!M?e.discardLocalMediaPreview(y):y!==void 0&&e.trackLocalMediaPreview({conversationId:s,conversationType:i,messageId:a},y),!1}return e.getGeneration()===g}catch(d){return e.getGeneration()===g&&n.setNote(n.t("send.mediaFailed",{label:c,reason:d instanceof Error?d.message:String(d)})),y!==void 0&&(ae(l,y)===a?e.trackLocalMediaPreview({conversationId:s,conversationType:i,messageId:a},y):e.discardLocalMediaPreview(y)),false}finally{u();}}function ut(e){let t=e.getMediaConfig()?.buckets.voice;return t!==void 0&&t!==""}async function So(e,t,n){let{payload:r,conversationId:o,conversationType:a,refMessageId:s}=t;if(e.getClient()===null)return n.setNote(n.t("common.notConnected")),false;if(o===""||a===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let c=ie(n,o,a);if(c===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let l=F(e,o,a);if(l!=="")return n.setNote(n.t(l)),false;if(r.data.length===0)return n.setNote(n.t("send.voiceEmpty")),false;if(!ut(e))return n.setNote(n.t("send.voiceStorageNotConfigured")),false;let f=e.getGeneration(),p=se(n,c);try{let g=new File([r.data],r.filename,{type:r.mimeType}),u=await c.messages.sendVoice(g,{durationMs:r.durationMs,waveform:r.waveform,...s===void 0?{}:{replyToMessageId:s}});return n.refreshActiveMessages(),u.ok?e.getGeneration()!==f?!1:(e.putSelfVoiceBytes(u.message.id,r.data),!0):(e.getGeneration()===f&&u.error.code!=="IM_SDK_MEDIA_PAUSED"&&u.error.code!=="IM_SDK_MEDIA_CANCELLED"&&n.setNote(n.t("send.voiceFailed",{reason:u.error.code})),!1)}catch(g){return e.getGeneration()===f&&n.setNote(n.t("send.voiceFailed",{reason:g instanceof Error?g.message:String(g)})),false}finally{p();}}var mt=new Set(["IM_SDK_VIDEO_TOO_LARGE","IM_SDK_VIDEO_PREVIEW_METADATA_INVALID","IM_SDK_VIDEO_DURATION_TOO_LONG","IM_SDK_VIDEO_DURATION_UNAVAILABLE"]);async function Po(e,t,n){let{caption:r,conversationId:o,conversationType:a,items:s,refMessageId:i}=t;if(e.getClient()===null)return n.setNote(n.t("common.notConnected")),false;if(o===""||a===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let l=ie(n,o,a);if(l===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let f$1=F(e,o,a);if(f$1!=="")return n.setNote(n.t(f$1)),false;if(s.length===0)return false;let p=e.getGeneration();for(let d of s){let M=n.t(`label.${d.kind}`),h=d.kind==="video"?_e:un;if(d.file.size>h)return n.pushMediaLimitItem({name:d.file.name,sizeMb:d.file.size/1024/1024,label:M,maxMb:Math.round(h/1024/1024)}),n.showWarning?.(n.t("send.mediaTooLarge",{name:d.file.name,label:M,maxMb:Math.round(h/1024/1024)})),false;if(d.file.size===0)return n.setNote(n.t("send.mediaEmpty",{label:M})),false}for(let d of s){let M=await oe(d.file);if(d.kind==="image"&&M==="not-gif"&&!await f(d.file))return e.getGeneration()===p&&n.setNote(n.t("send.imageFormatUnsupported",{name:d.file.name})),false;if(M!=="not-gif")return e.getGeneration()!==p||n.showWarning?.(n.t("send.mediaFailed",{label:n.t("label.image"),reason:"IM_SDK_MEDIA_ALBUM_GIF_UNSUPPORTED"})),false}if(e.getGeneration()!==p)return false;let g=se(n,l),u=s.map(d=>e.createLocalMediaPreview(d.file)),y=d=>{u.forEach((M,h)=>{d===void 0?e.discardLocalMediaPreview(M):e.trackLocalMediaPreview({conversationId:o,conversationType:a,messageId:d,itemIndex:h},M);});};try{if(e.getGeneration()!==p)return y(void 0),!1;let d=await l.messages.sendMediaAlbum(s.map((M,h)=>({kind:M.kind,file:M.file,localPreviewUrl:u[h],...M.localPreviewMetadata===void 0?{}:{localPreviewMetadata:M.localPreviewMetadata}})),{...r===void 0||r.trim()===""?{}:{caption:r},...t.hd===void 0?{}:{hd:t.hd},...i===void 0?{}:{replyToMessageId:i}});if(n.refreshActiveMessages(),!d.ok){if(e.getGeneration()===p&&d.error.code!=="IM_SDK_MEDIA_PAUSED"&&d.error.code!=="IM_SDK_MEDIA_CANCELLED"){let M=n.t(mt.has(d.error.code)?"label.video":"label.image");n.setNote(n.t("send.mediaFailed",{label:M,reason:d.error.code}));}return y(ae(l,u[0])),!1}return e.getGeneration()===p}catch(d){return e.getGeneration()===p&&n.setNote(n.t("send.mediaFailed",{label:n.t("label.image"),reason:d instanceof Error?d.message:String(d)})),y(ae(l,u[0])),false}finally{g();}}async function To(e,t,n){let r=t.files.slice(0,9);t.files.length>9&&(n.setMediaBatchLimit({selectedCount:t.files.length,maxCount:9}),n.showWarning?.(n.t("send.mediaCountLimit",{maxCount:9,ignoredCount:t.files.length-9})));let o=e.getGeneration(),a=[];for(let i of r){let c=await fn(i);if(e.getGeneration()!==o)break;if(c==="unsupported-image"){n.setNote(n.t("send.imageFormatUnsupported",{name:i.name})),a.push(Promise.resolve(false));continue}a.push(mn(e,{kind:c,file:i,conversationId:t.conversationId,conversationType:t.conversationType,...t.refMessageId===void 0?{}:{refMessageId:t.refMessageId}},n));}let s=await Promise.all(a.map(i=>i.catch(()=>false)));return Object.freeze({selectedCount:t.files.length,processedCount:a.length,acceptedCount:s.filter(Boolean).length,rejectedByLimit:t.files.length>9})}async function Eo(e,t,n){if(t.caption!==void 0&&t.caption.length>o)return n.setNote(n.t("send.mediaFailed",{label:n.t("label.file"),reason:"IM_SDK_MEDIA_ALBUM_CAPTION_TOO_LONG"})),Object.freeze({selectedCount:t.files.length,processedCount:0,acceptedCount:0,rejectedByLimit:false});let r=0,o$1=0,a=!!t.caption?.trim(),s=-1;for(let c=0;c<Math.min(t.files.length,9);c++){let l=t.files[c];l.size>0&&l.size<=Ne&&l.name.trim()!==""&&(s=c);}let i=await ln(t.files,async c=>{let l=o$1++,f=await mn(e,{kind:"file",...a?{filesAlbum:true,...l===s?{caption:t.caption}:{}}:{},file:c,conversationId:t.conversationId,conversationType:t.conversationType,...t.refMessageId===void 0?{}:{refMessageId:t.refMessageId}},n);return f&&(r+=1),f},{startAll:true,onRejectedByLimit:c=>{n.setMediaBatchLimit({selectedCount:c.selectedCount,maxCount:c.maxCount}),n.showWarning?.(n.t("send.mediaCountLimit",{maxCount:c.maxCount,ignoredCount:c.selectedCount-c.maxCount}));}});return Object.freeze({selectedCount:t.files.length,processedCount:i.processedCount,acceptedCount:r,rejectedByLimit:i.rejectedByLimit})}async function Ro(e,t,n){let r=e.getClient(),o=n.getConversationHandle();if(r===null||o===void 0)return n.setNote(n.t("send.cancelFailed")),false;let a=e.getGeneration();try{let s=r.media.getSnapshot().filter(i=>i.direction==="upload"&&i.messageId===t&&i.ref.conversationType===o.ref.conversationType&&i.ref.conversationId===o.ref.conversationId);return s.length!==1?(n.setNote(n.t("send.cancelFailed")),!1):(await r.media.cancel(s[0].id),e.getGeneration()!==a||n.getConversationHandle()!==o?!1:(n.refreshActiveMessages(),!0))}catch{return e.getGeneration()===a&&n.getConversationHandle()===o&&n.setNote(n.t("send.cancelFailed")),false}}async function wo(e,t,n,r){let o=e.getClient();if(o===null)return false;let a=n.getConversationHandle();if(a===void 0)return n.setNote(n.t("send.retryFailed")),false;let s=e.getGeneration(),i=o.media.getSnapshot().find(l=>l.direction==="upload"&&(l.state==="failed"||l.state==="canceled")&&l.messageId===t&&l.ref.conversationType===a.ref.conversationType&&l.ref.conversationId===a.ref.conversationId);if(i!==void 0)try{return r===void 0?await o.media.retry(i.id):await o.media.retry(i.id,r),e.getGeneration()!==s?!1:(n.refreshActiveMessages(),!0)}catch{return e.getGeneration()===s&&n.setNote(n.t("send.retryFailed")),false}if(r?.restartUpload===true)return n.setNote(n.t("send.retryFailed")),false;let c=o.outbox.getSnapshot().find(l=>l.messageId===t);if(c===void 0||c.ref.conversationType!==a.ref.conversationType||c.ref.conversationId!==a.ref.conversationId)return n.setNote(n.t("send.retryFailed")),false;try{return await o.outbox.retry(t),e.getGeneration()!==s?!1:(n.refreshActiveMessages(),!0)}catch{return e.getGeneration()===s&&n.setNote(n.t("send.retryFailed")),false}}var xt={};a(xt,{executeForwardMessages:()=>Ct,forwardMessages:()=>Mt});function gt(e,t){let n=e.getConversationHandle();if(n!==void 0)return t.every(r=>r.conversationType!=="supergroup"&&r.conversationType===n.ref.conversationType&&r.conversationId===n.ref.conversationId)?n:void 0}function pt(e){let t=e?.code;return typeof t=="string"&&t!==""?t:"unknown"}function vt(e,t){let n=e;return typeof n?.code=="string"&&typeof n.category=="string"&&typeof n.operation=="string"&&typeof n.retryable=="boolean"?n:Object.freeze({code:"IM_CHAT_KIT_FORWARD_FAILED",category:"state",operation:"message-operations.forward",retryable:false,conversation:Object.freeze({...t.ref}),cause:e})}function yt(e,t){return t.every(n=>n.conversationType!=="supergroup"&&n.conversationType===e.ref.conversationType&&n.conversationId===e.ref.conversationId)}async function Ct(e,t){let n="forward";if(e.getProductClient()===null||e.getConnectionState()!=="authenticated"||t.handle===void 0||!yt(t.handle,t.messages))return Object.freeze({ok:false,operation:n,reason:"not-ready"});if(t.messages.length===0||t.targets.length===0)return Object.freeze({ok:false,operation:n,reason:"empty-input"});for(let f of t.targets){let p=F(e,f.conversationId,f.conversationType,{mode:"target"});if(p!=="")return Object.freeze({ok:false,operation:n,reason:"target-blocked",blockReason:p})}let o=t.messages.filter(va),a=t.messages.length-o.length;if(o.length===0)return Object.freeze({ok:false,operation:n,reason:"all-skipped",skippedCount:a});let s=e.getGeneration(),i;try{i=await t.handle.messages.forward(o.map(f=>f.id),t.targets);}catch(f){return e.getGeneration()!==s?Object.freeze({ok:false,operation:n,reason:"stale"}):Object.freeze({ok:false,operation:n,reason:"sdk-rejected",error:vt(f,t.handle)})}if(e.getGeneration()!==s)return Object.freeze({ok:false,operation:n,reason:"stale"});let c=i.sent.length,l=a+i.skippedSourceMessageIds.length;return Object.freeze(c===0?{ok:false,operation:n,reason:i.failed.length>0?"sdk-rejected":"all-skipped",...i.failed[0]===void 0?{}:{error:i.failed[0].error},result:i,skippedCount:l}:{ok:true,operation:n,result:i,sentCount:c,skippedCount:l})}async function Mt(e,t,n){if(e.getClient()===null)return n.setNote(n.t("common.notConnected")),null;if(t.messages.length===0||t.targets.length===0)return n.setNote(n.t("forward.emptyInput")),null;let o=gt(n,t.messages);if(o===void 0)return n.setNote(n.t("common.conversationNotReady")),null;for(let p of t.targets){let g=F(e,p.conversationId,p.conversationType,{mode:"target"});if(g!=="")return n.setNote(n.t(g)),null}let a=t.messages.filter(va),s=t.messages.length-a.length;if(a.length===0)return n.setNote(n.t("forward.allSkipped")),null;let i=e.getGeneration(),c;try{c=await o.messages.forward(a.map(p=>p.id),t.targets);}catch(p){return e.getGeneration()===i&&n.getConversationHandle()===o&&n.setNote(n.t("forward.failed",{reason:pt(p)})),null}if(e.getGeneration()!==i||n.getConversationHandle()!==o)return c;let l=c.sent.length,f=s+c.skippedSourceMessageIds.length;if(l===0){let p=c.failed[0];p!==void 0?n.setNote(n.t("forward.failed",{reason:p.error.code})):f>0?n.setNote(n.t("forward.allSkipped")):n.setNote(n.t("forward.failed",{reason:"unknown"}));}else f>0?n.setNote(n.t("forward.partialSkipped",{skipped:f,ok:l})):n.setNote(n.t("forward.done"));return n.refreshActiveMessages?.(),c}var _t={};a(_t,{deleteChannelMessageForEveryone:()=>At,editMessage:()=>kt,executeDeleteChannelMessageForEveryone:()=>Et,executeDeleteLocalMessage:()=>Tt,executeRecallMessage:()=>Pt,executeRetryMessage:()=>Rt,recallMessage:()=>wt});var bt={IM_SDK_MESSAGE_NOT_FOUND:"recall.not-found",IM_SDK_MESSAGE_STATE_MISMATCH:"recall.not-found",IM_SDK_RECALL_NOT_OWN:"recall.not-own",IM_SDK_RECALL_NOT_SENT:"recall.not-sent",IM_SDK_RECALL_EXPIRED:"recall.expired",IM_SDK_RECALL_UNSUPPORTED:"recall.unsupported",IM_SDK_RECALL_TIMEOUT:"recall.timeout",IM_SDK_RECALL_FAILED:"recall.failed",IM_SDK_RECALL_DISCONNECTED:"recall.disconnected"},It={IM_SDK_MESSAGE_NOT_FOUND:"edit.not-found",IM_SDK_MESSAGE_STATE_MISMATCH:"edit.not-found",IM_SDK_EDIT_NOT_OWN:"edit.not-own",IM_SDK_EDIT_NOT_SENT:"edit.not-sent",IM_SDK_EDIT_RECALLED:"edit.recalled",IM_SDK_EDIT_DELETED:"edit.deleted",IM_SDK_EDIT_EXPIRED:"edit.expired",IM_SDK_EDIT_UNSUPPORTED:"edit.unsupported",IM_SDK_DIRECT_MENTION_UNSUPPORTED:"edit.unsupported",IM_SDK_EDIT_EMPTY:"edit.empty",IM_SDK_EDIT_RESTRICTED:"edit.restricted",IM_SDK_EDIT_CONTENT_UNSUPPORTED:"edit.unsupported-content",IM_SDK_EDIT_KEY_UNAVAILABLE:"edit.no-key",IM_SDK_EDIT_ENCRYPT_FAILED:"edit.encrypt-failed",IM_SDK_EDIT_TIMEOUT:"edit.timeout",IM_SDK_EDIT_FAILED:"edit.failed",IM_SDK_EDIT_DISCONNECTED:"edit.disconnected"},ht={IM_SDK_MESSAGE_NOT_FOUND:"channelDelete.notFound",IM_SDK_CHANNEL_DELETE_UNSUPPORTED:"channelDelete.unsupported",IM_SDK_CHANNEL_DELETE_NOT_SENT:"channelDelete.notSent",IM_SDK_CHANNEL_DELETE_UNAVAILABLE:"channelDelete.unavailable",IM_SDK_CHANNEL_DELETE_FORBIDDEN:"channelDelete.forbidden",IM_SDK_CHANNEL_DELETE_TIMEOUT:"channelDelete.timeout",IM_SDK_CHANNEL_DELETE_FAILED:"channelDelete.failed",IM_SDK_CHANNEL_DELETE_DISCONNECTED:"channelDelete.disconnected"};function Oe(e,t){let n=e.getConversationHandle();if(!(n===void 0||t.conversationType==="supergroup"))return n.ref.conversationType===t.conversationType&&n.ref.conversationId===t.conversationId?n:void 0}function Ge(e){return typeof e?.code=="string"?e.code:void 0}function St(e){return typeof e=="object"&&e!==null&&typeof e.code=="string"&&typeof e.category=="string"&&typeof e.operation=="string"&&typeof e.retryable=="boolean"}function me(e,t,n){return St(e)?e:Object.freeze({code:"IM_CHAT_KIT_MESSAGE_OPERATION_FAILED",category:"state",operation:`message-operations.${t}`,retryable:false,...n===void 0?{}:{conversation:Object.freeze({...n.ref})},cause:e})}function Be(e,t){return e!==void 0&&t.conversationType!=="supergroup"&&e.ref.conversationType===t.conversationType&&e.ref.conversationId===t.conversationId}async function Pt(e,t){let n="recall";if(!Be(t.handle,t.message))return Object.freeze({ok:false,operation:n,reason:"not-ready"});let r=e.getGeneration();try{await t.handle.messages.recall(t.message.id);}catch(o){return e.getGeneration()!==r?Object.freeze({ok:false,operation:n,reason:"stale"}):Object.freeze({ok:false,operation:n,reason:"sdk-rejected",error:me(o,n,t.handle)})}return e.getGeneration()===r?Object.freeze({ok:true,operation:n}):Object.freeze({ok:false,operation:n,reason:"stale"})}async function Tt(e,t){let n="delete-local";if(!Be(t.handle,t.message)||t.handle.ref.conversationType!=="direct"&&t.handle.ref.conversationType!=="group"||t.message.conversationType!=="direct"&&t.message.conversationType!=="group")return Object.freeze({ok:false,operation:n,reason:"not-ready"});let r=e.getGeneration();try{await t.handle.messages.deleteLocal(t.message.id);}catch(o){return e.getGeneration()!==r?Object.freeze({ok:false,operation:n,reason:"stale"}):Object.freeze({ok:false,operation:n,reason:"sdk-rejected",error:me(o,n,t.handle)})}return e.getGeneration()===r?Object.freeze({ok:true,operation:n}):Object.freeze({ok:false,operation:n,reason:"stale"})}async function Et(e,t){let n="delete-for-everyone";if(!Be(t.handle,t.message)||t.handle.ref.conversationType!=="channel"||t.message.conversationType!=="channel")return Object.freeze({ok:false,operation:n,reason:"not-ready"});let r=e.getGeneration();try{await t.handle.messages.deleteForEveryone(t.message.id);}catch(o){return e.getGeneration()!==r?Object.freeze({ok:false,operation:n,reason:"stale"}):Object.freeze({ok:false,operation:n,reason:"sdk-rejected",error:me(o,n,t.handle)})}return e.getGeneration()===r?Object.freeze({ok:true,operation:n}):Object.freeze({ok:false,operation:n,reason:"stale"})}async function Rt(e,t){let n="retry",r=e.getProductClient(),o=t.handle;if(r===null||o===void 0)return Object.freeze({ok:false,operation:n,reason:"not-ready"});let a=e.getGeneration();try{let s=r.media.getSnapshot().find(i=>i.direction==="upload"&&(i.state==="failed"||i.state==="canceled")&&i.messageId===t.messageId&&i.ref.conversationType===o.ref.conversationType&&i.ref.conversationId===o.ref.conversationId);if(s!==void 0)await r.media.retry(s.id,t.options);else {if(t.options?.restartUpload===!0)return Object.freeze({ok:!1,operation:n,reason:"not-ready"});let i=r.outbox.getSnapshot().find(c=>c.messageId===t.messageId);if(i===void 0||i.ref.conversationType!==o.ref.conversationType||i.ref.conversationId!==o.ref.conversationId)return Object.freeze({ok:!1,operation:n,reason:"not-ready"});await r.outbox.retry(t.messageId);}}catch(s){return e.getGeneration()!==a?Object.freeze({ok:false,operation:n,reason:"stale"}):Object.freeze({ok:false,operation:n,reason:"sdk-rejected",error:me(s,n,o)})}return e.getGeneration()===a?Object.freeze({ok:true,operation:n}):Object.freeze({ok:false,operation:n,reason:"stale"})}async function wt(e,t,n){let r=Oe(n,t.message);if(r===void 0){n.setNote(n.t("common.conversationNotReady"));return}let o=e.getGeneration();try{await r.messages.recall(t.message.id);}catch(a){if(e.getGeneration()!==o)return;n.setNote(n.t(bt[Ge(a)??""]??"recall.failed"));}}async function At(e,t,n){let r=Oe(n,t.message);if(r===void 0||r.ref.conversationType!=="channel"||t.message.conversationType!=="channel"){n.setNote(n.t("common.conversationNotReady"));return}let o=e.getGeneration();try{await r.messages.deleteForEveryone(t.message.id);}catch(a){if(e.getGeneration()!==o)return;n.setNote(n.t(ht[Ge(a)??""]??"channelDelete.failed"));}}async function kt(e,t,n){let r=Oe(n,t.message);if(r===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let o=e.getGeneration(),a=De(t.mention);try{await r.messages.editText(t.message.id,t.text,{...a===void 0?{}:{mentions:a}});}catch(s){return e.getGeneration()!==o||n.setNote(n.t(It[Ge(s)??""]??"edit.failed")),false}return e.getGeneration()===o}var Ft={};a(Ft,{executePinMessage:()=>Dt,executeSyncPinnedMessage:()=>Gt,executeUnpinMessage:()=>Ot,getPinnedMessage:()=>Lt,peekPinnedMessage:()=>Ht,pinMessage:()=>Bt,syncPinnedMessage:()=>pn,unpinMessage:()=>jt});function $(e,t){let n=e.getProductClient();return n===null||e.getConnectionState()!=="authenticated"?(t?.setNote(t.t("common.notConnected")),null):n}function Nt(e){switch(e){case "permission":return "pinned.forbidden";case "network":return "pinned.network";case "contract":return "pinned.contract";case "unsupported":return "pinned.unsupported";default:return "pinned.failed"}}function gn(e){return typeof e=="object"&&e!==null&&typeof e.category=="string"}function je(e,t,n){if(gn(e))return e;let r=typeof e?.kind=="string"?e.kind:void 0,o=r==="forbidden"?"permission":r==="network"?"network":r==="unsupported"?"unsupported":r==="contract"?"contract":"state";return Object.freeze({code:"IM_CHAT_KIT_PINNED_MESSAGE_OPERATION_FAILED",category:o,operation:`message-operations.${t}`,retryable:o==="network",conversation:Object.freeze({...n}),cause:e})}async function Dt(e,t){let r=$(e);if(r===null||t.message.conversationId!==t.conversation.conversationId||t.message.conversationType!==t.conversation.conversationType)return Object.freeze({ok:false,operation:"pin",reason:"not-ready"});let o=e.getGeneration();try{let a=t.conversation.conversationType==="group"?await r.groups.pinMessage(t.conversation,t.message.id):await r.channels.pinMessage(t.conversation,t.message.id);return e.getGeneration()===o?Object.freeze({ok:!0,operation:"pin",value:a}):Object.freeze({ok:!1,operation:"pin",reason:"stale"})}catch(a){return e.getGeneration()!==o?Object.freeze({ok:false,operation:"pin",reason:"stale"}):Object.freeze({ok:false,operation:"pin",reason:"sdk-rejected",error:je(a,"pin",t.conversation)})}}async function Ot(e,t){let n="unpin",r=$(e);if(r===null)return Object.freeze({ok:false,operation:n,reason:"not-ready"});let o=e.getGeneration();try{return t.conversationType==="group"?await r.groups.unpinMessage(t):await r.channels.unpinMessage(t),e.getGeneration()===o?Object.freeze({ok:!0,operation:n}):Object.freeze({ok:!1,operation:n,reason:"stale"})}catch(a){return e.getGeneration()!==o?Object.freeze({ok:false,operation:n,reason:"stale"}):Object.freeze({ok:false,operation:n,reason:"sdk-rejected",error:je(a,n,t)})}}async function Gt(e,t){let n="sync-pin",r=$(e);if(r===null)return Object.freeze({ok:false,operation:n,reason:"not-ready"});let o=e.getGeneration();try{let a=t.conversationType==="group"?await r.groups.getPinnedMessage(t):await r.channels.getPinnedMessage(t);return e.getGeneration()===o?Object.freeze({ok:!0,operation:n,value:a}):Object.freeze({ok:!1,operation:n,reason:"stale"})}catch(a){return e.getGeneration()!==o?Object.freeze({ok:false,operation:n,reason:"stale"}):Object.freeze({ok:false,operation:n,reason:"sdk-rejected",error:je(a,n,t)})}}function Le(e,t,n,r){if(e.getGeneration()!==t)return;let o=gn(r)?Nt(r.category):"pinned.failed";n.setNote(n.t(o));}async function Bt(e,t,n){let r=$(e,n);if(r===null)return null;let o=e.getGeneration();try{let a=t.conversation.conversationType==="group"?await r.groups.pinMessage(t.conversation,t.message.id):await r.channels.pinMessage(t.conversation,t.message.id);return e.getGeneration()===o?a:null}catch(a){return Le(e,o,n,a),null}}async function jt(e,t,n){let r=$(e,n);if(r===null)return false;let o=e.getGeneration();try{return t.conversationType==="group"?await r.groups.unpinMessage(t):await r.channels.unpinMessage(t),e.getGeneration()===o}catch(a){return Le(e,o,n,a),false}}async function Lt(e,t,n){let r=await pn(e,t,n);return r.ok?r.value:null}async function pn(e,t,n){let r=$(e,n);if(r===null)return {ok:false};let o=e.getGeneration();try{let a=t.conversationType==="group"?await r.groups.getPinnedMessage(t):await r.channels.getPinnedMessage(t);return e.getGeneration()===o?{ok:!0,value:a}:{ok:!1}}catch(a){return Le(e,o,n,a),{ok:false}}}function Ht(e,t){let n=e.getProductClient();return n===null?null:t.conversationType==="group"?n.groups.peekPinnedMessage(t):n.channels.peekPinnedMessage(t)}function Go(e){return e.conversation.conversationType==="channel"&&e.channelProfile?.memberPrivateChatDisabled!==false?"blocked":e.relationship==="friend"?"friend-profile":"friend-contact"}var or={};a(or,{applyGroupMemberNickname:()=>Qt,applyGroupMemberRename:()=>qt,applyMemberNames:()=>Zt,clearGroupMemberNicknameProjection:()=>er,ensureSelfProfile:()=>nr,prewarmActiveSenders:()=>rr,prewarmMemberAvatars:()=>tr,refreshStaleSenders:()=>In,resolveChannelMembers:()=>Jt,resolveGroupMembers:()=>bn,resolveSenderName:()=>Yt});var vn=new WeakMap;function Ut(e){let t=vn.get(e);return t===void 0&&(t=new Map,vn.set(e,t)),t}function Vt(e){let t=e.getClient();if(t!==null){if(t.robots!==void 0)return t.robots;if(!(t.conversations===void 0||t.media===void 0||t.session===void 0))return e.getProductClient()?.robots}}function Kt(e,t){let n={...e.getSenderProfileCache()},r=false;for(let o of t){let a=o.id.trim(),s=o.displayName.trim();if(a===""||s===""||s===a)continue;let i=n[a],c=i!==void 0&&i.nickname!==""&&i.nickname!==a?i.nickname:s,l=i!==void 0&&i.avatar!==""?i.avatar:o.avatarUrl??"";i?.nickname===c&&i.avatar===l||(n[a]={remark:i?.remark??"",nickname:c,avatar:l},r=true);}r&&e.setSenderProfileCache(n);}async function zt(e,t,n,r){let o=[],a=await e.listFirstPage({scope:{kind:"conversation",conversationType:t,conversationId:n,filter:"bound"},pageSize:100});o.push(...a.items);let s=1;for(;!a.exhausted&&a.nextPageToken!==void 0&&s<10;){if(!r())return;a=await e.listNextPage(a.nextPageToken),o.push(...a.items),s+=1;}return o}function He(e,t,n,r){let o=n.trim();if(o===""||r?.isCurrent?.()===false)return Promise.resolve(false);let a=Vt(e);if(a===void 0)return Promise.resolve(true);let s=e.getGeneration(),i=()=>e.getGeneration()===s&&r?.isCurrent?.()!==false,c=Ut(e),l=`${s}\0${t}\0${o}`,f=c.get(l);if(r?.forceRefresh!==true&&f!==void 0&&(f.expiresAt===0||f.expiresAt>Date.now()))return f.task;let p=zt(a,t,o,i).then(g=>g===void 0||!i()?(c.get(l)?.task===p&&c.delete(l),false):(Kt(e,g),c.set(l,{expiresAt:Date.now()+3e5,task:Promise.resolve(true)}),true)).catch(g=>(c.get(l)?.task===p&&c.delete(l),e.getGeneration()===s&&e.getDiagnostics().record("warn","chat-kit","profile","bound-robot-profiles-resolve-failed",()=>({conversation:{conversationType:t,conversationId:o},error:{message:"\u89E3\u6790\u5DF2\u7ED1\u5B9A\u673A\u5668\u4EBA\u540D\u79F0\u5931\u8D25",data:g}})),false));return c.set(l,{expiresAt:0,task:p}),p}var Cn=300*1e3,Wt=new WeakMap,$t=new WeakMap,Xt=new WeakMap;function Fe(e,t){let n=e.get(t);return n===void 0&&(n=new Map,e.set(t,n)),n}function Mn(e,t){return e===void 0?t===void 0?0:-1:t===void 0?1:e.length!==t.length?e.length>t.length?1:-1:e===t?0:e>t?1:-1}var yn=new WeakMap;function N(e){return (e??"").trim()}function X(e){let t=yn.get(e),n=e.getGeneration();return (t===void 0||t.generation!==n)&&(t={generation:n,groups:new Map},yn.set(e,t)),t}function ge(e,t,n,r={}){let o=X(e).groups.get(t);if(o===void 0||o.size===0)return n;let a={...n};for(let[s,i]of o){let c=n[s];if((i===""?c===void 0:c===i)&&r.reconcile===true){o.delete(s);continue}i===""?delete a[s]:a[s]=i;}return o.size===0&&X(e).groups.delete(t),a}function xn(e,t,n){let r=X(e).groups.get(t);if(r!==void 0){if(n===void 0){X(e).groups.delete(t);return}r.delete(n.trim()),r.size===0&&X(e).groups.delete(t);}}function U(e,t,n,r){e.getDiagnostics().record("warn","chat-kit","profile",t,()=>({...r===void 0?{}:{data:r},error:{message:"\u8D44\u6599\u9884\u70ED\u5931\u8D25",data:n}}));}function Yt(e,t,n){let r=e.getClient(),o=e.getCredentials().userId;if(t===""||t==="system"||t===o||r===null)return Promise.resolve(false);let a=n?.forceRefresh===true,s=Fe(Wt,e),i=a?void 0:s.get(t);if(i!==void 0)return i;let c=e.getSenderProfileCache();if(!a&&c[t]!==void 0)return Promise.resolve(true);c[t]===void 0&&e.setSenderProfileCache({...c,[t]:{remark:"",nickname:"",avatar:""}});let l=e.getGeneration(),f=r.contact.getProfile(t,a?{forceRefresh:true}:void 0).then(p=>{if(e.getGeneration()!==l)return false;let g=N(p?.remark),u=N(p?.nickname),y=N(p?.avatar),d=e.getSenderProfileCache()[t],M=d!==void 0&&d.nickname!==""&&d.nickname!==t?d.nickname:"",h=u!==""&&u!==t?u:M||u,E=y!==""?y:d?.avatar??"";return (g!==""||h!==""||E!=="")&&e.setSenderProfileCache({...e.getSenderProfileCache(),[t]:{remark:g||d?.remark||"",nickname:h,avatar:E}}),true}).catch(p=>{if(e.getGeneration()!==l)return false;if(!a){let g={...e.getSenderProfileCache()};delete g[t],e.setSenderProfileCache(g);}return e.getDiagnostics().record("warn","chat-kit","profile","sender-profile-resolve-failed",()=>({data:{userId:t},error:{message:"\u89E3\u6790\u53D1\u9001\u8005\u8D44\u6599\u5931\u8D25",data:p}})),false}).finally(()=>{!a&&s.get(t)===f&&s.delete(t);});return a||s.set(t,f),f}function bn(e,t,n){let r=e.getClient();if(t===""||r===null)return Promise.resolve(false);let o=n?.forceRefresh===true,a=Fe($t,e),s=o?void 0:a.get(t);if(s!==void 0)return s;let i=e.getGroupMemberNames(),c=e.getGeneration(),l=He(e,"group",t,{forceRefresh:o,isCurrent:()=>e.getGeneration()===c});if(!o&&i[t]!==void 0)return l.then(()=>true);let f=i[t]!==void 0;f||e.setGroupMemberNames({...i,[t]:{}});let p=c,g=()=>{if(f||e.getGeneration()!==p)return;let y={...e.getGroupMemberNames()};delete y[t],e.setGroupMemberNames(y);},u=Promise.all([r.group.getMemberNames(t,{forceRefresh:o}),l]).then(([y])=>e.getGeneration()!==p?false:y===null?(g(),false):(e.setGroupMemberNames({...e.getGroupMemberNames(),[t]:ge(e,t,y,{reconcile:true})}),true)).catch(y=>(g(),e.getGeneration()===p&&U(e,"group-member-name-resolve-failed",y,{groupId:t}),false)).finally(()=>{!o&&a.get(t)===u&&a.delete(t);});return o||a.set(t,u),u}function Jt(e,t,n,r){let o=e.getClient();if(o===null||t===""||r?.isCurrent?.()===false)return Promise.resolve(false);let a=r?.forceRefresh===true,s=e.getGeneration(),i=He(e,"channel",t,{forceRefresh:a,isCurrent:()=>e.getGeneration()===s&&r?.isCurrent?.()!==false}),c=e.getChannelMemberProfiles()[t]??{},l=[...new Set(n.map(d=>d.trim()).filter(d=>d!==""&&d!=="system"))].filter(d=>a||c[d]===void 0||c[d].expiresAt<=Date.now());if(l.length===0)return i.then(()=>true);let f=Fe(Xt,e),p=`${t}:${[...l].sort().join(",")}`,g=a?void 0:f.get(p);if(g!==void 0)return g;let u=s,y=Promise.all([o.channel.getMembersByIds(t,l,a?{forceRefresh:true}:void 0),i]).then(([d])=>{if(e.getGeneration()!==u||r?.isCurrent?.()===false)return false;let M=Date.now()+Cn,h={...e.getChannelMemberProfiles()[t]??{}};for(let E of d){let b=h[E.userId];b!==void 0&&Mn(E.updateVersion,b.updateVersion)<0||(h[E.userId]={displayName:E.displayName,...E.avatar===void 0?{}:{avatar:E.avatar},role:E.role,...E.updateVersion===void 0?{}:{updateVersion:E.updateVersion},expiresAt:M});}return e.setChannelMemberProfiles({...e.getChannelMemberProfiles(),[t]:h}),true}).catch(d=>(e.getGeneration()===u&&e.getDiagnostics().record("warn","chat-kit","profile","channel-members-resolve-failed",()=>({conversation:{conversationType:"channel",conversationId:t},error:{message:"\u89E3\u6790 CHANNEL \u6210\u5458\u8D44\u6599\u5931\u8D25",data:d}})),false)).finally(()=>{!a&&f.get(p)===y&&f.delete(p);});return a||f.set(p,y),y}function qt(e,t,n={}){let r=t.body.system;if(t.contentType!=="system"||r?.eventType!=="group_member_renamed")return;let o=new Set((n.preserveUserIds??[]).map(a=>a.trim()).filter(Boolean));for(let a of r.targetUserIds??[]){let s=a.trim();o.has(s)||xn(e,t.conversationId,s);}bn(e,t.conversationId,{forceRefresh:true});}function Zt(e,t,n){let r={};for(let o of n)o.nickName!==""&&(r[o.userId]=o.nickName);e.setGroupMemberNames({...e.getGroupMemberNames(),[t]:ge(e,t,r)});}function Qt(e,t,n,r){let o=t.trim(),a=n.trim();if(o===""||a==="")return;let s=r.trim(),i=X(e),c=i.groups.get(o)??new Map;c.set(a,s),i.groups.set(o,c);let l=e.getGroupMemberNames()[o];if(l===void 0)return;let f={...l};s===""?delete f[a]:f[a]=s,e.setGroupMemberNames({...e.getGroupMemberNames(),[o]:f});}function er(e,t,n={}){let r=t.trim();if(r===""||(xn(e,r),n.clearCachedNames!==true))return;let o=e.getGroupMemberNames();if(o[r]===void 0)return;let a={...o};delete a[r],e.setGroupMemberNames(a);}function nr(e){let t=e.getClient(),n=e.getCredentials().userId;if(n===""||t===null||e.getSenderProfileCache()[n]!==void 0)return;let r=e.getGeneration();t.contact.getProfile(n).then(o=>{if(o===null||e.getGeneration()!==r)return;let a=N(o.remark),s=N(o.nickname),i=N(o.avatar);(a!==""||s!==""||i!=="")&&e.getSenderProfileCache()[n]===void 0&&e.setSenderProfileCache({...e.getSenderProfileCache(),[n]:{remark:a,nickname:s,avatar:i}});}).catch(o=>{e.getGeneration()===r&&U(e,"self-profile-prefetch-failed",o,{userId:n});});}async function tr(e,t){let n=e.getClient();if(n===null)return;let r=e.getGeneration(),o=[];for(let a of t){let s=a.userId;e.getSenderProfileCache()[s]===void 0&&o.push((async()=>{let i;try{i=await n.contact.peekProfile(s);}catch(p){e.getGeneration()===r&&U(e,"member-avatar-prefetch-failed",p,{userId:s});return}if(i===null||e.getGeneration()!==r)return;let c=N(i.value.remark),l=N(i.value.nickname),f=N(i.value.avatar);(c!==""||l!==""||f!=="")&&e.getSenderProfileCache()[s]===void 0&&e.setSenderProfileCache({...e.getSenderProfileCache(),[s]:{remark:c,nickname:l,avatar:f}});})());}await Promise.allSettled(o);}async function rr(e,t,n,r){let o=e.getClient();if(o===null)return;let a=e.getCredentials().userId,s=e.getGeneration(),i=[],c=[],l=false,f=t[0]?.conversationType;f==="group"&&e.getGroupMemberNames()[n]===void 0&&i.push((async()=>{let g;try{g=await o.group.peekMemberNames(n);}catch(u){e.getGeneration()===s&&U(e,"group-member-name-prefetch-failed",u,{groupId:n});return}g===null||e.getGeneration()!==s||(e.getGroupMemberNames()[n]===void 0&&e.setGroupMemberNames({...e.getGroupMemberNames(),[n]:ge(e,n,g.value)}),g.stale&&(l=true));})());let p=[...new Set(t.map(g=>g.senderId).filter(g=>g!==""&&g!=="system"&&g!==a))];f==="channel"&&p.length>0&&i.push((async()=>{let g;try{g=await o.channel.getMembersByIds(n,p);}catch(d){e.getGeneration()===s&&U(e,"channel-member-prefetch-failed",d,{conversation:{conversationType:"channel",conversationId:n}});return}if(e.getGeneration()!==s||r?.isCurrent?.()===false)return;let u=Date.now()+Cn,y={...e.getChannelMemberProfiles()[n]??{}};for(let d of g){let M=y[d.userId];M!==void 0&&Mn(d.updateVersion,M.updateVersion)<0||(y[d.userId]={displayName:d.displayName,...d.avatar===void 0?{}:{avatar:d.avatar},role:d.role,...d.updateVersion===void 0?{}:{updateVersion:d.updateVersion},expiresAt:u});}e.setChannelMemberProfiles({...e.getChannelMemberProfiles(),[n]:y});})());for(let g of p)e.getSenderProfileCache()[g]===void 0&&i.push((async()=>{let u;try{u=await o.contact.peekProfile(g);}catch(h){e.getGeneration()===s&&U(e,"sender-profile-prefetch-failed",h,{userId:g});return}if(u===null||e.getGeneration()!==s)return;let y=N(u.value.remark),d=N(u.value.nickname),M=N(u.value.avatar);(y!==""||d!==""||M!=="")&&e.getSenderProfileCache()[g]===void 0&&e.setSenderProfileCache({...e.getSenderProfileCache(),[g]:{remark:y,nickname:d,avatar:M}}),u.stale&&c.push(g);})());await Promise.allSettled(i),e.getGeneration()===s&&In(e,c,l?n:void 0);}function In(e,t,n){let r=e.getClient();if(r===null)return;let o=e.getGeneration();n!==void 0&&r.group.getMemberNames(n,{forceRefresh:true}).then(a=>{a!==null&&e.getGeneration()===o&&e.setGroupMemberNames({...e.getGroupMemberNames(),[n]:ge(e,n,a,{reconcile:true})});}).catch(a=>{e.getGeneration()===o&&U(e,"group-member-name-refresh-failed",a,{groupId:n});});for(let a of t)r.contact.getProfile(a,{forceRefresh:true}).then(s=>{if(s===null||e.getGeneration()!==o)return;let i=N(s.remark),c=N(s.nickname),l=N(s.avatar),f=e.getSenderProfileCache()[a];(i!==""||c!==""||l!=="")&&(f===void 0||f.remark!==i||f.nickname!==c||f.avatar!==l)&&e.setSenderProfileCache({...e.getSenderProfileCache(),[a]:{remark:i,nickname:c,avatar:l}});}).catch(s=>{e.getGeneration()===o&&U(e,"sender-profile-refresh-failed",s,{userId:a});});}async function Ho(e,t){let n=V(e),r=t.keyword.trim();return K(n,()=>{switch(t.conversation.conversationType){case "direct":return n.inDirect({conversationType:"direct",conversationId:t.conversation.conversationId},r);case "group":return n.inGroup({conversationType:"group",conversationId:t.conversation.conversationId},r);case "channel":return n.inChannel({conversationType:"channel",conversationId:t.conversation.conversationId},r);case "robot":return n.inRobot({conversationType:"robot",conversationId:t.conversation.conversationId},r)}})}async function Fo(e,t){let n=V(e),r=t.keyword.trim();return K(n,()=>n.texts(t.conversation,r))}function Uo(e,t){let n=V(e),r=t.keyword?.trim();return K(n,()=>n.files(t.conversation,r===void 0||r===""?void 0:r))}function Vo(e,t){let n=V(e);return K(n,()=>n.images(t.conversation))}function Ko(e,t){let n=V(e);return K(n,()=>n.videos(t.conversation))}function zo(e,t){let n=V(e);return K(n,()=>n.voices(t.conversation))}function Wo(e,t){let n=V(e);return K(n,()=>n.next(t))}function V(e){let t=e.getClient();if(t===null)throw new Error("IM client is not available");return t.search.messages}async function K(e,t){let n=await t();for(let r=0;r<5;r+=1){if(n.items.length>0||n.exhausted||r===4)return {results:n.items,...n.nextPageToken===void 0?{}:{nextPageToken:n.nextPageToken},exhausted:n.exhausted};if(n.nextPageToken===void 0)throw new Error("IM search page is missing nextPageToken");n=await e.next(n.nextPageToken);}throw new Error("Unreachable search pagination state")}export{ho as $,Jr as A,er as Aa,nt as B,nr as Ba,qr as C,or as Ca,Zr as D,Ho as Da,tt as E,Fo as Ea,Qr as F,Uo as Fa,eo as G,Vo as Ga,we as H,Ko as Ha,Ae as I,zo as Ia,sn as J,Wo as Ja,ao as K,io as L,so as M,cn as N,dn as O,H as P,it as Q,ln as R,fn as S,oe as T,ke as U,lt as V,xo as W,ft as X,bo as Y,Io as Z,mn as _,Pn as a,ut as aa,Tn as b,So as ba,En as c,Po as ca,Rn as d,To as da,ue as e,Eo as ea,On as f,Ro as fa,Ee as g,wo as ga,Bn as h,Ct as ha,en as i,xt as ia,Hn as j,Pt as ja,Un as k,Tt as ka,Vn as l,Et as la,Kn as m,Rt as ma,ur as n,_t as na,mr as o,Dt as oa,$n as p,Ot as pa,gr as q,Gt as qa,Cr as r,Ht as ra,Mr as s,Ft as sa,br as t,Go as ta,Wr as u,Yt as ua,Zn as v,bn as va,Qn as w,Jt as wa,Xr as x,qt as xa,an as y,Zt as ya,et as z,Qt as za};