k2-im 0.1.52 → 0.1.54

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.
@@ -1 +1 @@
1
- import {h,C,p,i,q,m,z,B,o,j,g}from'./chunk-HJYSLPY4.js';import {f,h as h$2,i as i$1,g as g$1}from'./chunk-2R4KVYRU.js';import {a}from'./chunk-Q2DEFN53.js';import'./chunk-OUXI5ZYL.js';import'./chunk-KV7I2SAC.js';import'./chunk-Q6TFPZMF.js';import'./chunk-WOT6VMZA.js';import {defineComponent,h as h$1,onUpdated,onUnmounted,ref,provide,watch,nextTick,onMounted,onBeforeUnmount,computed,inject,isVNode,cloneVNode,Fragment,reactive,shallowReactive}from'vue';function fn(t){let a=0,v=0;for(let c of t)c.kind==="video"?v+=1:a+=1;return {imageCount:a,videoCount:v}}function mn(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:fn(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 zt=Symbol("ImThreadReadActions");function Wt(t){provide(zt,t);}function hn(){return inject(zt,void 0)}var Tt=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:v}){return Wt(t.readActions),()=>{let c=h(t.message),g=t.rendererRegistry.resolve(c);return g!==void 0?h$1(g,{...a,message:t.message,presentation:t.presentation}):v["unsupported-body"]!==void 0?v["unsupported-body"]({kind:c,message:t.message}):h$1("span",{"data-im-thread-unsupported-body":c,"aria-hidden":"true"})}}});var bt=Symbol("ImThreadViewportRegistration");function ut(){return inject(bt,void 0)}var wt=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 v=ut(),c=new Map,g=new Map;onUpdated(()=>{let r=new Set,m=new Set;for(let u of t.items)u.kind==="message"||u.kind==="system"?r.add(u.key):u.kind==="date-separator"&&m.add(u.key);for(let u of c.keys())r.has(u)||c.delete(u);for(let u of g.keys())m.has(u)||g.delete(u);}),onUnmounted(()=>{c.clear(),g.clear();});function k(r,m){let u=Array.isArray(m)?m:[m];return u.length===1&&isVNode(u[0])?cloneVNode(u[0],{key:r}):h$1(Fragment,{key:r},u)}function C(r,m){let u=c.get(r);if(u?.messageId===m)return u.setElement;let M=L=>{v?.registerMessageNode(m,L instanceof HTMLElement?L:null);};return c.set(r,{messageId:m,setElement:M}),M}function j(r,m){let u=g.get(r);if(u!==void 0)return u.label=m,u.setElement;let M={label:m,setElement:L=>{v?.registerDateNode(r,M.label,L instanceof HTMLElement?L:null);}};return g.set(r,M),M.setElement}function E(r){return a.encryption?.({item:r})??h$1("div",{"data-im-thread-encryption":r.key})}function f(r){let m=j(r.key,r.label);return a["date-separator"]?.({item:r,setElement:m})??h$1("div",{ref:m,"data-im-thread-date-separator":r.key},r.label)}function V(r){v?.registerEntryUnreadNode(r instanceof HTMLElement?r:null);}function w(r){return a["entry-unread"]?.({item:r,setElement:V})??h$1("div",{ref:V,"data-im-thread-entry-unread":r.key,...r.count===void 0?{}:{"data-count":String(r.count)}})}function _(r){let m=C(r.key,r.message.id);return a.item!==void 0?a.item({item:r,setElement:m}):a.message!==void 0?a.message({item:r,setElement:m}):r.message.deletedForEveryone!==void 0?a["deleted-message"]?.({item:r,setElement:m})??h$1("article",{ref:m,"data-im-thread-message-id":r.message.id,"data-im-thread-message-terminal":"deleted-for-everyone"},[h$1("span",{"data-im-thread-anchor-point":""})]):r.message.recalled!==void 0?a["recalled-message"]?.({item:r,setElement:m})??h$1("article",{ref:m,"data-im-thread-message-id":r.message.id,"data-im-thread-message-terminal":"recalled"},[h$1("span",{"data-im-thread-anchor-point":""})]):r.kind==="system"&&a.system!==void 0?a.system({item:r,setElement:m}):h$1("article",{ref:m,"data-im-thread-message-id":r.message.id,"data-first-of-run":r.kind==="message"?String(r.firstOfRun):void 0},[h$1("span",{"data-im-thread-anchor-point":""}),h$1(Tt,{message:r.message,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{"unsupported-body":a["unsupported-body"]===void 0?void 0:u=>a["unsupported-body"]?.(u)})])}return ()=>h$1("div",{"data-im-thread-items":""},t.items.map(r=>{switch(r.kind){case "encryption":return a.item!==void 0?k(r.key,a.item({item:r})):k(r.key,E(r));case "date-separator":return a.item!==void 0?k(r.key,a.item({item:r,setElement:j(r.key,r.label)})):k(r.key,f(r));case "entry-unread":return a.item!==void 0?k(r.key,a.item({item:r,setElement:V})):k(r.key,w(r));case "system":case "message":return k(r.key,_(r))}return r}))}});function rt(){let t,a=0,v=0,c;function g(){t!==void 0&&clearTimeout(t),t=void 0,c=void 0;}function k(){t=void 0;let j=a-performance.now();if(j>0){v=a,t=setTimeout(k,j);return}let E=c;c=void 0,E?.();}function C(j,E){a=performance.now()+E,c=j,!(t!==void 0&&a>=v)&&(t!==void 0&&clearTimeout(t),v=a,t=setTimeout(k,E));}return {schedule:C,cancel:g}}function $t(t){let a=new Set,v=new Map,c=new Set;function g(){let E=[...c];c.clear();let f=[],V=[];for(let w of E)if(w.active)try{f.push({job:w,commit:w.read()});}catch(_){V.push(_);}for(let{job:w,commit:_}of f)if(w.active)try{_?.();}catch(r){V.push(r);}V.length>0&&queueMicrotask(()=>{throw new AggregateError(V,"Thread layout measurement failed")});}function k(E){E.active&&(c.add(E),t.requestFrame(g));}function C(E,f){let V=v.get(f);V?.delete(E),V?.size===0&&(v.delete(f),t.unobserve(f));}function j(E){let f={read:E,elements:new Set,active:true};return a.add(f),{observe(V){if(!f.active)return;let w=new Set(V),_=w.size!==f.elements.size||[...w].some(r=>!f.elements.has(r));for(let r of f.elements)w.has(r)||C(f,r);for(let r of w){if(f.elements.has(r))continue;let m=v.get(r);m===void 0&&(m=new Set,v.set(r,m),t.observe(r)),m.add(f);}f.elements=w,_&&w.size>0&&k(f);},invalidate:()=>k(f),dispose(){f.active=false,c.delete(f),a.delete(f);for(let V of f.elements)C(f,V);f.elements.clear();}}}return {register:j,hasTarget:E=>v.has(E),observeTargets:()=>v.forEach((E,f)=>t.observe(f)),resized:E=>E.forEach(f=>v.get(f)?.forEach(k)),invalidateAll:()=>a.forEach(k),dispose(){for(let E of a)E.active=false;a.clear(),c.clear(),v.clear();}}}var Qt=120,kn=500,Ye=.5,Vn=8;function It(t){let a=t.ownerDocument.defaultView?.devicePixelRatio;return 1+1/(a!==void 0&&Number.isFinite(a)&&a>0?a:1)}var Mt=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},pendingSendMessageIds:{type:Array,default:()=>[]},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:v,slots:c}){let g$1=ref(null),k=ref(null),C$1=new Map,j$1,E=new Map,f=new Set,V=new Map,w=0,_=[],r,m$1,u,M,L=$t({requestFrame:de,observe:e=>u?.observe(e),unobserve:e=>{e!==g$1.value&&e!==k.value&&!E.has(e)&&u?.unobserve(e);}}),R,W=false,q$1,Z=new Set,ae=false,I,A=0,Y="",z$1=1,$=false,X=false,N=true,J=false,pe=false,Ie=true,ne=false,s=0,ie=-1,Re=-1,Te=rt(),B$1,se,H,K,le=ref(true),Pe=ref(0),fe=C(e=>{Pe.value=e,a("new-message-count",e);});function De(e){let o=Number.isFinite(t.followThreshold)?Math.max(0,t.followThreshold):0;return e.scrollHeight-e.clientHeight-e.scrollTop<=o}function h(e=t.messageIds){return e.flatMap(o=>{let i=C$1.get(o);if(i===void 0)return [];let p=i.getBoundingClientRect(),O=i.querySelector("[data-im-thread-anchor-point]");return [{id:o,top:p.top,bottom:p.bottom,anchorTop:O?.getBoundingClientRect().top??p.top}]})}function S(e="",o=1){let i=Math.min(1,Math.max(0,o));Y!==""&&Y!==e&&V.get(Y)?.element.style.removeProperty("opacity"),Y=e,z$1=i,e!==""&&V.get(e)?.element.style.setProperty("opacity",String(i));}function T(){S();}function P(){let e=g$1.value;if(ae||e===null||!t.activeDateEnabled)return;let o=[...V.entries()].filter(([,U])=>e.contains(U.element)).map(([U,F])=>{let ce=F.element.getBoundingClientRect();return {key:U,label:F.label,top:ce.top,height:ce.height}}).sort((U,F)=>U.top-F.top),i=e.getBoundingClientRect(),p=o.find(U=>U.height>0)?.height??28,O=g({markers:o,viewportTop:i.top,overlayTop:Number.isFinite(t.activeDateOffset)?Math.max(0,t.activeDateOffset):0,overlayHeight:p});if(O===null){T(),a("active-date-change",null);return}S(O.inlineDateKey,O.inlineOpacity),a("active-date-change",O);}function x(e){m$1={scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,width:e.clientWidth,height:e.clientHeight};}function te(e){let o=m$1;if(o===void 0)return false;let i=Math.max(0,e.scrollHeight-e.clientHeight);return i<o.scrollHeight-o.height&&o.scrollTop>i&&Math.abs(e.scrollTop-i)<=It(e)}function Q(e){return te(e)||I!==void 0&&(I.behavior==="smooth"||Math.abs(e.scrollTop-I.targetTop)<=It(e))?0:e.scrollTop-w}function re(e,o){o!==0&&(w=e.scrollTop-o,I=void 0,Xe());}function Ae(e,o){let i=Q(e);if(H!==void 0)return H.expectedOffset-=i,Ze(),re(e,i),J||et(),false;let p=m$1;if(p===void 0)return false;let O=r,U=O===void 0?void 0:h([O.id])[0],F=e.scrollTop-p.scrollTop,ce=te(e)?0:F,Be=O===void 0||U===void 0?0:(U.anchorTop??U.top)-o.top-O.offset+F;return p.scrollHeight!==e.scrollHeight||p.width!==e.clientWidth||p.height!==e.clientHeight||Math.abs(Be)>Ye?(m$1=void 0,!$&&!X&&!t.loadingOlder&&!t.loadingNewer&&!t.hasNewer&&t.resizeFollowEnabled&&le.value&&Math.abs(ce)<=Ye?(G(),true):(O!==void 0&&lt({...O,offset:O.offset-ce}),re(e,i),false)):false}function ee(){let e=g$1.value;if(ae||e===null)return;let o$1=e.getBoundingClientRect();if(Ae(e,o$1))return;let i=R!==void 0&&W?t.messageIds.filter(F=>f.has(F)):t.messageIds,p=h(i);if(R!==void 0&&W&&p.length===0){le.value=De(e);return}let O=p.filter(F=>B({viewportTop:o$1.top,viewportBottom:o$1.bottom,messageTop:F.top,messageBottom:F.bottom,margin:t.visibleMargin})).map(F=>F.id),U=O.length!==_.length||O.some((F,ce)=>_[ce]!==F);_=Object.freeze(O),r=o(p,{top:o$1.top,bottom:o$1.bottom}),x(e),fe.acknowledgeVisible(O),le.value=De(e),U&&a("visible-range",_),a("settled",{visibleMessageIds:_,..._.length===0?{}:{newestVisibleMessageId:_[_.length-1]},isAtBottom:le.value,newMessageCount:Pe.value});}function de(e){if(Z.add(e),q$1!==void 0)return;let o=()=>{q$1=void 0;let i=[...Z];Z.clear(),i.forEach(p=>p());};typeof globalThis.requestAnimationFrame=="function"?q$1=globalThis.requestAnimationFrame(o):q$1=globalThis.setTimeout(o,0);}function ye(){q$1!==void 0&&(typeof q$1=="number"&&typeof globalThis.cancelAnimationFrame=="function"?globalThis.cancelAnimationFrame(q$1):globalThis.clearTimeout(q$1),q$1=void 0,Z.clear());}function oe(){de(ee);}function $e(){let e=g$1.value;if(e===null)return;let o$1=e.getBoundingClientRect(),i=o(h(),{top:o$1.top,bottom:o$1.bottom});i!==void 0&&(r=i,x(e));}function at(){return N&&H===void 0&&!X&&!t.loadingOlder}function it(){$e(),N=false,ie=s,X=true,le.value=false,a("reach-start"),de(()=>{t.loadingOlder||(X=false);});}function st(e){return t.hasNewer&&!$&&!t.loadingOlder&&!t.loadingNewer&&De(e)}function Je(){$=true,le.value=false,Re=s,a("reach-end"),de(()=>{t.loadingNewer||($=false);});}function ue(){let e=g$1.value;e===null||s===Re||!st(e)||Je();}function Xe(){let e=g$1.value;if(ae||e===null)return;let o=e.scrollTop,i=te(e),p=I,O=false;if(p!==void 0){let F=Math.abs(o-p.targetTop)<=It(e);O=p.behavior==="smooth"||F,(p.behavior!=="smooth"||F)&&(I=void 0);}!O&&!i&&!J&&Ie&&H===void 0&&o!==w&&(J=true,pe=true,s+=1);let U=J&&!O&&!i&&o!==w;if(U&&(A+=1,a("user-scroll"),de(P)),J&&!ne&&be(),!N&&pe&&s!==ie&&o<w&&o>Ce()&&je(),H!==void 0&&!O)if(J){let F=_e();F!==void 0&&(H.expectedOffset=F);}else Ze(),et();at()&&U&&o>=0&&m({previousScrollTop:w,currentScrollTop:o,topThreshold:t.olderPrefetchThreshold})&&it(),U&&st(e)&&z({previousScrollTop:w,currentScrollTop:o,isAtBottom:De(e),isHistoryWindow:t.hasNewer,isPageSettling:O})&&Je(),w=o,oe();}function ze(e,o="auto"){I={targetTop:e,behavior:o};}function Qe(e){let o=H,i=k.value;if(!(o===void 0||i===null)){if(o.visualOffset=Math.abs(e)<=Ye?0:e,o.visualOffset===0){i.style.removeProperty("transform"),i.style.removeProperty("will-change");return}i.style.setProperty("transform",`translate3d(0, ${o.visualOffset}px, 0)`),i.style.setProperty("will-change","transform");}}function Fe(){K!==void 0&&(clearTimeout(K),K=void 0),H!==void 0&&H.visualOffset!==0&&(r=void 0,m$1=void 0);let e=k.value;e?.style.removeProperty("transform"),e?.style.removeProperty("will-change"),H=void 0,I=void 0;}function _e(){let e=g$1.value,o=H;if(e===null||o===void 0)return;let i=C$1.get(o.anchor.id);return i===void 0?void 0:(i.querySelector("[data-im-thread-anchor-point]")??i).getBoundingClientRect().top-e.getBoundingClientRect().top}function Ze(){let e=H,o=_e();if(e===void 0||o===void 0)return;let i=e.expectedOffset-o;Math.abs(i)<=Ye||(Qe(e.visualOffset+i),e.committed=false,e.attempts=0);}function qe(){K!==void 0&&clearTimeout(K),K=setTimeout(()=>{K=void 0,!(J||H?.committed!==true)&&Fe();},kn);}function Le(e){let o=g$1.value,i=H;if(ae||o===null||i===void 0||J)return;let p=e?.visualOffset??i.visualOffset;if(Math.abs(p)<=Ye){i.committed=true,qe();return}let O=Math.max(0,o.scrollHeight-o.clientHeight),U=o.scrollTop,F=Math.min(O,Math.max(0,U-p));ze(F),o.scrollTop=F;let ce=o.scrollTop;if(Math.abs(ce-F)>Ye){e!==void 0&&(Qe(p+ce-U),w=ce),I=void 0,i.committed=false,i.attempts+=1,i.attempts<Vn?et():(Fe(),I=void 0,w=o.scrollTop);return}i.visualOffset!==0&&Qe(0),w=ce,i.expectedOffset=e===void 0?_e()??i.expectedOffset:e.currentOffset-(ce-U),r={...i.anchor,offset:i.expectedOffset},x(o),i.committed=true,i.attempts=0,qe();}function et(){K!==void 0&&clearTimeout(K),K=setTimeout(()=>{K=void 0,Le();},Qt);}function Oe(e){if(e!==void 0){if(H===void 0&&(H={anchor:e,expectedOffset:e.offset,visualOffset:0,committed:false,attempts:0}),!J&&H.visualOffset===0){let o=_e();if(o!==void 0){Le({visualOffset:H.expectedOffset-o,currentOffset:o});return}}Ze(),!J&&Le();}}function lt(e){let o=g$1.value;if(o===null||e===void 0)return;let i=o.getBoundingClientRect(),p=q(e,h([e.id]),{top:i.top,bottom:i.bottom});if(p!==void 0){let O=Math.max(0,o.scrollHeight-o.clientHeight),U=Math.min(O,Math.max(0,o.scrollTop+p));ze(U),o.scrollTop=U,w=o.scrollTop,m$1=void 0;}}function Ce(){return Number.isFinite(t.olderPrefetchThreshold)?Math.max(0,t.olderPrefetchThreshold):0}function Ne(){A+=1,I?.behavior==="smooth"&&(I=void 0),pe=false,J||(J=true,s+=1),ne&&Te.cancel();}function je(){let e=g$1.value;if(!(e===null||s===ie)){if(X||t.loadingOlder){ie=s,N=false;return}H!==void 0&&Fe(),N=true,at()&&e.scrollTop<=Ce()&&it();}}function Ge(){A+=1,r=void 0,m$1=void 0,Te.cancel(),Fe(),J=false,pe=false,ne=false,B$1=void 0,se=void 0,s+=1,ie=-1,Re=-1,N=true,X=false,$=false,I=void 0;}function Ee(){ne||(Te.cancel(),J=false,pe=false,H!==void 0&&(H.attempts=0),Le());}function be(){ne||Te.schedule(Ee,Qt);}function He(){I=void 0,Ee();}function dt(e){Ie=false,ne=true,Ne(),B$1=e.touches?.[0]?.clientY;}function tt(e){let o=e.touches?.[0]?.clientY;o!==void 0&&(B$1!==void 0&&o!==B$1&&(A+=1),B$1!==void 0&&o>B$1?je():B$1!==void 0&&o<B$1&&ue(),B$1=o);}function n(){ne=false,B$1=void 0,be();}function l(e){Ie=true,Ne(),e.deltaY<0?je():e.deltaY>0&&ue(),be();}function d(e){e.pointerType!=="touch"&&(Ie=true,Ne(),se=e.clientY,be());}function y(e){e.pointerType==="touch"||!J||se===void 0||(e.clientY!==se&&(A+=1),e.clientY<se?je():e.clientY>se&&ue(),se=e.clientY,be());}function b(e){e.pointerType!=="touch"&&(se=void 0,be());}function D(e){["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(e.key)&&(Ie=true,Ne(),e.key==="ArrowUp"||e.key==="PageUp"||e.key==="Home"||e.key===" "&&e.shiftKey?je():ue(),be());}function G(e="auto"){let o=g$1.value;if(o===null)return;A+=1,m$1=void 0,Fe();let i=Math.max(0,o.scrollHeight-o.clientHeight);ze(i,e),o.scrollTo?.({top:i,behavior:e}),o.scrollTop!==i&&(o.scrollTop=i),w=o.scrollTop,fe.clear(),W=false,ee();}function me(){let e=g$1.value;return e!==null&&e.clientWidth>0&&e.clientHeight>0}function ge(){let e=g$1.value;return me()&&e!==null&&e.scrollHeight>e.clientHeight+1}function we(e,o={}){return ke(C$1.get(e),o)}function ke(e,o){let i=g$1.value;if(i===null||e===void 0||!i.contains(e)||i.clientHeight<=0)return false;A+=1,Fe();let p=i.getBoundingClientRect(),O=e.getBoundingClientRect(),U=o.block??"center",F;U==="start"?F=i.scrollTop+O.top-p.top:U==="end"?F=i.scrollTop+O.bottom-p.bottom:U==="nearest"?O.top>=p.top&&O.bottom<=p.bottom?F=i.scrollTop:O.top<p.top?F=i.scrollTop+O.top-p.top:F=i.scrollTop+O.bottom-p.bottom:F=j({currentScrollTop:i.scrollTop,scrollHeight:i.scrollHeight,targetHeight:O.height,targetTop:O.top,viewportHeight:i.clientHeight,viewportTop:p.top});let ce=Math.max(0,i.scrollHeight-i.clientHeight),Be=Math.min(ce,Math.max(0,F));m$1=void 0;let We=o.behavior??"auto";return ze(Be,We),i.scrollTo?.({top:Be,behavior:We}),i.scrollTop!==Be&&(i.scrollTop=Be),w=i.scrollTop,W=false,ee(),true}function Ve(e){let o=g$1.value;if(o===null||e===void 0||!o.contains(e)||o.clientHeight<=0)return null;let i=e.getBoundingClientRect(),p=o.scrollTop+i.top-o.getBoundingClientRect().top+i.height/2,O=o.clientHeight/2;return {older:p<O-1,newer:o.scrollHeight-p<O-1}}function gt(){return Ve(j$1)}function nn(e){return Ve(C$1.get(e))}function rn(){fe.clear();}function on(){$=true,le.value=false;}function an(){$=false,oe();}function sn(e,o){let i=C$1.get(e);if(i!==o){if(i!==void 0&&(R?.unobserve(i),i.style.removeProperty("--im-thread-placeholder-play-state"),L.hasTarget(i)||u?.unobserve?.(i),E.delete(i),f.delete(e)),o===null){C$1.delete(e),f.delete(e);return}C$1.set(e,o),E.set(o,e),typeof globalThis.IntersectionObserver=="function"&&o.style.setProperty("--im-thread-placeholder-play-state","paused"),R?.observe(o),u?.observe(o),oe();}}function ln(e,o,i){let p=V.get(e);if(i===null){V.delete(e);return}V.set(e,{element:i,label:o}),Y===e&&i.style.setProperty("opacity",String(z$1)),p?.element!==i&&(i.dataset.imThreadDateSeparator=e);}return provide(bt,{registerLayoutMeasurement:L.register,registerMessageNode:sn,registerDateNode:ln,registerEntryUnreadNode:e=>{j$1=e??void 0;}}),watch(()=>t.contentKey,(e,o)=>{if(e===o)return;Ge();let i=g$1.value;i!==null&&(w=i.scrollTop);},{flush:"sync"}),watch(()=>t.messageIds,async(e,o)=>{if(e.length===o.length&&e.every((ve,Ke)=>ve===o[Ke]))return;let i=g$1.value;if(i===null)return;let p$1=new Set(o);o.length>0&&e.length>0&&!e.some(ve=>p$1.has(ve))&&Ge();let U=t.contentKey,F=A,ce=le.value,Be=o[o.length-1],We=Be===void 0?-1:e.indexOf(Be),nt=We<0?[]:e.slice(We+1).filter(ve=>!p$1.has(ve)),dn=nt.some(ve=>t.pendingSendMessageIds.includes(ve)),vt=$||t.loadingNewer||X||t.loadingOlder,un=e.length===o.length&&e.every(ve=>p$1.has(ve))&&e.some((ve,Ke)=>ve!==o[Ke]),Ot=o[0],kt=Ot!==void 0&&e.indexOf(Ot)>0,ht;if(r!==void 0&&(kt||nt.length>0&&vt)){let ve=i.getBoundingClientRect(),Ke=h([r.id]),pt=Ke[0],cn=pt!==void 0&&pt.bottom>ve.top&&pt.top<ve.bottom?Ke:h();ht=p(r,cn,{top:ve.top,bottom:ve.bottom});}if(await nextTick(),!(ae||t.contentKey!==U||A!==F)){if(dn&&t.followNewMessages){G();return}if(un&&ce&&t.followNewMessages&&t.resizeFollowEnabled&&!t.hasNewer&&!vt){G();return}if(kt&&(X=false,Oe(ht)),nt.length>0){if(vt){$=false,H===void 0&&lt(ht),le.value=false,oe();return}(ce||nt.some(Ke=>t.shouldFollowAppendedMessage?.(Ke)===true))&&t.followNewMessages?G():fe.add(nt);}oe();}},{flush:"pre"}),watch(()=>t.loadingNewer,(e,o)=>{e||!o||!$||de(()=>{t.loadingNewer||($=false);});},{flush:"pre"}),watch(()=>t.loadingOlder,(e,o)=>{if(e){X=true;return}!o||!X||de(()=>{t.loadingOlder||(X=false);});},{flush:"pre"}),onMounted(()=>{let e=g$1.value;if(e!==null){if(w=e.scrollTop,e.addEventListener("scroll",Xe,{passive:true}),e.addEventListener("scrollend",He,{passive:true}),e.addEventListener("touchstart",dt,{passive:true}),e.addEventListener("touchmove",tt,{passive:true}),e.addEventListener("touchend",n,{passive:true}),e.addEventListener("touchcancel",n,{passive:true}),e.addEventListener("wheel",l,{passive:true}),e.addEventListener("pointerdown",d,{passive:true}),e.addEventListener("pointermove",y,{passive:true}),e.addEventListener("pointerup",b,{passive:true}),e.addEventListener("pointercancel",b,{passive:true}),e.addEventListener("keydown",D),typeof globalThis.ResizeObserver=="function"){u=new globalThis.ResizeObserver(o=>{if(ae||g$1.value===null)return;L.resized(o.map(p=>p.target)),o.some(({target:p})=>p===e||p===k.value||E.has(p))&&ee();}),u.observe(e),k.value!==null&&u.observe(k.value);for(let o of C$1.values())u.observe(o);L.observeTargets();}if(M=e.ownerDocument.fonts,M?.addEventListener("loadingdone",L.invalidateAll),typeof globalThis.IntersectionObserver=="function"){R=new globalThis.IntersectionObserver(o=>{for(let i of o){let p=E.get(i.target);if(p===void 0)continue;let O=i.target,U=i.isIntersecting?"running":"paused";O.style.getPropertyValue("--im-thread-placeholder-play-state")!==U&&O.style.setProperty("--im-thread-placeholder-play-state",U),i.isIntersecting?f.add(p):f.delete(p);}W=true,oe();},{root:e,rootMargin:`${Number.isFinite(t.visibleMargin)?Math.max(0,t.visibleMargin):0}px 0px`});for(let o of C$1.values())R.observe(o);}oe();}}),onBeforeUnmount(()=>{ae=true;let e=g$1.value;e!==null&&e.removeEventListener("scroll",Xe),e!==null&&(e.removeEventListener("scrollend",He),e.removeEventListener("touchstart",dt),e.removeEventListener("touchmove",tt),e.removeEventListener("touchend",n),e.removeEventListener("touchcancel",n),e.removeEventListener("wheel",l),e.removeEventListener("pointerdown",d),e.removeEventListener("pointermove",y),e.removeEventListener("pointerup",b),e.removeEventListener("pointercancel",b),e.removeEventListener("keydown",D)),Te.cancel(),Fe(),ye(),M?.removeEventListener("loadingdone",L.invalidateAll),L.dispose(),u?.disconnect(),R?.disconnect(),T(),j$1=void 0;for(let o of C$1.values())o.style.removeProperty("--im-thread-placeholder-play-state");C$1.clear(),E.clear(),f.clear(),V.clear(),fe.clear();}),v({getViewportElement:()=>g$1.value,clearNewMessageBadge:rn,clearActiveDate:T,isAtBottom:computed(()=>le.value),isMeasurable:me,isScrollable:ge,getMessageCenteringNeeds:nn,newMessageCount:computed(()=>Pe.value),prepareHistoryPageAppend:on,cancelHistoryPageAppend:an,trackRemoteMessageIds:(e,o)=>fe.trackRemote(e,o),scrollToLatest:G,scrollToMessage:we,scrollToEntryUnread:()=>ke(j$1,{block:"center",behavior:"auto"}),getEntryUnreadCenteringNeeds:gt,focusViewport:()=>g$1.value?.focus({preventScroll:true})}),()=>h$1("div",{ref:g$1,"data-im-thread-viewport":"",role:"log",tabindex:-1},[h$1("div",{ref:k,"data-im-thread-viewport-content":""},c.default?.())])}});var Zt=Symbol("ImThreadSurfaceContext");function Cn(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 Nn(t){provide(Zt,t);}function Rt(){let t=inject(Zt);if(t===void 0)throw new Error("ImThreadSurface \u9700\u8981\u663E\u5F0F context prop \u6216 provideImThreadSurfaceContext");return t}function Fn(t,a){if(t.key!==a.key||t.kind!==a.kind)return false;switch(a.kind){case "message":return t.kind==="message"&&t.message===a.message&&t.firstOfRun===a.firstOfRun;case "system":return t.kind==="system"&&t.message===a.message;case "date-separator":return t.kind==="date-separator"&&t.label===a.label;case "entry-unread":return t.kind==="entry-unread"&&t.count===a.count;case "encryption":return true}}function en(t,a){if(t===void 0)return a;let v=new Map(t.map(g=>[g.key,g])),c=a.map(g=>{let k=v.get(g.key);return k!==void 0&&Fn(k,g)?k:g});return t.length===c.length&&c.every((g,k)=>g===t[k])?t:c}var Et=Object.freeze({followThreshold:120,olderPrefetchThreshold:120,visibleReadDelay:300,visibleMargin:8,activeDateOffset:16,activeDateIdleDelay:1500}),St=Object.freeze({enabled:true,maxFillPages:8}),Bn=8,Un=160;function jn(t,a){return t?.conversationType===a.conversationType&&t.conversationId===a.conversationId}var Kn=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$1,slots:v}){let c=t.context??Rt(),g=ref(null),k=ref(0),C=ref(false),j=ref(false),E=ref(false),f,V,w,_=ref(false),r=ref(false),m=ref(false),u=false,M,L=ref(true),R=[],W=rt(),q=0,Z=ref(0),ae,I=null,A="",Y="",z="",$=false,X=false,N=ref(false),J=ref(""),pe=ref(false),Ie=rt(),ne,s=computed(()=>c.getState()),ie=computed(()=>!!s.value.pendingLocationMessageId),Re=computed(()=>s.value.pageVisible??c.isPageVisible?.()??true),Te=computed(()=>s.value.pageEngaged??c.isPageEngaged?.()??true),B=computed(()=>jn(s.value.activeConversation,t.conversation)),se=computed(()=>({...Et,...t.viewportOptions})),H=computed(()=>{let n=t.initialViewportOptions.maxFillPages??St.maxFillPages;return {enabled:t.initialViewportOptions.enabled??St.enabled,maxFillPages:Number.isFinite(n)?Math.max(0,Math.floor(n)):St.maxFillPages}}),K=computed(()=>!B.value||!s.value.ready?"":`${t.conversation.conversationType}\0${t.conversation.conversationId}`),le="",Pe=computed(n=>{let l=B.value?`${t.conversation.conversationType}\0${t.conversation.conversationId}`:"",d=le===l?n:void 0;return le=l,B.value?en(d,i({messages:s.value.messages,entryUnread:s.value.entryUnread,formatDate:c.formatDate,leadingItems:c.leadingItems?.(),beforeMessageItems:c.beforeMessageItems})):en(d,[])}),fe=computed(()=>Pe.value.flatMap(n=>n.kind==="message"||n.kind==="system"?[n.message.id]:[])),De=computed(()=>s.value.messages.filter(n=>(n.status==="pending"||n.status==="uploading"||n.status==="sending")&&c.shouldFollowMessage?.(n)===true).map(n=>n.id));function h(){Ie.cancel(),ne!==void 0&&(clearTimeout(ne),ne=void 0);}function S(n=false){if(h(),pe.value=false,n){g.value?.clearActiveDate(),J.value="";return}ne=setTimeout(()=>{ne=void 0,!pe.value&&(g.value?.clearActiveDate(),J.value="");},Un);}function T(n){if(n===null){S();return}ne!==void 0&&(clearTimeout(ne),ne=void 0),J.value=n.label,pe.value=true;let l=se.value.activeDateIdleDelay,d=Number.isFinite(l)?Math.max(0,l):Et.activeDateIdleDelay;Ie.schedule(()=>S(),d);}async function P(n,l,d,y=true){t.hooks?.beforeAction?.(n);try{let b=await l();return d?.()!==!1&&t.hooks?.afterAction?.(n,b),b}catch(b){throw y&&d?.()!==false&&t.hooks?.onError?.(n,b),b}}function x(n="automatic",l,d=true){return !B.value||s.value.loading||!s.value.hasOlder?Promise.resolve(0):P({kind:"load-older",source:n},()=>c.actions.loadOlder(),l,d)}function te(){return Q()}function Q(n,l=true){let d=c.actions.loadNewer,y=s.value.loadingNewer??s.value.loading;return !B.value||y||!s.value.hasNewer||d===void 0?Promise.resolve(0):P({kind:"load-newer"},()=>d(),n,l)}async function re(n){for(let l=0;l<Bn;l+=1){if(!B.value||E.value||j.value||ie.value)return;let d=n==="older"?s.value.hasOlder:s.value.hasNewer,y=n==="older"?s.value.olderError:s.value.newerError;if(!d||y!==null||(n==="older"?await x("user-scroll"):await te())>0)return;let D=n==="older"?s.value.hasOlder:s.value.hasNewer,G=n==="older"?s.value.olderError:s.value.newerError;if(!D||G!==null)return}}async function Ae(){return !B.value||c.actions.loadNewer===void 0?0:de({kind:"load-newer"},()=>c.actions.retryNewer?.()??c.actions.loadNewer?.({force:true})??Promise.resolve(0))}async function ee(){return B.value?de({kind:"retry-older"},()=>c.actions.retryOlder?.()??c.actions.loadOlder({force:true})):0}async function de(n,l){let d=K.value,y=++q;I=null,z="";let b;try{b=await P(n,l);}catch(D){throw Oe(d,y)&&(z=d),D}return Oe(d,y)&&!N.value&&(I=null,Ge()),b}async function ye(){if(!B.value)return false;let n=K.value;be(),He();let l=++Z.value;return E.value=false,Ee(true),$=true,A=n,Y=Ne(Ce()),!await P({kind:"jump-to-latest"},()=>c.actions.jumpToLatest?.()??Promise.resolve(!s.value.isHistoryWindow),()=>ue(n,l))||!ue(n,l)||(await nextTick(),!ue(n,l))?false:(g.value?.scrollToLatest(),C.value=true,m.value=false,$e(),true)}function oe(n=false){let l=g.value,d=l?.getViewportElement();r.value=l?.isScrollable()===true;let y=s.value.entryUnreadNavigation;_.value=y?.state==="located"&&R.includes(y.firstMessageId),N.value&&_.value&&(C.value=true);let b=d==null?0:Math.max(0,d.scrollHeight-d.clientHeight-d.scrollTop);m.value=y!==void 0&&b>50,n&&y!==void 0&&d!==null&&d!==void 0&&d.clientHeight>0&&b>=d.clientHeight&&(C.value=true);}function $e(){let n=c.actions.markConversationRead;if(n===void 0||!Te.value||!B.value||!N.value||j.value||u&&(!L.value||s.value.hasNewer)||M!==void 0||s.value.error!==null)return;let l=K.value,d=n().then(()=>{M===d&&l===K.value&&(u=true);}).catch(y=>{!X&&M===d&&l===K.value&&t.hooks?.onError?.({kind:"mark-conversation-read"},y);}).finally(()=>{M===d&&(M=void 0);});M=d;}async function at(){let n=c.actions.loadEntryUnread;if(!B.value||j.value||n===void 0)return "cancelled";He();let l=K.value,d=++Z.value;E.value=false;let y=new AbortController;w=y,V=d,j.value=true,Ee(true),$=true;try{let b=await P({kind:"jump-to-entry-unread"},()=>n({signal:y.signal}),()=>ue(l,d));if(!ue(l,d))return "cancelled";if(!b||s.value.entryUnread.state!=="located")return "unavailable";let G=await it(l,d);return G&&(C.value=!0),G?"located":ue(l,d)?"unavailable":"cancelled"}catch(b){if(!ue(l,d))return "cancelled";throw b}finally{V===d&&(V=void 0,w=void 0,j.value=false);}}async function it(n,l){await nextTick();for(let d=0;d<60;d+=1){if(!ue(n,l))return false;if(g.value?.scrollToEntryUnread())return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(y=>window.requestAnimationFrame(()=>y()));}return false}function st(n){L.value=n.isAtBottom,k.value=n.newMessageCount,oe(),Ge();}function Je(n,l){return g.value?.scrollToMessage(n,l)??false}function ue(n,l){return !X&&Z.value===l&&K.value===n&&B.value}async function Xe(n,l,d,y){for(let b=0;b<60;b+=1){if(!ue(n,l))return false;if(Je(d,y))return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(D=>window.requestAnimationFrame(()=>D()));}return false}async function ze(n,l){for(let d=0;d<60;d+=1){if(!n())return false;if(g.value?.isMeasurable()&&g.value.getMessageCenteringNeeds(l)!=null)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(y=>window.requestAnimationFrame(()=>y()));}return false}async function Qe(n){let l=()=>!n()||!(s.value.loading||s.value.loadingOlder||s.value.loadingNewer);return l()||await new Promise(d=>{let y=watch(l,b=>{b&&(y(),d());},{flush:"sync"});}),await nextTick(),await nextTick(),n()}async function Fe(n,l,d){let y=g.value;if(y===null||!y.isMeasurable())return false;let b=0,D="older",G=()=>ue(n,l),me=async ge=>{let we=0,ke=ge==="older"?s.value.olderError:s.value.newerError,Ve=ke===void 0?s.value.error:ke;if(Ve!=null)throw Ve;if(ge==="older")we=await x("automatic",G,false);else {y.prepareHistoryPageAppend();try{we=await Q(G,!1);}catch(gt){throw G()&&y.cancelHistoryPageAppend(),gt}we<=0&&G()&&!s.value.hasNewer&&y.cancelHistoryPageAppend();}return b+=1,await nextTick(),await nextTick(),G()};for(;ue(n,l)&&b<H.value.maxFillPages&&y.isMeasurable();){if(!await Qe(G))return false;let ge=y.getMessageCenteringNeeds(d);if(ge===null)return false;let we=!s.value.hasOlder,ke=!s.value.hasNewer||c.actions.loadNewer===void 0,Ve=ge.older&&ge.newer&&!we&&!ke?D:ge.older&&!we?"older":ge.newer&&!ke?"newer":void 0;if(Ve===void 0)break;if(D=Ve==="older"?"newer":"older",!await me(Ve))return false}return ue(n,l)}async function _e(n,l={behavior:"auto",block:"center"}){if(!B.value||n==="")return {ok:false,reason:"cancelled"};let d=K.value,y=E.value;be(),He();let b=y||ae!==void 0||(s.value.loadingOlder??s.value.loading)||(s.value.loadingNewer??s.value.loading),D=++Z.value;E.value=true;let G=new AbortController;f=G,Ee(true),$=true,A=d,Y=Ne(Ce());let me=()=>ue(d,D);try{if(b&&c.actions.loadAround!==void 0||!fe.value.includes(n)){let we=c.actions.loadAround;if(we===void 0)return {ok:!1,reason:"anchor-unavailable"};let ke={};ae=ke;try{let Ve=await P({kind:"locate-message",messageId:n},()=>we(n,{signal:G.signal}),me,!1);if(!me())return {ok:!1,reason:"cancelled"};if(!Ve)return {ok:!1,reason:"not-visible"}}finally{ae===ke&&(ae=void 0);}}return await nextTick(),await nextTick(),!await ze(me,n)||!await Fe(d,D,n)?{ok:!1,reason:me()?"not-visible":"cancelled"}:await Xe(d,D,n,l)?{ok:!0}:{ok:!1,reason:me()?"not-visible":"cancelled"}}catch(ge){return me()?a(ge):{ok:false,reason:"cancelled"}}finally{f===G&&(f=void 0),Z.value===D&&(E.value=false);}}async function Ze(n,l){return (await _e(n,l)).ok}function qe(){W.cancel();}function Le(){if(!N.value){qe();return}let n=t.readActions;if(n===void 0&&c.actions.markVisibleMessages===void 0){qe();return}let l=Number.isFinite(se.value.visibleReadDelay)?Math.max(0,se.value.visibleReadDelay):Et.visibleReadDelay;W.schedule(()=>{if(!B.value||!Te.value)return;$e();let d=c.actions.markVisibleMessages;if(d!==void 0){let D=R;d(D).catch(G=>{t.hooks?.onError?.({kind:"visible-range",messageIds:D},G);});return}if(n===void 0)return;let y=R[R.length-1];if(y===void 0)return;let b=n.resolveTarget===void 0?y:n.resolveTarget(y);b!=null&&Promise.resolve(n.markRead(b)).catch(D=>{t.hooks?.onError?.({kind:"visible-range",messageIds:R},D);});},l);}function et(n){R=Object.freeze([...n]),oe();let l={kind:"visible-range",messageIds:R};t.hooks?.beforeAction?.(l);try{c.actions.onVisibleRange?.(R),t.hooks?.afterAction?.(l,void 0);}catch(d){throw t.hooks?.onError?.(l,d),d}N.value?Le():Ge();}function Oe(n,l){return !X&&q===l&&K.value===n&&!$&&!ie.value}function lt(n,l){Oe(n,l)&&(A=n,Y=Ne(Ce()),N.value=true,oe(),$e(),Le());}function Ce(){return s.value.entryUnreadNavigation===void 0?s.value.entryUnread:{state:"none"}}function Ne(n){return n.state!=="located"?n.state:`${n.state}:${n.firstMessageId}`}async function je(n,l,d){for(let y=0;y<60;y+=1){if(!Oe(n,l))return false;if(g.value?.scrollToMessage(d,{behavior:"auto",block:"center"})===true)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(D=>window.requestAnimationFrame(()=>D()));}return false}function Ge(){let n=K.value,l=Ne(Ce());if(n===""||s.value.loading||E.value||ie.value||s.value.error!==null&&s.value.messages.length===0||A===n&&(Y===l||Y.startsWith("located:")||$)||z===n||I!==null)return;if(!H.value.enabled){A=n,Y=l,N.value=true,Le();return}let d=++q;$=false,N.value=false;let y=(async()=>{if(await nextTick(),!Oe(n,d))return;let b=g.value;if(b===null||!b.isMeasurable())return;let D=Ce();if(D.state==="located"&&!fe.value.includes(D.firstMessageId))return;let G=D.state==="located"?await je(n,d,D.firstMessageId):false;if(D.state==="located"&&!G)return;G||b.scrollToLatest();let me=0;for(;Oe(n,d)&&me<H.value.maxFillPages&&s.value.error===null&&(s.value.hasOlder||s.value.hasNewer&&c.actions.loadNewer!==void 0)&&b.isMeasurable()&&!b.isScrollable();){if(s.value.hasNewer&&c.actions.loadNewer!==void 0&&(s.value.messages.length===0||!s.value.hasOlder)){let we=Z.value;b.prepareHistoryPageAppend();try{await te(),await nextTick();}finally{K.value===n&&Z.value===we&&(q===d||$)&&b.cancelHistoryPageAppend();}}else await x();if(!Oe(n,d)||(me+=1,await nextTick(),await nextTick(),!b.isMeasurable()))return}if(!Oe(n,d)||!b.isMeasurable())return;let ge=Ce();if(ge.state==="located"){if(!fe.value.includes(ge.firstMessageId)||!await je(n,d,ge.firstMessageId))return}else (me>0||G)&&b.scrollToLatest();await nextTick(),lt(n,d);})().catch(()=>{Oe(n,d)&&(z=n);}).finally(()=>{I===y&&(I=null);});I=y;}function Ee(n,l=false){q+=1,I=null,$=false,N.value=n,n||(A="",Y="",l||(z="")),qe();}function be(){w!==void 0&&(Z.value+=1,w.abort(),w=void 0,V=void 0,j.value=false);}function He(){!E.value&&f===void 0||(Z.value+=1,f?.abort(),f=void 0,E.value=false);}function dt(){if(oe(true),be(),He(),ie.value&&c.actions.cancelMessageLocation?.(),$=true,N.value)return;let n=K.value;q+=1,I=null,A=n,N.value=true,Le();}let tt=Object.freeze({getViewportElement:()=>g.value?.getViewportElement()??null,loadOlder:x,retryOlder:ee,loadNewer:te,retryNewer:Ae,jumpToLatest:ye,jumpToEntryUnread:at,scrollToMessage:Je,locateMessage:Ze,locateMessageDetailed:_e,focusViewport:()=>g.value?.focusViewport()});return a$1(tt),watch(Te,n=>{n&&N.value?Le():qe();}),watch([()=>s.value.activeRemoteMessageRevision??0,g,K],()=>{let n=g.value;if(n===null||!B.value)return;let l=c.actions.drainActiveRemoteMessageIds?.()??[];n.trackRemoteMessageIds(l,{isAtBottom:L.value,isHistoryWindow:s.value.isHistoryWindow,isPageVisible:Re.value})&&(L.value=false);},{flush:"post"}),watch(()=>s.value.pendingLocationMessageId??"",n=>{(n!==""||E.value)&&(He(),Z.value+=1,E.value=false),n!==""&&(be(),N.value||Ee(false));},{flush:"sync"}),watch([K,()=>s.value.loading,()=>s.value.error,()=>fe.value.length,()=>s.value.hasOlder,()=>Ne(Ce()),H,()=>s.value.hasNewer,ie],([n,l,d,y,,b],[D,,,G,,me])=>{if(n!==D&&(be(),He(),Z.value+=1,E.value=false,ae=void 0,Ee(false),S(true),g.value?.clearNewMessageBadge(),k.value=0,L.value=true,R=[],C.value=false,_.value=false,r.value=false,m.value=false,j.value=false,V=void 0,u=false,M=void 0),n!==""&&n===D&&G!==void 0&&G>0&&y===0&&(s.value.hasOlder||s.value.hasNewer)&&N.value&&Ee(false,true),n!==""&&n===D&&b!==me&&!Y.startsWith("located:")&&!$&&b.startsWith("located:")&&(A="",Y="",N.value=false),n===""){Ee(false);return}if(d!==null&&s.value.messages.length===0){N.value||Ee(false,true);return}l||Ge();},{flush:"post",immediate:true}),onBeforeUnmount(()=>{X=true,be(),He(),Z.value+=1,Ee(false),S(true);}),()=>{let n={conversation:t.conversation,state:s.value,items:Pe.value,actions:tt,initialViewportSettled:K.value!==""&&(s.value.messages.length===0?!s.value.loading&&s.value.error===null&&!s.value.hasOlder&&!s.value.hasNewer:N.value&&A===K.value)},l=[v.header?.(n),v["before-list"]?.(n)];if(!B.value)l.push(v.unsupported?.(n)??h$1("div",{"data-im-thread-unsupported":""}));else if(!s.value.ready&&s.value.loading)l.push(v.loading?.(n)??h$1("div",{"data-im-thread-loading":""}));else if(s.value.error!==null&&s.value.messages.length===0)l.push(v.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)l.push(v.empty?.(n)??h$1("div",{"data-im-thread-empty":""}));else {let d=h$1(Mt,{ref:g,messageIds:fe.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:se.value.followThreshold,olderPrefetchThreshold:se.value.olderPrefetchThreshold,visibleMargin:se.value.visibleMargin,activeDateOffset:se.value.activeDateOffset,activeDateEnabled:v["active-date"]!==void 0,resizeFollowEnabled:N.value&&!j.value&&!E.value&&!ie.value,followNewMessages:Re.value&&!j.value&&!E.value&&!ie.value,shouldFollowAppendedMessage:y=>{let b=s.value.messages.find(D=>D.id===y);return b===void 0?false:c.shouldFollowMessage?.(b)===true},pendingSendMessageIds:De.value,onReachStart:()=>{re("older").catch(()=>{});},onReachEnd:()=>{re("newer").catch(()=>{});},onSettled:st,onUserScroll:dt,onActiveDateChange:T,onVisibleRange:et,onNewMessageCount:y=>{k.value=y;}},{default:()=>[v["viewport-before"]?.(n),h$1(wt,{items:Pe.value,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{item:v.item,"date-separator":v["date-separator"],"entry-unread":v["entry-unread"],encryption:v.encryption,system:v.system,message:v.message,"recalled-message":v["recalled-message"],"deleted-message":v["deleted-message"],"unsupported-body":v["unsupported-body"]}),v["viewport-after"]?.(n)]});l.push(h$1("div",{"data-im-thread-viewport-shell":""},[v["active-date"]?.({label:J.value,visible:pe.value&&J.value!==""}),d,v["entry-unread-navigation"]?.({...n,count:s.value.entryUnreadNavigation?.state==="none"?0:s.value.entryUnreadNavigation?.count??0,loading:j.value,visible:n.initialViewportSettled&&!C.value&&!_.value&&!s.value.isHistoryWindow&&s.value.entryUnreadNavigation!==void 0&&s.value.entryUnreadNavigation.state!=="none"&&s.value.entryUnreadNavigation.count>0&&(r.value||s.value.hasOlder)})])),s.value.error!==null&&l.push(v.error?.(n)??h$1("div",{"data-im-thread-error":""}));}return l.push(v["after-list"]?.(n),v["jump-to-latest"]?.({...n,count:k.value,visible:m.value||!L.value||s.value.isHistoryWindow}),v["context-menu"]?.(n),v.composer?.(n)),h$1("section",{"data-im-thread-surface":"","data-conversation-type":t.conversation.conversationType,"data-conversation-id":t.conversation.conversationId},l)}}});function _n(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 v=Object.freeze([...a.keys()]);return Object.freeze({kinds:v,resolve:c=>a.get(c)})}var zn=140,Wn=120;function mt(t,a){if(t.width<=0||t.height<=0)return 0;let v=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,v*c/(t.width*t.height))}function Pt(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 At(t){let a=Math.max(0,t.scrollIdleMs??zn),v=Math.max(0,t.visibilityDwellMs??Wn),c=Math.min(1,Math.max(0,t.minimumIntersectionRatio??.01)),g=Math.max(0,t.revealMarginPx??0),k=Math.max(0,t.preloadMarginPx??0),C=Math.max(g,k),j=Math.max(0,t.maxPreloadTargets??Number.POSITIVE_INFINITY),E=Math.max(1,t.maxSettledVisible??Number.POSITIVE_INFINITY),f=new Map,V=new Map,w=reactive(new Set),_=new Set,r=new Set,m=[],u=null,M=null,L=null,R=false,W=false,q=false,Z=false,ae=new Map,I=0,A=false;function Y(){I+=1,A=false,ae.clear();}function z(h){let S=[...h].filter(([P,x])=>f.get(P)===x);if(S.length===0)return;let T=Ie();ne(true,T,S),Re(T,S);}function $(h){if(!t.batchRegistration){z(h);return}for(let[T,P]of h)ae.set(T,P);if(A)return;A=true;let S=I;nextTick(()=>{if(q||S!==I)return;A=false;let T=[...ae];ae.clear(),z(T),H();});}let X,N;function J(){X!==void 0&&clearTimeout(X),X=void 0;}function pe(){N!==void 0&&clearTimeout(N),N=void 0;}function Ie(){let h,S=new Map;return {getRootRect(){return h===void 0&&(h=u?.getBoundingClientRect()??null),h},getElementRect(T){let P=S.get(T);return P===void 0&&(P=T.getBoundingClientRect(),S.set(T,P)),P}}}function ne(h=false,S=Ie(),T=f){if(!h&&M!==null||u===null)return;let P=S.getRootRect();if(P===null)return;let x=Pt(P,C);for(let[te,Q]of T){let re=S.getElementRect(te);Q.ratio=mt(re,P),Q.intersecting=Q.ratio>0,Q.revealIntersecting=C>0?mt(re,x)>0:Q.intersecting&&Q.ratio>=c;}}function s(h){return h.intersecting&&h.ratio>=c}function ie(h){let S=V.get(h.key);return S!==void 0&&f.get(S)===h}function Re(h=Ie(),S=f){let T=[];for(let[P,x]of S)if(!(!x.revealIntersecting||w.has(x.key))){if(C>g){if(g===0&&!s(x))continue;if(g>0){let te=h.getRootRect();if(te===null||mt(h.getElementRect(P),Pt(te,g))<=0)continue}}T.push(x);}for(let P of T)!ie(P)||w.has(P.key)||(w.add(P.key),t.onRevealed?.(P.item));}function Te(h,S=false){let T=new Set(h.map(x=>x.key));if(!(!(T.size!==r.size||[...T].some(x=>!r.has(x)))&&!S)){r.clear();for(let x of T)r.add(x);t.onSettledVisibleChange?.(h.map(x=>x.item));}}function B(h,S=false){!S&&h.length===m.length&&h.every((T,P)=>T.key===m[P]?.key&&T.item===m[P]?.item)||(m=h,t.onSettledPreloadChange?.(h.map(T=>T.item)));}function se(){if(q||R)return;let h=W;W=false;let S=I,T=u,P=()=>!q&&!R&&S===I&&u===T,x=Ie();ne(false,x);let te=x.getRootRect(),Q=te===null?0:(te.top+te.bottom)/2,re=[...f.entries()].filter(([,ee])=>s(ee)).map(([ee,de])=>({target:de,rect:x.getElementRect(ee)})).sort((ee,de)=>Math.abs((ee.rect.top+ee.rect.bottom)/2-Q)-Math.abs((de.rect.top+de.rect.bottom)/2-Q)).slice(0,E).map(({target:ee})=>ee),Ae;if(t.onSettledPreloadChange!==void 0&&te!==null){let ee=Pt(te,k);Ae=[...f.entries()].filter(([,ye])=>ye.revealIntersecting).map(([ye,oe])=>({target:oe,rect:x.getElementRect(ye)})).filter(({target:ye,rect:oe})=>s(ye)||k>0&&mt(oe,ee)>0).sort((ye,oe)=>Number(s(oe.target))-Number(s(ye.target))||Math.abs((ye.rect.top+ye.rect.bottom)/2-Q)-Math.abs((oe.rect.top+oe.rect.bottom)/2-Q)).slice(0,j).map(({target:ye})=>ye);}if(Re(x),!!P()&&(Te(re.filter(ie),h),!!P())){Ae!==void 0&&B(Ae.filter(ie),h);for(let ee of re){if(!P())return;!ie(ee)||_.has(ee.key)||(_.add(ee.key),t.onActivated?.(ee.item));}}}function H(){q||R||(pe(),N=setTimeout(()=>{N=void 0,se();},v));}function K(){q||(W=true,le(true),B([]),ne(),Re(),Te([]),pe(),J(),X=setTimeout(()=>{X=void 0,le(false),H();},a));}function le(h){R!==h&&(R=h,t.onScrollingChange?.(h));}function Pe(){u?.removeEventListener("scroll",K),M?.disconnect(),L?.disconnect(),M=null,L=null,u=null;}function fe(h=true){if(q)return;let S=t.getRoot();if(!(S===u&&u!==null)){if(B([]),Pe(),u=S,u===null){h&&!Z&&(Z=true,Promise.resolve().then(()=>{Z=false,q||(fe(false),H());}));return}if(u.addEventListener("scroll",K,{passive:true}),typeof IntersectionObserver<"u"){M=new IntersectionObserver(T=>{for(let P of T){let x=f.get(P.target);x!==void 0&&(x.intersecting=P.isIntersecting,x.ratio=P.intersectionRatio,C===0&&(x.revealIntersecting=P.isIntersecting&&P.intersectionRatio>=c));}Re(),H();},{root:u,threshold:[0,c,1]}),C>0&&(L=new IntersectionObserver(T=>{for(let P of T){let x=f.get(P.target);x!==void 0&&(x.revealIntersecting=P.isIntersecting);}Re(),H();},{root:u,rootMargin:`${C}px 0px`,threshold:0}));for(let T of f.keys())M.observe(T);for(let T of f.keys())L?.observe(T);}$(f);}}function De(h){B(m.filter(S=>S.key!==h)),w.delete(h),_.delete(h),r.delete(h);}return {register(h,S){if(q)return;let T=t.getKey(h),P=w.has(T),x=_.has(T),te=S===null?void 0:f.get(S);te!==void 0&&te.key!==T&&(V.delete(te.key),f.delete(S),De(te.key));let Q=V.get(T);if(Q!==void 0&&Q!==S&&(M?.unobserve(Q),L?.unobserve(Q),f.delete(Q),V.delete(T)),S===null){Q!==void 0&&(M?.unobserve(Q),L?.unobserve(Q),f.delete(Q),V.delete(T)),De(T);return}let re=f.get(S);if(re?.key===T&&re.item===h){let de=u;fe(),u!==de&&H();return}let Ae={item:h,key:T,intersecting:re?.key===T?re.intersecting:false,ratio:re?.key===T?re.ratio:0,revealIntersecting:re?.key===T?re.revealIntersecting:false};f.set(S,Ae),V.set(T,S);let ee=u;fe(),u===ee&&(M?.observe(S),L?.observe(S),$([[S,Ae]])),P&&t.onRevealed?.(h),x&&ie(Ae)&&t.onActivated?.(h),H();},isRevealed:h=>w.has(t.getKey(h)),isActivated:h=>_.has(t.getKey(h)),isSettledVisible:h=>r.has(t.getKey(h)),isScrolling:()=>R,notifyScroll:K,refresh(){fe(),Y(),z(f),H();},reset(){Y(),J(),pe(),le(false),W=false,Te([]),B([]),Pe(),f.clear(),V.clear(),w.clear(),_.clear();},dispose(){q||(Y(),J(),pe(),le(false),W=false,Te([]),B([]),Pe(),f.clear(),V.clear(),w.clear(),_.clear(),q=true);}}}function Yn(t){let a=new Map,v=new Map,c=shallowReactive(new Map),g=new Map,k=new Map,C=[],j=false,E=r=>{let m=a.get(r.channel);return m===void 0?r.channel:`${r.channel}\0${m.getKey(r.item)}`},f=At({getRoot:t.getRoot,batchRegistration:t.batchRegistration,getKey:r=>r.key,revealMarginPx:t.revealMarginPx,preloadMarginPx:t.preloadMarginPx,minimumIntersectionRatio:t.minimumIntersectionRatio,scrollIdleMs:t.scrollIdleMs,visibilityDwellMs:t.visibilityDwellMs,onScrollingChange:r=>{for(let m of a.values())m.onScrollingChange?.(r);},onRevealed:r=>r.targets.forEach(m=>a.get(m.channel)?.onRevealed?.(m.item)),onActivated:r=>r.targets.forEach(m=>a.get(m.channel)?.onActivated?.(m.item)),onSettledPreloadChange:r=>{let m=r.flatMap(u=>u.targets);for(let[u,M]of a){let L=m.filter(R=>R.channel===u).map(R=>R.item);M.onSettledPreloadChange?.(L.slice(0,Math.max(0,M.maxPreloadTargets??Number.POSITIVE_INFINITY)));}},onSettledVisibleChange:r=>{V(r.flatMap(m=>m.targets));}});function V(r){C=r;for(let[m,u]of a){let M=r.filter(R=>R.channel===m).map(R=>R.item),L=u.maxSettledVisible===void 0?M:M.slice(0,u.maxSettledVisible);u.onSettledVisibleChange?.(L);}}function w(r){let m=g.get(r),u=[];for(let R of a.keys()){let W=m?.get(R);W!==void 0&&u.push(W);}let M=c.get(r);if(M!==void 0&&u.length===M.targets.length&&u.every((R,W)=>R===M.targets[W]))return;if(u.length===0)M!==void 0&&(c.delete(r),k.get(M.key)===r&&(k.delete(M.key),f.register(M,null)));else {let R={key:JSON.stringify(u.map(E)),targets:u};M!==void 0&&M.key!==R.key&&k.get(M.key)===r&&k.delete(M.key),c.set(r,R),k.set(R.key,r),f.register(R,r);}let L=C.flatMap(R=>{let W=v.get(R.channel)?.get(a.get(R.channel).getKey(R.item));return W===void 0?[]:[W.target]});(L.length!==C.length||L.some((R,W)=>R!==C[W]))&&V(L);}function _(r){return m=>{if(j)throw new Error("Thread visibility target group \u5DF2\u91CA\u653E");if(a.has(r))throw new Error(`Thread visibility channel \u5DF2\u5B58\u5728: ${r}`);a.set(r,m);let u=shallowReactive(new Map);v.set(r,u);let M=new Map,L=false,R=I=>({channel:r,item:I});function W(I){M.delete(I);let A=g.get(I);A?.delete(r),A?.size===0&&g.delete(I);}function q(){let I=[...M.keys()];u.clear();for(let A of I)W(A);for(let A of I)w(A);m.onScrollingChange?.(false),m.onSettledVisibleChange?.([]),m.onSettledPreloadChange?.([]);}function Z(I,A){let Y=u.get(m.getKey(I)),z=Y===void 0?void 0:c.get(Y.element);return z!==void 0&&A(z)}return {register(I,A){if(L||j)return;let Y=m.getKey(I),z=u.get(Y);if(A===null){z!==void 0&&(u.delete(Y),W(z.element),w(z.element));return}if(z?.target.item===I&&z.element===A){let J=c.get(A);J!==void 0&&f.register(J,A);return}let $=z?.target.item===I?z.target:R(I),X=M.get(A);X!==void 0&&X!==Y&&u.delete(X),z!==void 0&&z.element!==A&&W(z.element),u.set(Y,{target:$,element:A}),M.set(A,Y);let N=g.get(A);N===void 0&&(N=new Map,g.set(A,N)),N.set(r,$),w(A),z!==void 0&&z.element!==A&&w(z.element);},isRevealed:I=>Z(I,f.isRevealed),isActivated:I=>Z(I,f.isActivated),isSettledVisible:I=>Z(I,f.isSettledVisible),isScrolling:f.isScrolling,notifyScroll:f.notifyScroll,refresh:f.refresh,reset:q,dispose(){L||(q(),L=true,a.delete(r),v.delete(r));}}}}return {createFactory:_,refresh:f.refresh,dispose(){if(!j){for(let r of c.values())f.register(r,null);c.clear(),g.clear(),k.clear();for(let r of a.values())r.onSettledPreloadChange?.([]);v.clear(),a.clear(),f.dispose(),j=true;}}}}function Jn(t){let a=ut();if(a===void 0)throw new Error("useImThreadLayoutMeasurement requires an ImThreadViewport");let v=a.registerLayoutMeasurement(t);return onBeforeUnmount(v.dispose),v}export{Tt as ImThreadBodySwitch,wt as ImThreadItems,Kn as ImThreadSurface,Mt as ImThreadViewport,Cn as createImThreadSurfaceContext,_n as createMessageRendererRegistry,Yn as createThreadVisibilityTargetGroup,At as createThreadVisibilityTargets,Nn as provideImThreadSurfaceContext,mn as useImText,Jn as useImThreadLayoutMeasurement,Rt as useImThreadSurfaceContext,hn as useOptionalImThreadReadActions};
1
+ import {h,C,p,i,B,o,j,m,z,q,g}from'./chunk-HJYSLPY4.js';import {f,h as h$2,i as i$1,g as g$1}from'./chunk-2R4KVYRU.js';import {a}from'./chunk-Q2DEFN53.js';import'./chunk-JCUE2QS7.js';import'./chunk-KORCFTGX.js';import'./chunk-Q6TFPZMF.js';import'./chunk-WOT6VMZA.js';import {defineComponent,h as h$1,onUpdated,onUnmounted,ref,provide,watch,nextTick,onMounted,onBeforeUnmount,computed,inject,isVNode,cloneVNode,Fragment,reactive,shallowReactive}from'vue';function hn(t){let a=0,h=0;for(let f of t)f.kind==="video"?h+=1:a+=1;return {imageCount:a,videoCount:h}}function pn(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:hn(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 Wt=Symbol("ImThreadReadActions");function Yt(t){provide(Wt,t);}function bn(){return inject(Wt,void 0)}var bt=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:h$2}){return Yt(t.readActions),()=>{let f=h(t.message),u=t.rendererRegistry.resolve(f);return u!==void 0?h$1(u,{...a,message:t.message,presentation:t.presentation}):h$2["unsupported-body"]!==void 0?h$2["unsupported-body"]({kind:f,message:t.message}):h$1("span",{"data-im-thread-unsupported-body":f,"aria-hidden":"true"})}}});var wt=Symbol("ImThreadViewportRegistration");function mt(){return inject(wt,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:a}){let h=mt(),f=new Map,u=new Map;onUpdated(()=>{let r=new Set,g=new Set;for(let c of t.items)c.kind==="message"||c.kind==="system"?r.add(c.key):c.kind==="date-separator"&&g.add(c.key);for(let c of f.keys())r.has(c)||f.delete(c);for(let c of u.keys())g.has(c)||u.delete(c);}),onUnmounted(()=>{f.clear(),u.clear();});function k(r,g){let c=Array.isArray(g)?g:[g];return c.length===1&&isVNode(c[0])?cloneVNode(c[0],{key:r}):h$1(Fragment,{key:r},c)}function N(r,g){let c=f.get(r);if(c?.messageId===g)return c.setElement;let w=C=>{h?.registerMessageNode(g,C instanceof HTMLElement?C:null);};return f.set(r,{messageId:g,setElement:w}),w}function U(r,g){let c=u.get(r);if(c!==void 0)return c.label=g,c.setElement;let w={label:g,setElement:C=>{h?.registerDateNode(r,w.label,C instanceof HTMLElement?C:null);}};return u.set(r,w),w.setElement}function E(r){return a.encryption?.({item:r})??h$1("div",{"data-im-thread-encryption":r.key})}function m(r){let g=U(r.key,r.label);return a["date-separator"]?.({item:r,setElement:g})??h$1("div",{ref:g,"data-im-thread-date-separator":r.key},r.label)}function V(r){h?.registerEntryUnreadNode(r instanceof HTMLElement?r:null);}function b(r){return a["entry-unread"]?.({item:r,setElement:V})??h$1("div",{ref:V,"data-im-thread-entry-unread":r.key,...r.count===void 0?{}:{"data-count":String(r.count)}})}function K(r){let g=N(r.key,r.message.id);return a.item!==void 0?a.item({item:r,setElement:g}):a.message!==void 0?a.message({item:r,setElement:g}):r.message.deletedForEveryone!==void 0?a["deleted-message"]?.({item:r,setElement:g})??h$1("article",{ref:g,"data-im-thread-message-id":r.message.id,"data-im-thread-message-terminal":"deleted-for-everyone"},[h$1("span",{"data-im-thread-anchor-point":""})]):r.message.recalled!==void 0?a["recalled-message"]?.({item:r,setElement:g})??h$1("article",{ref:g,"data-im-thread-message-id":r.message.id,"data-im-thread-message-terminal":"recalled"},[h$1("span",{"data-im-thread-anchor-point":""})]):r.kind==="system"&&a.system!==void 0?a.system({item:r,setElement:g}):h$1("article",{ref:g,"data-im-thread-message-id":r.message.id,"data-first-of-run":r.kind==="message"?String(r.firstOfRun):void 0},[h$1("span",{"data-im-thread-anchor-point":""}),h$1(bt,{message:r.message,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{"unsupported-body":a["unsupported-body"]===void 0?void 0:c=>a["unsupported-body"]?.(c)})])}return ()=>h$1("div",{"data-im-thread-items":""},t.items.map(r=>{switch(r.kind){case "encryption":return a.item!==void 0?k(r.key,a.item({item:r})):k(r.key,E(r));case "date-separator":return a.item!==void 0?k(r.key,a.item({item:r,setElement:U(r.key,r.label)})):k(r.key,m(r));case "entry-unread":return a.item!==void 0?k(r.key,a.item({item:r,setElement:V})):k(r.key,b(r));case "system":case "message":return k(r.key,K(r))}return r}))}});function at(){let t,a=0,h=0,f;function u(){t!==void 0&&clearTimeout(t),t=void 0,f=void 0;}function k(){t=void 0;let U=a-performance.now();if(U>0){h=a,t=setTimeout(k,U);return}let E=f;f=void 0,E?.();}function N(U,E){a=performance.now()+E,f=U,!(t!==void 0&&a>=h)&&(t!==void 0&&clearTimeout(t),h=a,t=setTimeout(k,E));}return {schedule:N,cancel:u}}function Jt(t){let a=new Set,h=new Map,f=new Set;function u(){let E=[...f];f.clear();let m=[],V=[];for(let b of E)if(b.active)try{m.push({job:b,commit:b.read()});}catch(K){V.push(K);}for(let{job:b,commit:K}of m)if(b.active)try{K?.();}catch(r){V.push(r);}V.length>0&&queueMicrotask(()=>{throw new AggregateError(V,"Thread layout measurement failed")});}function k(E){E.active&&(f.add(E),t.requestFrame(u));}function N(E,m){let V=h.get(m);V?.delete(E),V?.size===0&&(h.delete(m),t.unobserve(m));}function U(E){let m={read:E,elements:new Set,active:true};return a.add(m),{observe(V){if(!m.active)return;let b=new Set(V),K=b.size!==m.elements.size||[...b].some(r=>!m.elements.has(r));for(let r of m.elements)b.has(r)||N(m,r);for(let r of b){if(m.elements.has(r))continue;let g=h.get(r);g===void 0&&(g=new Set,h.set(r,g),t.observe(r)),g.add(m);}m.elements=b,K&&b.size>0&&k(m);},invalidate:()=>k(m),dispose(){m.active=false,f.delete(m),a.delete(m);for(let V of m.elements)N(m,V);m.elements.clear();}}}return {register:U,hasTarget:E=>h.has(E),observeTargets:()=>h.forEach((E,m)=>t.observe(m)),resized:E=>E.forEach(m=>h.get(m)?.forEach(k)),invalidateAll:()=>a.forEach(k),dispose(){for(let E of a)E.active=false;a.clear(),f.clear(),h.clear();}}}var Zt=120,Cn=500,Ye=.5,en=8;function ht(t){let a=t.ownerDocument.defaultView?.devicePixelRatio;return 1+1/(a!==void 0&&Number.isFinite(a)&&a>0?a:1)}var Mt=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},pendingSendMessageIds:{type:Array,default:()=>[]},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:h,slots:f}){let u=ref(null),k=ref(null),N=new Map,U,E=new Map,m$1=new Set,V=new Map,b=0,K=[],r,g$1,c,w,C$1=Jt({requestFrame:ae,observe:e=>c?.observe(e),unobserve:e=>{e!==u.value&&e!==k.value&&!E.has(e)&&c?.unobserve(e);}}),M,$=false,q$1,Z=new Set,le=false,R,A=0,J="",W=1,X=false,Q=false,D=true,G=false,ye=false,Ee=true,ne=false,s=0,de=-1,Oe=-1,Me=at(),B$1,ue,x,j$1,ce=ref(true),ke=ref(0),fe=C(e=>{ke.value=e,a("new-message-count",e);});function Fe(e){let o=Number.isFinite(t.followThreshold)?Math.max(0,t.followThreshold):0;return e.scrollHeight-e.clientHeight-e.scrollTop<=o}function p$1(e=t.messageIds){return e.flatMap(o=>{let i=N.get(o);if(i===void 0)return [];let v=i.getBoundingClientRect(),O=i.querySelector("[data-im-thread-anchor-point]");return [{id:o,top:v.top,bottom:v.bottom,anchorTop:O?.getBoundingClientRect().top??v.top}]})}function S(e="",o=1){let i=Math.min(1,Math.max(0,o));J!==""&&J!==e&&V.get(J)?.element.style.removeProperty("opacity"),J=e,W=i,e!==""&&V.get(e)?.element.style.setProperty("opacity",String(i));}function T(){S();}function P(){let e=u.value;if(le||e===null||!t.activeDateEnabled)return;let o=[...V.entries()].filter(([,_])=>e.contains(_.element)).map(([_,H])=>{let se=H.element.getBoundingClientRect();return {key:_,label:H.label,top:se.top,height:se.height}}).sort((_,H)=>_.top-H.top),i=e.getBoundingClientRect(),v=o.find(_=>_.height>0)?.height??28,O=g({markers:o,viewportTop:i.top,overlayTop:Number.isFinite(t.activeDateOffset)?Math.max(0,t.activeDateOffset):0,overlayHeight:v});if(O===null){T(),a("active-date-change",null);return}S(O.inlineDateKey,O.inlineOpacity),a("active-date-change",O);}function L(e){g$1={scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,width:e.clientWidth,height:e.clientHeight};}function ee(e){let o=g$1;if(o===void 0)return false;let i=Math.max(0,e.scrollHeight-e.clientHeight);return i<o.scrollHeight-o.height&&o.scrollTop>i&&Math.abs(e.scrollTop-i)<=ht(e)}function z$1(e){return e.scrollTop<0||e.scrollTop>Math.max(0,e.scrollHeight-e.clientHeight)+ht(e)}function re(e){return ee(e)||R!==void 0&&(R.behavior==="smooth"||Math.abs(e.scrollTop-R.targetTop)<=ht(e))?0:e.scrollTop-b}function Se(e,o){o!==0&&(b=e.scrollTop-o,R=void 0,tt(true));}function oe(e,o){let i=re(e);if(x!==void 0)return x.expectedOffset-=i,Ce(),Se(e,i),G||nt(),false;let v=g$1;if(v===void 0)return false;let O=r,_=O===void 0?void 0:p$1([O.id])[0],H=e.scrollTop-v.scrollTop,se=ee(e)?0:H,te=O===void 0||_===void 0?0:(_.anchorTop??_.top)-o.top-O.offset+H;return v.scrollHeight!==e.scrollHeight||v.width!==e.clientWidth||v.height!==e.clientHeight||Math.abs(te)>Ye?(g$1=void 0,!X&&!Q&&!t.loadingOlder&&!t.loadingNewer&&!t.hasNewer&&t.resizeFollowEnabled&&!z$1(e)&&ce.value&&Math.abs(se)<=Ye?(ie(),true):(O!==void 0&&We({...O,offset:O.offset-se}),Se(e,i),false)):false}function Te(){let e=u.value;if(le||e===null)return;let o$1=e.getBoundingClientRect();if(oe(e,o$1))return;let i=M!==void 0&&$?t.messageIds.filter(H=>m$1.has(H)):t.messageIds,v=p$1(i);if(M!==void 0&&$&&v.length===0){ce.value=Fe(e);return}let O=v.filter(H=>B({viewportTop:o$1.top,viewportBottom:o$1.bottom,messageTop:H.top,messageBottom:H.bottom,margin:t.visibleMargin})).map(H=>H.id),_=O.length!==K.length||O.some((H,se)=>K[se]!==H);K=Object.freeze(O),r=o(v,{top:o$1.top,bottom:o$1.bottom}),L(e),fe.acknowledgeVisible(O),ce.value=Fe(e),_&&a("visible-range",K),a("settled",{visibleMessageIds:K,...K.length===0?{}:{newestVisibleMessageId:K[K.length-1]},isAtBottom:ce.value,newMessageCount:ke.value});}function ae(e){if(Z.add(e),q$1!==void 0)return;let o=()=>{q$1=void 0;let i=[...Z];Z.clear(),i.forEach(v=>v());};typeof globalThis.requestAnimationFrame=="function"?q$1=globalThis.requestAnimationFrame(o):q$1=globalThis.setTimeout(o,0);}function Re(){q$1!==void 0&&(typeof q$1=="number"&&typeof globalThis.cancelAnimationFrame=="function"?globalThis.cancelAnimationFrame(q$1):globalThis.clearTimeout(q$1),q$1=void 0,Z.clear());}function xe(){ae(Te);}function st(){let e=u.value;if(e===null)return;let o$1=e.getBoundingClientRect(),i=o(p$1(),{top:o$1.top,bottom:o$1.bottom});i!==void 0&&(r=i,L(e));}function lt(){return D&&x===void 0&&!Q&&!t.loadingOlder}function dt(){st(),D=false,de=s,Q=true,ce.value=false,a("reach-start"),ae(()=>{t.loadingOlder||(Q=false);});}function et(e){return t.hasNewer&&!X&&!t.loadingOlder&&!t.loadingNewer&&Fe(e)}function he(){st(),X=true,ce.value=false,Oe=s,a("reach-end"),ae(()=>{t.loadingNewer||(X=false);});}function $e(){let e=u.value;e===null||s===Oe||!et(e)||he();}function tt(e=false){let o=u.value;if(le||o===null)return;let i=o.scrollTop,v=Math.max(0,o.scrollHeight-o.clientHeight),O=Math.min(v,Math.max(0,b)),_=Math.min(v,Math.max(0,i)),H=ee(o),se=R,te=false;if(se!==void 0){let Xe=Math.abs(i-se.targetTop)<=ht(o);te=se.behavior==="smooth"||Xe,(se.behavior!=="smooth"||Xe)&&(R=void 0);}!te&&!H&&!G&&Ee&&x===void 0&&i!==b&&(G=true,ye=true,s+=1);let pe=G&&!te&&!H&&i!==b;pe&&(A+=1,a("user-scroll"),ae(P)),G&&!ne&&je(),!D&&ye&&s!==de&&i<b&&i>rt()&&we(),x!==void 0&&!te&&(G?!H&&!e&&(x.expectedOffset-=i-b):(Ce(),nt())),lt()&&pe&&m({previousScrollTop:O,currentScrollTop:_,topThreshold:t.olderPrefetchThreshold})&&dt(),pe&&et(o)&&z({previousScrollTop:O,currentScrollTop:_,isAtBottom:Fe(o),isHistoryWindow:t.hasNewer,isPageSettling:te})&&he(),b=i,xe();}function ut(){tt();}function ze(e,o="auto"){R={targetTop:e,behavior:o};}function Je(e){let o=x,i=k.value;if(!(o===void 0||i===null)){if(o.visualOffset=Math.abs(e)<=Ye?0:e,o.visualOffset===0){i.style.removeProperty("transform"),i.style.removeProperty("will-change");return}i.style.setProperty("transform",`translate3d(0, ${o.visualOffset}px, 0)`),i.style.setProperty("will-change","transform");}}function _e(){j$1!==void 0&&(clearTimeout(j$1),j$1=void 0),x!==void 0&&x.visualOffset!==0&&(r=void 0,g$1=void 0);let e=k.value;e?.style.removeProperty("transform"),e?.style.removeProperty("will-change"),x=void 0,R=void 0;}function qe(){let e=u.value,o=x;if(e===null||o===void 0)return;let i=N.get(o.anchor.id);return i===void 0?void 0:(i.querySelector("[data-im-thread-anchor-point]")??i).getBoundingClientRect().top-e.getBoundingClientRect().top}function Ce(){let e=x,o=qe();if(e===void 0||o===void 0)return;let i=e.expectedOffset-o;if(Math.abs(i)<=Ye)return;let v=u.value;v!==null&&ee(v)&&(b=v.scrollTop),Je(e.visualOffset+i),e.committed=false,e.attempts=0;}function ct(){j$1!==void 0&&clearTimeout(j$1),j$1=setTimeout(()=>{j$1=void 0,!(G||x?.committed!==true)&&_e();},Cn);}function be(e,o=false){let i=u.value,v=x;if(le||i===null||v===void 0||z$1(i)||G&&!o)return;if(o){let Qe=re(i);v.expectedOffset-=Qe,Ce(),Se(i,Qe);}let O=e?.visualOffset??v.visualOffset;if(Math.abs(O)<=Ye){v.committed=true,ct();return}let _=Math.max(0,i.scrollHeight-i.clientHeight),H=i.scrollTop,se=Math.min(_,Math.max(0,H-O));ze(se),i.scrollTop=se;let te=i.scrollTop,pe=O+te-H,Xe=(H-O<0||H-O>_)&&Math.abs(te-se)<=Ye;if(b=te,Math.abs(pe)>Ye&&!Xe){Je(pe),ze(te),v.committed=false,v.attempts+=1,v.attempts<en&&!G&&nt();return}v.visualOffset!==0&&Je(0),b=te,v.expectedOffset=e===void 0?qe()??v.expectedOffset:e.currentOffset-(te-H),r={...v.anchor,offset:v.expectedOffset},L(i),v.committed=true,v.attempts=0,ct();}function nt(){x===void 0||x.attempts>=en||(j$1!==void 0&&clearTimeout(j$1),j$1=setTimeout(()=>{j$1=void 0,be();},Zt));}function Ve(e){if(e===void 0)return;x===void 0&&(x={anchor:e,expectedOffset:e.offset,visualOffset:0,committed:false,attempts:0});let o=u.value;if(!G&&o!==null&&!z$1(o)&&x.visualOffset===0){let i=qe();if(i!==void 0){be({visualOffset:x.expectedOffset-i,currentOffset:i});return}}Ce(),!G&&be();}function We(e){let o=u.value;if(o===null||e===void 0)return;if(z$1(o)){Ve(e);return}let i=o.getBoundingClientRect(),v=q(e,p$1([e.id]),{top:i.top,bottom:i.bottom});if(v!==void 0){let O=Math.max(0,o.scrollHeight-o.clientHeight),_=Math.min(O,Math.max(0,o.scrollTop+v));ze(_),o.scrollTop=_,b=o.scrollTop,g$1=void 0;}}function rt(){return Number.isFinite(t.olderPrefetchThreshold)?Math.max(0,t.olderPrefetchThreshold):0}function Be(e=false){A+=1,R?.behavior==="smooth"&&(R=void 0),ye=false,(!G||e)&&(G=true,s+=1),ne&&Me.cancel();}function we(){let e=u.value;if(!(e===null||s===de)){if(Q||t.loadingOlder){de=s,D=false;return}if(x!==void 0){if(be(void 0,true),!x.committed)return;_e();}D=true,lt()&&e.scrollTop<=rt()&&dt();}}function Ue(){A+=1,r=void 0,g$1=void 0,Me.cancel(),_e(),G=false,ye=false,ne=false,B$1=void 0,ue=void 0,s+=1,de=-1,Oe=-1,D=true,Q=false,X=false,R=void 0;}function Ne(){ne||u.value!==null&&z$1(u.value)||(Me.cancel(),G=false,ye=false,x!==void 0&&(x.attempts=0),be());}function je(){ne||Me.schedule(Ne,Zt);}function ot(){R=void 0,Ne();}function n(e){Ee=false;let o=!ne;ne=true,Be(o),B$1=e.touches?.[0]?.clientY;}function d(e){let o=e.touches?.[0]?.clientY;o!==void 0&&(B$1!==void 0&&o!==B$1&&(A+=1),B$1!==void 0&&o>B$1?we():B$1!==void 0&&o<B$1&&$e(),B$1=o);}function l(){ne=false,B$1=void 0,je();}function y(e){Ee=true,Be(),e.deltaY<0?we():e.deltaY>0&&$e(),je();}function I(e){e.pointerType!=="touch"&&(Ee=true,Be(),ue=e.clientY,je());}function F(e){e.pointerType==="touch"||!G||ue===void 0||(e.clientY!==ue&&(A+=1),e.clientY<ue?we():e.clientY>ue&&$e(),ue=e.clientY,je());}function Y(e){e.pointerType!=="touch"&&(ue=void 0,je());}function me(e){["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(e.key)&&(Ee=true,Be(),e.key==="ArrowUp"||e.key==="PageUp"||e.key==="Home"||e.key===" "&&e.shiftKey?we():$e(),je());}function ie(e="auto"){let o=u.value;if(o===null)return;A+=1,g$1=void 0,_e();let i=Math.max(0,o.scrollHeight-o.clientHeight);ze(i,e),o.scrollTo?.({top:i,behavior:e}),o.scrollTop!==i&&(o.scrollTop=i),b=o.scrollTop,fe.clear(),$=false,Te();}function Ie(){let e=u.value;return e!==null&&e.clientWidth>0&&e.clientHeight>0}function He(){let e=u.value;return Ie()&&e!==null&&e.scrollHeight>e.clientHeight+1}function De(e,o={}){return ft(N.get(e),o)}function ft(e,o){let i=u.value;if(i===null||e===void 0||!i.contains(e)||i.clientHeight<=0)return false;A+=1,_e();let v=i.getBoundingClientRect(),O=e.getBoundingClientRect(),_=o.block??"center",H;_==="start"?H=i.scrollTop+O.top-v.top:_==="end"?H=i.scrollTop+O.bottom-v.bottom:_==="nearest"?O.top>=v.top&&O.bottom<=v.bottom?H=i.scrollTop:O.top<v.top?H=i.scrollTop+O.top-v.top:H=i.scrollTop+O.bottom-v.bottom:H=j({currentScrollTop:i.scrollTop,scrollHeight:i.scrollHeight,targetHeight:O.height,targetTop:O.top,viewportHeight:i.clientHeight,viewportTop:v.top});let se=Math.max(0,i.scrollHeight-i.clientHeight),te=Math.min(se,Math.max(0,H));g$1=void 0;let pe=o.behavior??"auto";return ze(te,pe),i.scrollTo?.({top:te,behavior:pe}),i.scrollTop!==te&&(i.scrollTop=te),b=i.scrollTop,$=false,Te(),true}function At(e){let o=u.value;if(o===null||e===void 0||!o.contains(e)||o.clientHeight<=0)return null;let i=e.getBoundingClientRect(),v=o.scrollTop+i.top-o.getBoundingClientRect().top+i.height/2,O=o.clientHeight/2;return {older:v<O-1,newer:o.scrollHeight-v<O-1}}function on(){return At(U)}function an(e){return At(N.get(e))}function sn(){fe.clear();}function ln(){X=true,ce.value=false;}function dn(){X=false,xe();}function un(e,o){let i=N.get(e);if(i!==o){if(i!==void 0&&(M?.unobserve(i),i.style.removeProperty("--im-thread-placeholder-play-state"),C$1.hasTarget(i)||c?.unobserve?.(i),E.delete(i),m$1.delete(e)),o===null){N.delete(e),m$1.delete(e);return}N.set(e,o),E.set(o,e),typeof globalThis.IntersectionObserver=="function"&&o.style.setProperty("--im-thread-placeholder-play-state","paused"),M?.observe(o),c?.observe(o),xe();}}function cn(e,o,i){let v=V.get(e);if(i===null){V.delete(e);return}V.set(e,{element:i,label:o}),J===e&&i.style.setProperty("opacity",String(W)),v?.element!==i&&(i.dataset.imThreadDateSeparator=e);}return provide(wt,{registerLayoutMeasurement:C$1.register,registerMessageNode:un,registerDateNode:cn,registerEntryUnreadNode:e=>{U=e??void 0;}}),watch(()=>t.contentKey,(e,o)=>{if(e===o)return;Ue();let i=u.value;i!==null&&(b=i.scrollTop);},{flush:"sync"}),watch(()=>t.messageIds,async(e,o)=>{if(e.length===o.length&&e.every((ge,Ge)=>ge===o[Ge]))return;let i=u.value;if(i===null)return;let v=new Set(o);o.length>0&&e.length>0&&!e.some(ge=>v.has(ge))&&Ue();let _=t.contentKey,H=ce.value,se=o[o.length-1],te=se===void 0?-1:e.indexOf(se),pe=te<0?[]:e.slice(te+1).filter(ge=>!v.has(ge)),Xe=pe.some(ge=>t.pendingSendMessageIds.includes(ge)),Qe=X||t.loadingNewer||Q||t.loadingOlder,fn=e.length===o.length&&e.every(ge=>v.has(ge))&&e.some((ge,Ge)=>ge!==o[Ge]),kt=o[0],xt=kt!==void 0&&e.indexOf(kt)>0,Ze;if(r!==void 0&&(xt||pe.length>0&&Qe)){G&&re(i)!==0&&tt();let ge=i.getBoundingClientRect(),Ge=e.includes(r.id)?p$1([r.id]):[],yt=Ge[0],gn=yt!==void 0&&yt.bottom>ge.top&&yt.top<ge.bottom?Ge:p$1(e.filter(vn=>v.has(vn)));Ze=p(r,gn,{top:ge.top,bottom:ge.bottom}),Ze!==void 0&&x!==void 0&&!e.includes(x.anchor.id)&&(x.anchor=Ze,x.expectedOffset=Ze.offset);}let mn=A;if(await nextTick(),!(le||t.contentKey!==_||A!==mn)){if(Xe&&t.followNewMessages){ie();return}if(fn&&H&&t.followNewMessages&&t.resizeFollowEnabled&&!t.hasNewer&&!Qe){ie();return}if(xt&&(Q=false,Ve(Ze)),pe.length>0){if(Qe){X=false,Ve(Ze),ce.value=false,xe();return}(H||pe.some(Ge=>t.shouldFollowAppendedMessage?.(Ge)===true))&&t.followNewMessages?ie():fe.add(pe);}xe();}},{flush:"pre"}),watch(()=>t.loadingNewer,(e,o)=>{e||!o||!X||ae(()=>{t.loadingNewer||(X=false);});},{flush:"pre"}),watch(()=>t.loadingOlder,(e,o)=>{if(e){Q=true;return}!o||!Q||ae(()=>{t.loadingOlder||(Q=false);});},{flush:"pre"}),onMounted(()=>{let e=u.value;if(e!==null){if(b=e.scrollTop,e.addEventListener("scroll",ut,{passive:true}),e.addEventListener("scrollend",ot,{passive:true}),e.addEventListener("touchstart",n,{passive:true}),e.addEventListener("touchmove",d,{passive:true}),e.addEventListener("touchend",l,{passive:true}),e.addEventListener("touchcancel",l,{passive:true}),e.addEventListener("wheel",y,{passive:true}),e.addEventListener("pointerdown",I,{passive:true}),e.addEventListener("pointermove",F,{passive:true}),e.addEventListener("pointerup",Y,{passive:true}),e.addEventListener("pointercancel",Y,{passive:true}),e.addEventListener("keydown",me),typeof globalThis.ResizeObserver=="function"){c=new globalThis.ResizeObserver(o=>{if(le||u.value===null)return;C$1.resized(o.map(v=>v.target)),o.some(({target:v})=>v===e||v===k.value||E.has(v))&&Te();}),c.observe(e),k.value!==null&&c.observe(k.value);for(let o of N.values())c.observe(o);C$1.observeTargets();}if(w=e.ownerDocument.fonts,w?.addEventListener("loadingdone",C$1.invalidateAll),typeof globalThis.IntersectionObserver=="function"){M=new globalThis.IntersectionObserver(o=>{for(let i of o){let v=E.get(i.target);if(v===void 0)continue;let O=i.target,_=i.isIntersecting?"running":"paused";O.style.getPropertyValue("--im-thread-placeholder-play-state")!==_&&O.style.setProperty("--im-thread-placeholder-play-state",_),i.isIntersecting?m$1.add(v):m$1.delete(v);}$=true,xe();},{root:e,rootMargin:`${Number.isFinite(t.visibleMargin)?Math.max(0,t.visibleMargin):0}px 0px`});for(let o of N.values())M.observe(o);}xe();}}),onBeforeUnmount(()=>{le=true;let e=u.value;e!==null&&e.removeEventListener("scroll",ut),e!==null&&(e.removeEventListener("scrollend",ot),e.removeEventListener("touchstart",n),e.removeEventListener("touchmove",d),e.removeEventListener("touchend",l),e.removeEventListener("touchcancel",l),e.removeEventListener("wheel",y),e.removeEventListener("pointerdown",I),e.removeEventListener("pointermove",F),e.removeEventListener("pointerup",Y),e.removeEventListener("pointercancel",Y),e.removeEventListener("keydown",me)),Me.cancel(),_e(),Re(),w?.removeEventListener("loadingdone",C$1.invalidateAll),C$1.dispose(),c?.disconnect(),M?.disconnect(),T(),U=void 0;for(let o of N.values())o.style.removeProperty("--im-thread-placeholder-play-state");N.clear(),E.clear(),m$1.clear(),V.clear(),fe.clear();}),h({getViewportElement:()=>u.value,clearNewMessageBadge:sn,clearActiveDate:T,isAtBottom:computed(()=>ce.value),isMeasurable:Ie,isScrollable:He,getMessageCenteringNeeds:an,newMessageCount:computed(()=>ke.value),prepareHistoryPageAppend:ln,cancelHistoryPageAppend:dn,trackRemoteMessageIds:(e,o)=>fe.trackRemote(e,o),scrollToLatest:ie,scrollToMessage:De,scrollToEntryUnread:()=>ft(U,{block:"center",behavior:"auto"}),getEntryUnreadCenteringNeeds:on,focusViewport:()=>u.value?.focus({preventScroll:true})}),()=>h$1("div",{ref:u,"data-im-thread-viewport":"",role:"log",tabindex:-1},[h$1("div",{ref:k,"data-im-thread-viewport-content":""},f.default?.())])}});var tn=Symbol("ImThreadSurfaceContext");function Dn(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 Fn(t){provide(tn,t);}function Rt(){let t=inject(tn);if(t===void 0)throw new Error("ImThreadSurface \u9700\u8981\u663E\u5F0F context prop \u6216 provideImThreadSurfaceContext");return t}function jn(t,a){if(t.key!==a.key||t.kind!==a.kind)return false;switch(a.kind){case "message":return t.kind==="message"&&t.message===a.message&&t.firstOfRun===a.firstOfRun;case "system":return t.kind==="system"&&t.message===a.message;case "date-separator":return t.kind==="date-separator"&&t.label===a.label;case "entry-unread":return t.kind==="entry-unread"&&t.count===a.count;case "encryption":return true}}function nn(t,a){if(t===void 0)return a;let h=new Map(t.map(u=>[u.key,u])),f=a.map(u=>{let k=h.get(u.key);return k!==void 0&&jn(k,u)?k:u});return t.length===f.length&&f.every((u,k)=>u===t[k])?t:f}var Et=Object.freeze({followThreshold:120,olderPrefetchThreshold:120,visibleReadDelay:300,visibleMargin:8,activeDateOffset:16,activeDateIdleDelay:1500}),St=Object.freeze({enabled:true,maxFillPages:8}),Kn=8,_n=160;function qn(t,a){return t?.conversationType===a.conversationType&&t.conversationId===a.conversationId}var Gn=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$1,slots:h}){let f=t.context??Rt(),u=ref(null),k=ref(0),N=ref(false),U=ref(false),E=ref(false),m,V,b,K=ref(false),r=ref(false),g=ref(false),c=false,w,C=ref(true),M=[],$=at(),q=0,Z=ref(0),le,R=null,A="",J="",W="",X=false,Q=false,D=ref(false),G=ref(""),ye=ref(false),Ee=at(),ne,s=computed(()=>f.getState()),de=computed(()=>!!s.value.pendingLocationMessageId),Oe=computed(()=>s.value.pageVisible??f.isPageVisible?.()??true),Me=computed(()=>s.value.pageEngaged??f.isPageEngaged?.()??true),B=computed(()=>qn(s.value.activeConversation,t.conversation)),ue=computed(()=>({...Et,...t.viewportOptions})),x=computed(()=>{let n=t.initialViewportOptions.maxFillPages??St.maxFillPages;return {enabled:t.initialViewportOptions.enabled??St.enabled,maxFillPages:Number.isFinite(n)?Math.max(0,Math.floor(n)):St.maxFillPages}}),j=computed(()=>!B.value||!s.value.ready?"":`${t.conversation.conversationType}\0${t.conversation.conversationId}`),ce="",ke=computed(n=>{let d=B.value?`${t.conversation.conversationType}\0${t.conversation.conversationId}`:"",l=ce===d?n:void 0;return ce=d,B.value?nn(l,i({messages:s.value.messages,entryUnread:s.value.entryUnread,formatDate:f.formatDate,leadingItems:f.leadingItems?.(),beforeMessageItems:f.beforeMessageItems})):nn(l,[])}),fe=computed(()=>ke.value.flatMap(n=>n.kind==="message"||n.kind==="system"?[n.message.id]:[])),Fe=computed(()=>s.value.messages.filter(n=>(n.status==="pending"||n.status==="uploading"||n.status==="sending")&&f.shouldFollowMessage?.(n)===true).map(n=>n.id));function p(){Ee.cancel(),ne!==void 0&&(clearTimeout(ne),ne=void 0);}function S(n=false){if(p(),ye.value=false,n){u.value?.clearActiveDate(),G.value="";return}ne=setTimeout(()=>{ne=void 0,!ye.value&&(u.value?.clearActiveDate(),G.value="");},_n);}function T(n){if(n===null){S();return}ne!==void 0&&(clearTimeout(ne),ne=void 0),G.value=n.label,ye.value=true;let d=ue.value.activeDateIdleDelay,l=Number.isFinite(d)?Math.max(0,d):Et.activeDateIdleDelay;Ee.schedule(()=>S(),l);}async function P(n,d,l,y=true){t.hooks?.beforeAction?.(n);try{let I=await d();return l?.()!==!1&&t.hooks?.afterAction?.(n,I),I}catch(I){throw y&&l?.()!==false&&t.hooks?.onError?.(n,I),I}}function L(n="automatic",d,l=true){return !B.value||s.value.loading||!s.value.hasOlder?Promise.resolve(0):P({kind:"load-older",source:n},()=>f.actions.loadOlder(),d,l)}function ee(){return z()}function z(n,d=true){let l=f.actions.loadNewer,y=s.value.loadingNewer??s.value.loading;return !B.value||y||!s.value.hasNewer||l===void 0?Promise.resolve(0):P({kind:"load-newer"},()=>l(),n,d)}async function re(n){for(let d=0;d<Kn;d+=1){if(!B.value||E.value||U.value||de.value)return;let l=n==="older"?s.value.hasOlder:s.value.hasNewer,y=n==="older"?s.value.olderError:s.value.newerError;if(!l||y!==null||(n==="older"?await L("user-scroll"):await ee())>0)return;let F=n==="older"?s.value.hasOlder:s.value.hasNewer,Y=n==="older"?s.value.olderError:s.value.newerError;if(!F||Y!==null)return}}async function Se(){return !B.value||f.actions.loadNewer===void 0?0:Te({kind:"load-newer"},()=>f.actions.retryNewer?.()??f.actions.loadNewer?.({force:true})??Promise.resolve(0))}async function oe(){return B.value?Te({kind:"retry-older"},()=>f.actions.retryOlder?.()??f.actions.loadOlder({force:true})):0}async function Te(n,d){let l=j.value,y=++q;R=null,W="";let I;try{I=await P(n,d);}catch(F){throw be(l,y)&&(W=l),F}return be(l,y)&&!D.value&&(R=null,Be()),I}async function ae(){if(!B.value)return false;let n=j.value;Ue(),Ne();let d=++Z.value;return E.value=false,we(true),X=true,A=n,J=We(Ve()),!await P({kind:"jump-to-latest"},()=>f.actions.jumpToLatest?.()??Promise.resolve(!s.value.isHistoryWindow),()=>he(n,d))||!he(n,d)||(await nextTick(),!he(n,d))?false:(u.value?.scrollToLatest(),N.value=true,g.value=false,xe(),true)}function Re(n=false){let d=u.value,l=d?.getViewportElement();r.value=d?.isScrollable()===true;let y=s.value.entryUnreadNavigation;K.value=y?.state==="located"&&M.includes(y.firstMessageId),D.value&&K.value&&(N.value=true);let I=l==null?0:Math.max(0,l.scrollHeight-l.clientHeight-l.scrollTop);g.value=y!==void 0&&I>50,n&&y!==void 0&&l!==null&&l!==void 0&&l.clientHeight>0&&I>=l.clientHeight&&(N.value=true);}function xe(){let n=f.actions.markConversationRead;if(n===void 0||!Me.value||!B.value||!D.value||U.value||c&&(!C.value||s.value.hasNewer)||w!==void 0||s.value.error!==null)return;let d=j.value,l=n().then(()=>{w===l&&d===j.value&&(c=true);}).catch(y=>{!Q&&w===l&&d===j.value&&t.hooks?.onError?.({kind:"mark-conversation-read"},y);}).finally(()=>{w===l&&(w=void 0);});w=l;}async function st(){let n=f.actions.loadEntryUnread;if(!B.value||U.value||n===void 0)return "cancelled";Ne();let d=j.value,l=++Z.value;E.value=false;let y=new AbortController;b=y,V=l,U.value=true,we(true),X=true;try{let I=await P({kind:"jump-to-entry-unread"},()=>n({signal:y.signal}),()=>he(d,l));if(!he(d,l))return "cancelled";if(!I||s.value.entryUnread.state!=="located")return "unavailable";let Y=await lt(d,l);return Y&&(N.value=!0),Y?"located":he(d,l)?"unavailable":"cancelled"}catch(I){if(!he(d,l))return "cancelled";throw I}finally{V===l&&(V=void 0,b=void 0,U.value=false);}}async function lt(n,d){await nextTick();for(let l=0;l<60;l+=1){if(!he(n,d))return false;if(u.value?.scrollToEntryUnread())return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(y=>window.requestAnimationFrame(()=>y()));}return false}function dt(n){C.value=n.isAtBottom,k.value=n.newMessageCount,Re(),Be();}function et(n,d){return u.value?.scrollToMessage(n,d)??false}function he(n,d){return !Q&&Z.value===d&&j.value===n&&B.value}async function $e(n,d,l,y){for(let I=0;I<60;I+=1){if(!he(n,d))return false;if(et(l,y))return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(F=>window.requestAnimationFrame(()=>F()));}return false}async function tt(n,d){for(let l=0;l<60;l+=1){if(!n())return false;if(u.value?.isMeasurable()&&u.value.getMessageCenteringNeeds(d)!=null)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(y=>window.requestAnimationFrame(()=>y()));}return false}async function ut(n){let d=()=>!n()||!(s.value.loading||s.value.loadingOlder||s.value.loadingNewer);return d()||await new Promise(l=>{let y=watch(d,I=>{I&&(y(),l());},{flush:"sync"});}),await nextTick(),await nextTick(),n()}async function ze(n,d,l){let y=u.value;if(y===null||!y.isMeasurable())return false;let I=0,F="older",Y=()=>he(n,d),me=async ie=>{let Ie=0,He=ie==="older"?s.value.olderError:s.value.newerError,De=He===void 0?s.value.error:He;if(De!=null)throw De;if(ie==="older")Ie=await L("automatic",Y,false);else {y.prepareHistoryPageAppend();try{Ie=await z(Y,!1);}catch(ft){throw Y()&&y.cancelHistoryPageAppend(),ft}Ie<=0&&Y()&&!s.value.hasNewer&&y.cancelHistoryPageAppend();}return I+=1,await nextTick(),await nextTick(),Y()};for(;he(n,d)&&I<x.value.maxFillPages&&y.isMeasurable();){if(!await ut(Y))return false;let ie=y.getMessageCenteringNeeds(l);if(ie===null)return false;let Ie=!s.value.hasOlder,He=!s.value.hasNewer||f.actions.loadNewer===void 0,De=ie.older&&ie.newer&&!Ie&&!He?F:ie.older&&!Ie?"older":ie.newer&&!He?"newer":void 0;if(De===void 0)break;if(F=De==="older"?"newer":"older",!await me(De))return false}return he(n,d)}async function Je(n,d={behavior:"auto",block:"center"}){if(!B.value||n==="")return {ok:false,reason:"cancelled"};let l=j.value,y=E.value;Ue(),Ne();let I=y||le!==void 0||(s.value.loadingOlder??s.value.loading)||(s.value.loadingNewer??s.value.loading),F=++Z.value;E.value=true;let Y=new AbortController;m=Y,we(true),X=true,A=l,J=We(Ve());let me=()=>he(l,F);try{if(I&&f.actions.loadAround!==void 0||!fe.value.includes(n)){let Ie=f.actions.loadAround;if(Ie===void 0)return {ok:!1,reason:"anchor-unavailable"};let He={};le=He;try{let De=await P({kind:"locate-message",messageId:n},()=>Ie(n,{signal:Y.signal}),me,!1);if(!me())return {ok:!1,reason:"cancelled"};if(!De)return {ok:!1,reason:"not-visible"}}finally{le===He&&(le=void 0);}}return await nextTick(),await nextTick(),!await tt(me,n)||!await ze(l,F,n)?{ok:!1,reason:me()?"not-visible":"cancelled"}:await $e(l,F,n,d)?{ok:!0}:{ok:!1,reason:me()?"not-visible":"cancelled"}}catch(ie){return me()?a(ie):{ok:false,reason:"cancelled"}}finally{m===Y&&(m=void 0),Z.value===F&&(E.value=false);}}async function _e(n,d){return (await Je(n,d)).ok}function qe(){$.cancel();}function Ce(){if(!D.value){qe();return}let n=t.readActions;if(n===void 0&&f.actions.markVisibleMessages===void 0){qe();return}let d=Number.isFinite(ue.value.visibleReadDelay)?Math.max(0,ue.value.visibleReadDelay):Et.visibleReadDelay;$.schedule(()=>{if(!B.value||!Me.value)return;xe();let l=f.actions.markVisibleMessages;if(l!==void 0){let F=M;l(F).catch(Y=>{t.hooks?.onError?.({kind:"visible-range",messageIds:F},Y);});return}if(n===void 0)return;let y=M[M.length-1];if(y===void 0)return;let I=n.resolveTarget===void 0?y:n.resolveTarget(y);I!=null&&Promise.resolve(n.markRead(I)).catch(F=>{t.hooks?.onError?.({kind:"visible-range",messageIds:M},F);});},d);}function ct(n){M=Object.freeze([...n]),Re();let d={kind:"visible-range",messageIds:M};t.hooks?.beforeAction?.(d);try{f.actions.onVisibleRange?.(M),t.hooks?.afterAction?.(d,void 0);}catch(l){throw t.hooks?.onError?.(d,l),l}D.value?Ce():Be();}function be(n,d){return !Q&&q===d&&j.value===n&&!X&&!de.value}function nt(n,d){be(n,d)&&(A=n,J=We(Ve()),D.value=true,Re(),xe(),Ce());}function Ve(){return s.value.entryUnreadNavigation===void 0?s.value.entryUnread:{state:"none"}}function We(n){return n.state!=="located"?n.state:`${n.state}:${n.firstMessageId}`}async function rt(n,d,l){for(let y=0;y<60;y+=1){if(!be(n,d))return false;if(u.value?.scrollToMessage(l,{behavior:"auto",block:"center"})===true)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(F=>window.requestAnimationFrame(()=>F()));}return false}function Be(){let n=j.value,d=We(Ve());if(n===""||s.value.loading||E.value||de.value||s.value.error!==null&&s.value.messages.length===0||A===n&&(J===d||J.startsWith("located:")||X)||W===n||R!==null)return;if(!x.value.enabled){A=n,J=d,D.value=true,Ce();return}let l=++q;X=false,D.value=false;let y=(async()=>{if(await nextTick(),!be(n,l))return;let I=u.value;if(I===null||!I.isMeasurable())return;let F=Ve();if(F.state==="located"&&!fe.value.includes(F.firstMessageId))return;let Y=F.state==="located"?await rt(n,l,F.firstMessageId):false;if(F.state==="located"&&!Y)return;Y||I.scrollToLatest();let me=0;for(;be(n,l)&&me<x.value.maxFillPages&&s.value.error===null&&(s.value.hasOlder||s.value.hasNewer&&f.actions.loadNewer!==void 0)&&I.isMeasurable()&&!I.isScrollable();){if(s.value.hasNewer&&f.actions.loadNewer!==void 0&&(s.value.messages.length===0||!s.value.hasOlder)){let Ie=Z.value;I.prepareHistoryPageAppend();try{await ee(),await nextTick();}finally{j.value===n&&Z.value===Ie&&(q===l||X)&&I.cancelHistoryPageAppend();}}else await L();if(!be(n,l)||(me+=1,await nextTick(),await nextTick(),!I.isMeasurable()))return}if(!be(n,l)||!I.isMeasurable())return;let ie=Ve();if(ie.state==="located"){if(!fe.value.includes(ie.firstMessageId)||!await rt(n,l,ie.firstMessageId))return}else (me>0||Y)&&I.scrollToLatest();await nextTick(),nt(n,l);})().catch(()=>{be(n,l)&&(W=n);}).finally(()=>{R===y&&(R=null);});R=y;}function we(n,d=false){q+=1,R=null,X=false,D.value=n,n||(A="",J="",d||(W="")),qe();}function Ue(){b!==void 0&&(Z.value+=1,b.abort(),b=void 0,V=void 0,U.value=false);}function Ne(){!E.value&&m===void 0||(Z.value+=1,m?.abort(),m=void 0,E.value=false);}function je(){if(Re(true),Ue(),Ne(),de.value&&f.actions.cancelMessageLocation?.(),X=true,D.value)return;let n=j.value;q+=1,R=null,A=n,D.value=true,Ce();}let ot=Object.freeze({getViewportElement:()=>u.value?.getViewportElement()??null,loadOlder:L,retryOlder:oe,loadNewer:ee,retryNewer:Se,jumpToLatest:ae,jumpToEntryUnread:st,scrollToMessage:et,locateMessage:_e,locateMessageDetailed:Je,focusViewport:()=>u.value?.focusViewport()});return a$1(ot),watch(Me,n=>{n&&D.value?Ce():qe();}),watch([()=>s.value.activeRemoteMessageRevision??0,u,j],()=>{let n=u.value;if(n===null||!B.value)return;let d=f.actions.drainActiveRemoteMessageIds?.()??[];n.trackRemoteMessageIds(d,{isAtBottom:C.value,isHistoryWindow:s.value.isHistoryWindow,isPageVisible:Oe.value})&&(C.value=false);},{flush:"post"}),watch(()=>s.value.pendingLocationMessageId??"",n=>{(n!==""||E.value)&&(Ne(),Z.value+=1,E.value=false),n!==""&&(Ue(),D.value||we(false));},{flush:"sync"}),watch([j,()=>s.value.loading,()=>s.value.error,()=>fe.value.length,()=>s.value.hasOlder,()=>We(Ve()),x,()=>s.value.hasNewer,de],([n,d,l,y,,I],[F,,,Y,,me])=>{if(n!==F&&(Ue(),Ne(),Z.value+=1,E.value=false,le=void 0,we(false),S(true),u.value?.clearNewMessageBadge(),k.value=0,C.value=true,M=[],N.value=false,K.value=false,r.value=false,g.value=false,U.value=false,V=void 0,c=false,w=void 0),n!==""&&n===F&&Y!==void 0&&Y>0&&y===0&&(s.value.hasOlder||s.value.hasNewer)&&D.value&&we(false,true),n!==""&&n===F&&I!==me&&!J.startsWith("located:")&&!X&&I.startsWith("located:")&&(A="",J="",D.value=false),n===""){we(false);return}if(l!==null&&s.value.messages.length===0){D.value||we(false,true);return}d||Be();},{flush:"post",immediate:true}),onBeforeUnmount(()=>{Q=true,Ue(),Ne(),Z.value+=1,we(false),S(true);}),()=>{let n={conversation:t.conversation,state:s.value,items:ke.value,actions:ot,initialViewportSettled:j.value!==""&&(s.value.messages.length===0?!s.value.loading&&s.value.error===null&&!s.value.hasOlder&&!s.value.hasNewer:D.value&&A===j.value)},d=[h.header?.(n),h["before-list"]?.(n)];if(!B.value)d.push(h.unsupported?.(n)??h$1("div",{"data-im-thread-unsupported":""}));else if(!s.value.ready&&s.value.loading)d.push(h.loading?.(n)??h$1("div",{"data-im-thread-loading":""}));else if(s.value.error!==null&&s.value.messages.length===0)d.push(h.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(h.empty?.(n)??h$1("div",{"data-im-thread-empty":""}));else {let l=h$1(Mt,{ref:u,messageIds:fe.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:ue.value.followThreshold,olderPrefetchThreshold:ue.value.olderPrefetchThreshold,visibleMargin:ue.value.visibleMargin,activeDateOffset:ue.value.activeDateOffset,activeDateEnabled:h["active-date"]!==void 0,resizeFollowEnabled:D.value&&!U.value&&!E.value&&!de.value,followNewMessages:Oe.value&&!U.value&&!E.value&&!de.value,shouldFollowAppendedMessage:y=>{let I=s.value.messages.find(F=>F.id===y);return I===void 0?false:f.shouldFollowMessage?.(I)===true},pendingSendMessageIds:Fe.value,onReachStart:()=>{re("older").catch(()=>{});},onReachEnd:()=>{re("newer").catch(()=>{});},onSettled:dt,onUserScroll:je,onActiveDateChange:T,onVisibleRange:ct,onNewMessageCount:y=>{k.value=y;}},{default:()=>[h["viewport-before"]?.(n),h$1(It,{items:ke.value,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{item:h.item,"date-separator":h["date-separator"],"entry-unread":h["entry-unread"],encryption:h.encryption,system:h.system,message:h.message,"recalled-message":h["recalled-message"],"deleted-message":h["deleted-message"],"unsupported-body":h["unsupported-body"]}),h["viewport-after"]?.(n)]});d.push(h$1("div",{"data-im-thread-viewport-shell":""},[h["active-date"]?.({label:G.value,visible:ye.value&&G.value!==""}),l,h["entry-unread-navigation"]?.({...n,count:s.value.entryUnreadNavigation?.state==="none"?0:s.value.entryUnreadNavigation?.count??0,loading:U.value,visible:n.initialViewportSettled&&!N.value&&!K.value&&!s.value.isHistoryWindow&&s.value.entryUnreadNavigation!==void 0&&s.value.entryUnreadNavigation.state!=="none"&&s.value.entryUnreadNavigation.count>0&&(r.value||s.value.hasOlder)})])),s.value.error!==null&&d.push(h.error?.(n)??h$1("div",{"data-im-thread-error":""}));}return d.push(h["after-list"]?.(n),h["jump-to-latest"]?.({...n,count:k.value,visible:g.value||!C.value||s.value.isHistoryWindow}),h["context-menu"]?.(n),h.composer?.(n)),h$1("section",{"data-im-thread-surface":"","data-conversation-type":t.conversation.conversationType,"data-conversation-id":t.conversation.conversationId},d)}}});function zn(t){let a=new Map;for(let f of t){if(a.has(f.kind))throw new Error(`\u6D88\u606F renderer kind \u91CD\u590D\u6CE8\u518C\uFF1A${f.kind}`);a.set(f.kind,f.component);}let h=Object.freeze([...a.keys()]);return Object.freeze({kinds:h,resolve:f=>a.get(f)})}var $n=140,Jn=120;function pt(t,a){if(t.width<=0||t.height<=0)return 0;let h=Math.max(0,Math.min(t.right,a.right)-Math.max(t.left,a.left)),f=Math.max(0,Math.min(t.bottom,a.bottom)-Math.max(t.top,a.top));return Math.min(1,h*f/(t.width*t.height))}function Pt(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 Ot(t){let a=Math.max(0,t.scrollIdleMs??$n),h=Math.max(0,t.visibilityDwellMs??Jn),f=Math.min(1,Math.max(0,t.minimumIntersectionRatio??.01)),u=Math.max(0,t.revealMarginPx??0),k=Math.max(0,t.preloadMarginPx??0),N=Math.max(u,k),U=Math.max(0,t.maxPreloadTargets??Number.POSITIVE_INFINITY),E=Math.max(1,t.maxSettledVisible??Number.POSITIVE_INFINITY),m=new Map,V=new Map,b=reactive(new Set),K=new Set,r=new Set,g=[],c=null,w=null,C=null,M=false,$=false,q=false,Z=false,le=new Map,R=0,A=false;function J(){R+=1,A=false,le.clear();}function W(p){let S=[...p].filter(([P,L])=>m.get(P)===L);if(S.length===0)return;let T=Ee();ne(true,T,S),Oe(T,S);}function X(p){if(!t.batchRegistration){W(p);return}for(let[T,P]of p)le.set(T,P);if(A)return;A=true;let S=R;nextTick(()=>{if(q||S!==R)return;A=false;let T=[...le];le.clear(),W(T),x();});}let Q,D;function G(){Q!==void 0&&clearTimeout(Q),Q=void 0;}function ye(){D!==void 0&&clearTimeout(D),D=void 0;}function Ee(){let p,S=new Map;return {getRootRect(){return p===void 0&&(p=c?.getBoundingClientRect()??null),p},getElementRect(T){let P=S.get(T);return P===void 0&&(P=T.getBoundingClientRect(),S.set(T,P)),P}}}function ne(p=false,S=Ee(),T=m){if(!p&&w!==null||c===null)return;let P=S.getRootRect();if(P===null)return;let L=Pt(P,N);for(let[ee,z]of T){let re=S.getElementRect(ee);z.ratio=pt(re,P),z.intersecting=z.ratio>0,z.revealIntersecting=N>0?pt(re,L)>0:z.intersecting&&z.ratio>=f;}}function s(p){return p.intersecting&&p.ratio>=f}function de(p){let S=V.get(p.key);return S!==void 0&&m.get(S)===p}function Oe(p=Ee(),S=m){let T=[];for(let[P,L]of S)if(!(!L.revealIntersecting||b.has(L.key))){if(N>u){if(u===0&&!s(L))continue;if(u>0){let ee=p.getRootRect();if(ee===null||pt(p.getElementRect(P),Pt(ee,u))<=0)continue}}T.push(L);}for(let P of T)!de(P)||b.has(P.key)||(b.add(P.key),t.onRevealed?.(P.item));}function Me(p,S=false){let T=new Set(p.map(L=>L.key));if(!(!(T.size!==r.size||[...T].some(L=>!r.has(L)))&&!S)){r.clear();for(let L of T)r.add(L);t.onSettledVisibleChange?.(p.map(L=>L.item));}}function B(p,S=false){!S&&p.length===g.length&&p.every((T,P)=>T.key===g[P]?.key&&T.item===g[P]?.item)||(g=p,t.onSettledPreloadChange?.(p.map(T=>T.item)));}function ue(){if(q||M)return;let p=$;$=false;let S=R,T=c,P=()=>!q&&!M&&S===R&&c===T,L=Ee();ne(false,L);let ee=L.getRootRect(),z=ee===null?0:(ee.top+ee.bottom)/2,re=[...m.entries()].filter(([,oe])=>s(oe)).map(([oe,Te])=>({target:Te,rect:L.getElementRect(oe)})).sort((oe,Te)=>Math.abs((oe.rect.top+oe.rect.bottom)/2-z)-Math.abs((Te.rect.top+Te.rect.bottom)/2-z)).slice(0,E).map(({target:oe})=>oe),Se;if(t.onSettledPreloadChange!==void 0&&ee!==null){let oe=Pt(ee,k);Se=[...m.entries()].filter(([,ae])=>ae.revealIntersecting).map(([ae,Re])=>({target:Re,rect:L.getElementRect(ae)})).filter(({target:ae,rect:Re})=>s(ae)||k>0&&pt(Re,oe)>0).sort((ae,Re)=>Number(s(Re.target))-Number(s(ae.target))||Math.abs((ae.rect.top+ae.rect.bottom)/2-z)-Math.abs((Re.rect.top+Re.rect.bottom)/2-z)).slice(0,U).map(({target:ae})=>ae);}if(Oe(L),!!P()&&(Me(re.filter(de),p),!!P())){Se!==void 0&&B(Se.filter(de),p);for(let oe of re){if(!P())return;!de(oe)||K.has(oe.key)||(K.add(oe.key),t.onActivated?.(oe.item));}}}function x(){q||M||(ye(),D=setTimeout(()=>{D=void 0,ue();},h));}function j(){q||($=true,ce(true),B([]),ne(),Oe(),Me([]),ye(),G(),Q=setTimeout(()=>{Q=void 0,ce(false),x();},a));}function ce(p){M!==p&&(M=p,t.onScrollingChange?.(p));}function ke(){c?.removeEventListener("scroll",j),w?.disconnect(),C?.disconnect(),w=null,C=null,c=null;}function fe(p=true){if(q)return;let S=t.getRoot();if(!(S===c&&c!==null)){if(B([]),ke(),c=S,c===null){p&&!Z&&(Z=true,Promise.resolve().then(()=>{Z=false,q||(fe(false),x());}));return}if(c.addEventListener("scroll",j,{passive:true}),typeof IntersectionObserver<"u"){w=new IntersectionObserver(T=>{for(let P of T){let L=m.get(P.target);L!==void 0&&(L.intersecting=P.isIntersecting,L.ratio=P.intersectionRatio,N===0&&(L.revealIntersecting=P.isIntersecting&&P.intersectionRatio>=f));}Oe(),x();},{root:c,threshold:[0,f,1]}),N>0&&(C=new IntersectionObserver(T=>{for(let P of T){let L=m.get(P.target);L!==void 0&&(L.revealIntersecting=P.isIntersecting);}Oe(),x();},{root:c,rootMargin:`${N}px 0px`,threshold:0}));for(let T of m.keys())w.observe(T);for(let T of m.keys())C?.observe(T);}X(m);}}function Fe(p){B(g.filter(S=>S.key!==p)),b.delete(p),K.delete(p),r.delete(p);}return {register(p,S){if(q)return;let T=t.getKey(p),P=b.has(T),L=K.has(T),ee=S===null?void 0:m.get(S);ee!==void 0&&ee.key!==T&&(V.delete(ee.key),m.delete(S),Fe(ee.key));let z=V.get(T);if(z!==void 0&&z!==S&&(w?.unobserve(z),C?.unobserve(z),m.delete(z),V.delete(T)),S===null){z!==void 0&&(w?.unobserve(z),C?.unobserve(z),m.delete(z),V.delete(T)),Fe(T);return}let re=m.get(S);if(re?.key===T&&re.item===p){let Te=c;fe(),c!==Te&&x();return}let Se={item:p,key:T,intersecting:re?.key===T?re.intersecting:false,ratio:re?.key===T?re.ratio:0,revealIntersecting:re?.key===T?re.revealIntersecting:false};m.set(S,Se),V.set(T,S);let oe=c;fe(),c===oe&&(w?.observe(S),C?.observe(S),X([[S,Se]])),P&&t.onRevealed?.(p),L&&de(Se)&&t.onActivated?.(p),x();},isRevealed:p=>b.has(t.getKey(p)),isActivated:p=>K.has(t.getKey(p)),isSettledVisible:p=>r.has(t.getKey(p)),isScrolling:()=>M,notifyScroll:j,refresh(){fe(),J(),W(m),x();},reset(){J(),G(),ye(),ce(false),$=false,Me([]),B([]),ke(),m.clear(),V.clear(),b.clear(),K.clear();},dispose(){q||(J(),G(),ye(),ce(false),$=false,Me([]),B([]),ke(),m.clear(),V.clear(),b.clear(),K.clear(),q=true);}}}function Xn(t){let a=new Map,h=new Map,f=shallowReactive(new Map),u=new Map,k=new Map,N=[],U=false,E=r=>{let g=a.get(r.channel);return g===void 0?r.channel:`${r.channel}\0${g.getKey(r.item)}`},m=Ot({getRoot:t.getRoot,batchRegistration:t.batchRegistration,getKey:r=>r.key,revealMarginPx:t.revealMarginPx,preloadMarginPx:t.preloadMarginPx,minimumIntersectionRatio:t.minimumIntersectionRatio,scrollIdleMs:t.scrollIdleMs,visibilityDwellMs:t.visibilityDwellMs,onScrollingChange:r=>{for(let g of a.values())g.onScrollingChange?.(r);},onRevealed:r=>r.targets.forEach(g=>a.get(g.channel)?.onRevealed?.(g.item)),onActivated:r=>r.targets.forEach(g=>a.get(g.channel)?.onActivated?.(g.item)),onSettledPreloadChange:r=>{let g=r.flatMap(c=>c.targets);for(let[c,w]of a){let C=g.filter(M=>M.channel===c).map(M=>M.item);w.onSettledPreloadChange?.(C.slice(0,Math.max(0,w.maxPreloadTargets??Number.POSITIVE_INFINITY)));}},onSettledVisibleChange:r=>{V(r.flatMap(g=>g.targets));}});function V(r){N=r;for(let[g,c]of a){let w=r.filter(M=>M.channel===g).map(M=>M.item),C=c.maxSettledVisible===void 0?w:w.slice(0,c.maxSettledVisible);c.onSettledVisibleChange?.(C);}}function b(r){let g=u.get(r),c=[];for(let M of a.keys()){let $=g?.get(M);$!==void 0&&c.push($);}let w=f.get(r);if(w!==void 0&&c.length===w.targets.length&&c.every((M,$)=>M===w.targets[$]))return;if(c.length===0)w!==void 0&&(f.delete(r),k.get(w.key)===r&&(k.delete(w.key),m.register(w,null)));else {let M={key:JSON.stringify(c.map(E)),targets:c};w!==void 0&&w.key!==M.key&&k.get(w.key)===r&&k.delete(w.key),f.set(r,M),k.set(M.key,r),m.register(M,r);}let C=N.flatMap(M=>{let $=h.get(M.channel)?.get(a.get(M.channel).getKey(M.item));return $===void 0?[]:[$.target]});(C.length!==N.length||C.some((M,$)=>M!==N[$]))&&V(C);}function K(r){return g=>{if(U)throw new Error("Thread visibility target group \u5DF2\u91CA\u653E");if(a.has(r))throw new Error(`Thread visibility channel \u5DF2\u5B58\u5728: ${r}`);a.set(r,g);let c=shallowReactive(new Map);h.set(r,c);let w=new Map,C=false,M=R=>({channel:r,item:R});function $(R){w.delete(R);let A=u.get(R);A?.delete(r),A?.size===0&&u.delete(R);}function q(){let R=[...w.keys()];c.clear();for(let A of R)$(A);for(let A of R)b(A);g.onScrollingChange?.(false),g.onSettledVisibleChange?.([]),g.onSettledPreloadChange?.([]);}function Z(R,A){let J=c.get(g.getKey(R)),W=J===void 0?void 0:f.get(J.element);return W!==void 0&&A(W)}return {register(R,A){if(C||U)return;let J=g.getKey(R),W=c.get(J);if(A===null){W!==void 0&&(c.delete(J),$(W.element),b(W.element));return}if(W?.target.item===R&&W.element===A){let G=f.get(A);G!==void 0&&m.register(G,A);return}let X=W?.target.item===R?W.target:M(R),Q=w.get(A);Q!==void 0&&Q!==J&&c.delete(Q),W!==void 0&&W.element!==A&&$(W.element),c.set(J,{target:X,element:A}),w.set(A,J);let D=u.get(A);D===void 0&&(D=new Map,u.set(A,D)),D.set(r,X),b(A),W!==void 0&&W.element!==A&&b(W.element);},isRevealed:R=>Z(R,m.isRevealed),isActivated:R=>Z(R,m.isActivated),isSettledVisible:R=>Z(R,m.isSettledVisible),isScrolling:m.isScrolling,notifyScroll:m.notifyScroll,refresh:m.refresh,reset:q,dispose(){C||(q(),C=true,a.delete(r),h.delete(r));}}}}return {createFactory:K,refresh:m.refresh,dispose(){if(!U){for(let r of f.values())m.register(r,null);f.clear(),u.clear(),k.clear();for(let r of a.values())r.onSettledPreloadChange?.([]);h.clear(),a.clear(),m.dispose(),U=true;}}}}function Zn(t){let a=mt();if(a===void 0)throw new Error("useImThreadLayoutMeasurement requires an ImThreadViewport");let h=a.registerLayoutMeasurement(t);return onBeforeUnmount(h.dispose),h}export{bt as ImThreadBodySwitch,It as ImThreadItems,Gn as ImThreadSurface,Mt as ImThreadViewport,Dn as createImThreadSurfaceContext,zn as createMessageRendererRegistry,Xn as createThreadVisibilityTargetGroup,Ot as createThreadVisibilityTargets,Fn as provideImThreadSurfaceContext,pn as useImText,Zn as useImThreadLayoutMeasurement,Rt as useImThreadSurfaceContext,bn as useOptionalImThreadReadActions};
@@ -5458,6 +5458,11 @@ interface ImMediaTask {
5458
5458
  /** 可供产品按 code/category 决策的稳定错误;不含底层 URL、密钥或响应正文。 */
5459
5459
  error?: ImSdkErrorShape;
5460
5460
  }
5461
+ /** 本地视频预读结果:消息小封面与仅供页面显示的高清图分别持有。 */
5462
+ interface LocalVideoPreviewMetadata extends VideoPreviewMetadata {
5463
+ /** 按需生成的高清 JPEG;宿主负责 object URL 生命周期,不可替代 posterData 发送。 */
5464
+ displayPoster?: Blob;
5465
+ }
5461
5466
  /**
5462
5467
  * 当前账号的媒体任务、取消、重试与消息媒体下载产品面。
5463
5468
  *
@@ -5564,7 +5569,8 @@ interface ImMediaTasksApi {
5564
5569
  *
5565
5570
  * 返回的对象可以**原样**作为 `localPreviewMetadata` 交给 `sendImage` / `sendVideo` /
5566
5571
  * `sendMediaAlbum`:发送链路会跳过重复解码,上传中的气泡也从第一帧就有封面。
5567
- * 视频封面用的就是发送链路那套规格(长边 320、JPEG),所以弹层里看到的与最终发出去的是同一张。
5572
+ * posterData 保持发送规格(长边 320、JPEG);includeDisplayPoster 可在同一次解码中额外生成
5573
+ * 仅供页面显示的高清 displayPoster(长边最多 960),不得用它替换消息里的小封面。
5568
5574
  *
5569
5575
  * @param input.kind 按文件类型选解码路径;`'video'` 才会抽首帧与读时长。
5570
5576
  * @param input.file 本地文件;不会被上传,也不会进任何缓存。
@@ -5579,7 +5585,9 @@ interface ImMediaTasksApi {
5579
5585
  kind: TKind;
5580
5586
  file: Blob;
5581
5587
  signal?: AbortSignal;
5582
- }) => Promise<(TKind extends 'video' ? VideoPreviewMetadata : ImagePreviewMetadata) | null>;
5588
+ /** 仅视频有效;同一次解码附带高清显示封面,默认不生成。 */
5589
+ includeDisplayPoster?: boolean;
5590
+ }) => Promise<(TKind extends 'video' ? LocalVideoPreviewMetadata : ImagePreviewMetadata) | null>;
5583
5591
  /**
5584
5592
  * 从本地视频提取仅供页面展示的高清 JPEG 封面,不上传、不下载、不写缓存。
5585
5593
  *
@@ -7375,6 +7383,8 @@ interface AdvancedConversationHandle<TType extends ProductHandleConversationType
7375
7383
  interface MediaObjectUrlLease {
7376
7384
  /** 可直接交给媒体 DOM 元素的 `blob:` 地址。 */
7377
7385
  readonly url: string;
7386
+ /** 发送前已生成的高清视频封面,仅供本机显示;未预读或已释放时不存在。 */
7387
+ readonly videoPoster?: Blob;
7378
7388
  /** 告知 Runtime 当前组件已不再使用该地址。 */
7379
7389
  release: () => void;
7380
7390
  }
@@ -7705,6 +7715,8 @@ interface ChatRuntime {
7705
7715
  clearSelfVoiceBytes: () => void;
7706
7716
  /** 为用户刚选择的图片、视频或 GIF 创建本地预览地址,并登记资源所有权;上传取消前该地址不会被自动淘汰。 */
7707
7717
  createLocalMediaPreview: (source: Blob) => string;
7718
+ /** 按原文件暂存当前账号的高清视频封面;创建上传源时一并交给消息租约,关闭选择后随 File 回收。 */
7719
+ rememberLocalVideoPoster: (source: Blob, poster: Blob) => void;
7708
7720
  /** 用户取消选择或上传尚未绑定消息时,撤销指定本地预览地址并释放对应 Blob 内存。 */
7709
7721
  discardLocalMediaPreview: (url: string) => void;
7710
7722
  /** 发送动作生成消息 ID 后,把临时预览地址绑定到精确的会话和消息,供消息气泡继续展示。 */
@@ -8117,13 +8129,14 @@ declare function prioritizeMediaDownload(runtime: ChatRuntime, message: ImMessag
8117
8129
  * 而且 N 个文件就是 N 路解码。
8118
8130
  *
8119
8131
  * 返回值可以**原样**作为 `localPreviewMetadata` 传给发送命令:发送链路会跳过重复解码,
8120
- * 上传中的气泡也从第一帧就有封面。视频封面用的就是发送链路那套规格,弹层里看到的与发出去的是同一张。
8132
+ * 上传中的气泡也从第一帧就有封面。posterData 只用于发送;需要高清预览时请求独立的 displayPoster。
8121
8133
  *
8122
8134
  * @param runtime 当前账号 runtime。
8123
8135
  * @param input 预读入参。
8124
8136
  * @param input.kind 文件类型;`'video'` 才会抽首帧与读时长。
8125
- * @param input.file 本地文件;不上传、不进缓存。
8137
+ * @param input.file 本地文件;不上传。高清视频封面按原文件弱引用暂存,供随后发送的本机消息复用。
8126
8138
  * @param input.signal 宿主放弃时中止解码(例如弹层被关掉)。
8139
+ * @param input.includeDisplayPoster 仅视频有效;在同一次解码中额外生成高清显示 Blob,不替换发送封面。
8127
8140
  * @returns 解码成功返回元信息;**浏览器确实读不出这个文件**时返回 `null`,
8128
8141
  * 调用方必须显式呈现「这个文件读不出来」,不要留一块空白让用户以为还在加载。
8129
8142
  * 账号切换、Client 未就绪同样返回 `null`(此时页面已经不该再画这一格)。
@@ -8133,7 +8146,8 @@ declare function prepareLocalMediaPreview<TKind extends 'image' | 'video'>(runti
8133
8146
  kind: TKind;
8134
8147
  file: Blob;
8135
8148
  signal?: AbortSignal;
8136
- }): Promise<(TKind extends 'video' ? VideoPreviewMetadata : ImagePreviewMetadata) | null>;
8149
+ includeDisplayPoster?: boolean;
8150
+ }): Promise<(TKind extends 'video' ? LocalVideoPreviewMetadata : ImagePreviewMetadata) | null>;
8137
8151
  /** 根据文件头确认解密结果是否为 JPEG、PNG、GIF 或 WebP;不是已知图片时返回 `null`,避免页面显示裂图。 */
8138
8152
  declare function detectImageMime(bytes: Uint8Array): string | null;
8139
8153
  /** 根据文件头识别 WebM 或 MP4;无法识别时返回 `video/mp4`,由浏览器播放器继续判断是否能播放。 */
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-YJV5ZN3V.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-JXCG3DYB.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-HJYSLPY4.js';import'./chunk-2R4KVYRU.js';import'./chunk-OUXI5ZYL.js';import'./chunk-KV7I2SAC.js';export{Ra as canTransmit,Pa as canTransmitByType,Qa as canTransmitContent,Oa as requiresForwardTypeConfirmation}from'./chunk-Q6TFPZMF.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-AYBSQHCA.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-2SVEG4B4.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-HJYSLPY4.js';import'./chunk-2R4KVYRU.js';import'./chunk-JCUE2QS7.js';import'./chunk-KORCFTGX.js';export{Ra as canTransmit,Pa as canTransmitByType,Qa as canTransmitContent,Oa as requiresForwardTypeConfirmation}from'./chunk-Q6TFPZMF.js';import'./chunk-WOT6VMZA.js';
@@ -0,0 +1 @@
1
+ import {j as j$1,p,b as b$2,i,l,f,q as q$1}from'./chunk-JCUE2QS7.js';import {hb,gb}from'./chunk-KORCFTGX.js';import {Ra,b as b$1,c,Na,Ta,Va,q,Qa}from'./chunk-Q6TFPZMF.js';import {a}from'./chunk-WOT6VMZA.js';var Rn=14,wn="game:rps",An="game:dice";function Qe(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 kn(e,t){Qe(t);let n=new Set([t.stableKey]),r=[t];for(let o of e)if(Qe(o),!n.has(o.stableKey)&&(n.add(o.stableKey),r.push(o),r.length===14))break;return Object.freeze(r)}var en=["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 Nn=1114111,Dn=55296,On=57343,nn=65039,Gn="0123456789abcdef";function Bn(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(!Gn.includes(o))throw new TypeError(`\u975E\u6CD5 Unicode emoji code: ${t}`);let r=Number.parseInt(n,16);if(!Number.isSafeInteger(r)||r>Nn||r>=Dn&&r<=On)throw new RangeError(`Unicode emoji code point \u8D8A\u754C: ${t}`);return r}function me(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=>Bn(n,e)))}function Ln(e){return String.fromCodePoint(...me(e))}function Re(e){return e.map(t=>`0x${t.toString(16)}`).join(" ")}function jn(e){let t=me(e),n=Re(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 we=Object.freeze(en.map(jn)),Q=new Map,ee=new Map;for(let e of we){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 we){let n=e.codePoints.at(-1)===nn?e.codePoints.slice(0,-1):[...e.codePoints,nn],r=Re(n),o=String.fromCodePoint(...n);Q.has(r)||Q.set(r,e),ee.has(o)||ee.set(o,e);}function Fn(e){if(e.startsWith("0x")){let t=Re(me(e));return Q.get(t)}return ee.get(e)}var tn=["[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 rn=j$1,Un=new Set(tn),Vn="/images/emoji/v1",Kn=(()=>{let e=new Map;for(let t of rn)for(let n of t.tokens)e.set(n,t);return e})();function zn(e){return Kn.get(e)}function Wn(e,t=Vn){return `${t}/${e.file}`}var $n=/\[[^[\]]{1,20}\]/g,Xn=(()=>{let e=new Map;for(let t of rn)e.set(t.code,t);return e})();function pr(e,t){let n=Xn.get(e);return n===void 0?void 0:Wn(n,t)}var Yn=/\[[^[\]]{1,20}\]/;function vr(e){return Yn.test(e)}function Jn(){return e=>{let t=[];for(let n of e.matchAll($n)){let r=zn(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}Un.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 qn=Jn();function yr(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=qn(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 xr(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 Ir(e){return e.reduce((t,n)=>t+ +(!n.muted&&n.unreadCount>0),0)}function Sr(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 on(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,i;function c(){s!==void 0&&clearTimeout(s),s=void 0,i=void 0;}function l(){let v=Number.POSITIVE_INFINITY;for(let C of t.values())C.evictable&&C.leases===0&&(v=Math.min(v,C.lastAccessedAt+a));s!==void 0&&i===v||(c(),Number.isFinite(v)&&(i=v,s=setTimeout(()=>{s=void 0,i=void 0,m();},Math.min(2147483647,Math.max(0,v-o()))),s.unref?.()));}function f(v){v.revoked||(v.revoked=true,n.delete(v),r(v.url));}function g(v){t.get(v.key)===v&&t.delete(v.key),v.retired=true,v.leases===0?f(v):n.add(v);}function p(){let v=0,C=0;for(let P of t.values())P.evictable&&(v+=1,C+=P.byteSize+(P.videoPoster?.size??0));return {entries:v,bytes:C}}function y(){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;g(C),v=p();}}function m(){if(a!==void 0){let v=o();for(let C of t.values())C.evictable&&C.leases===0&&v-C.lastAccessedAt>=a&&g(C);}y(),l();}function d(v,C,P){let N=P.byteSize??0,K=Number.isFinite(N)&&N>0?Math.floor(N):0,R=t.get(v);if(R?.url===C){R.byteSize=K,R.videoPoster=P.videoPoster,R.evictable=P.evictable,R.lastAccessedAt=o(),t.delete(v),t.set(v,R),m();return}R!==void 0&&g(R),t.set(v,{key:v,url:C,byteSize:K,videoPoster:P.videoPoster,evictable:P.evictable,leases:0,retired:false,revoked:false,lastAccessedAt:o()}),m();}function M(v,C){m();let P=t.get(v);if(P===void 0)return false;let N=t.get(C);return N!==void 0&&N!==P&&g(N),t.delete(v),P.key=C,t.set(C,P),l(),true}function h(v,C){m();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),m(),t.get(v)===P)}function T(v){m();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),l();let P=false;return Object.freeze({url:C.url,...C.videoPoster===void 0?{}:{videoPoster:C.videoPoster},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&&f(C),m());}})}function x(v){let C=t.get(v);C!==void 0&&g(C),m();}function k(v){for(let C of [...t.keys()])C.startsWith(v)&&x(C);}function B(){c();let v=[...t.values()];t.clear();for(let C of [...v,...n])f(C);n.clear();}function ve(){for(let v of t.values())v.evictable&&g(v);m();}return {register:d,move:M,makeEvictable:h,acquire:T,has:v=>(m(),t.has(v)&&!t.get(v).revoked),remove:x,removeByPrefix:k,clearAll:B,clearCached:ve,prune:m,getStats:()=>(m(),Object.freeze({activeEntries:t.size,retiredEntries:n.size,...p()}))}}var Zn=20;function Qn(){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 et(e){return `message\0${e.conversationType}\0${e.conversationId}\0`}function Ae(e){return `source\0${e}`}function an(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 Yr(e){let t=b$1(e.cachePrefix),n=c(t),r=e.createClient??p,o=e.createStorage??(u=>typeof indexedDB>"u"?void 0:hb({...u,mediaAssetCache:{strategies:b$2()}})),a=e.createProfile,s=e.deleteStorage??(u=>gb(u.accountId,{namespaceFactory:u.namespaceFactory})),i$1=null,c$1=null,l=false,f,g,p$1,y=0,m,d=false,M,h=false,T,x={wsUrl:"",userId:"",token:"",deviceToken:"",channelType:"0",cmHttpBaseUrl:""},k=i(e.debug,()=>({generation:y,...x.userId===""?{}:{accountId:x.userId}}));k.record("debug","chat-kit","session","runtime-created");function B(){return {generation:y,...x.userId===""?{}:{accountId:x.userId}}}function ve(){x.userId="",x.token="",x.deviceToken="",x.channelType="0";}let v={},C={},P={},N=new Map,K=new WeakMap,R=on({...Qn(),maxIdleMs:10080*60*1e3}),ce=new Set,Y=new Set,de=new Set;function J(){for(let u of de)u();}function ye(u=false){let S=B(),I=i$1,E=g!==void 0||p$1!==void 0;g?.(),g=void 0,p$1?.(),p$1=void 0,E&&k.record("debug","chat-kit","session","client-subscriptions-released",()=>S),u||I?.connection.disconnect("im-chat-auth-changed"),i$1=null,c$1=null;let w=f;f=void 0;let O;try{O=I!==null&&m?.uploadRecovery?.enabled&&!u?I.logout({localData:"preserve"}).finally(()=>I.dispose()):Promise.resolve(I!==null?I.dispose():w?.close());}catch(z){O=Promise.reject(z);}let L=O.catch(z=>{h=true,T=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(()=>{}),y+=1,v={},C={},P={},Ce(),N.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=m?.getCoreClient(),E=m?.getCoreApi?.();l=I!==void 0||E!==void 0;let w=m?.clientType??2,O=y,L=m?.onRequestError,z=I&&a?a({client:I,clientType:w,storage:f}):void 0,Tn={authProvider:{getLoginContext:async()=>{let _=m?.getSession?.(),G=m?.getSession!==void 0,W=(G?_?.userId:x.userId)?.trim()??"",We=(G?_?.token:x.token)?.trim()??"";return W===""||We===""||W!==x.userId?null:{userId:W,token:We,deviceToken:x.deviceToken,clientType:w,channelType:Number(x.channelType)}}},endpointProvider:{getEndpoints:async()=>[{url:x.wsUrl}],getCmHttpBaseUrl:async()=>x.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:m?.getMediaConfig(),uploadRecovery:m?.uploadRecovery,expressions:m?.getExpressionOptions?.(),coreApi:E,coreClient:I,onRequestError:L===void 0?void 0:_=>!d&&y===O?L(_):void 0,debug:e.debug},ze=r(Tn),Me=ze.events;if(Me===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=ze,g=i$1.connection.subscribe(_=>{if((_.type==="message:updated"||_.type==="message:received")&&_.message.status==="failed"&&_.message.failure?.displayCode==="media.uploadInterrupted"&&_.message.failure.retryable===false){let G=_.message,W=ne({conversationType:G.conversationType,conversationId:G.conversationId,messageId:G.id});R.remove(W),R.removeByPrefix(`${W}\0`);}for(let G of ce)G(_);}),Me!==void 0&&(p$1=Me.subscribe(_=>{for(let G of Y)G(_);})),k.record("debug","chat-kit","session","client-subscriptions-established",()=>B());}return i$1}function Ke(){let u=le();return c$1??=q$1(u,{coreApiAvailable:l}),c$1}function Ce(){K=new WeakMap,R.clearAll();}function En(u){R.removeByPrefix(et(u));}return {getClient:()=>i$1,getProductClient:()=>i$1===null?null:Ke(),ensureProductClient:Ke,getConnectionState:()=>i$1?.connection.state??"idle",getGeneration:()=>y,getCredentials:()=>x,getMediaConfig:()=>m?.getMediaConfig(),getDiagnostics:()=>k,configureHost(u){m=u;},applySession(u,S,I){let E=u?.userId??"",w=u?.token??"",O=i$1!==null&&(x.userId!==E||x.token!==w);return O&&ye(x.userId===E&&w!==""),x.wsUrl=S.wsUrl,x.cmHttpBaseUrl=S.cmHttpBaseUrl,x.userId=E,x.token=w,x.deviceToken=I,x.channelType="0",k.record("info","chat-kit","session","session-applied",()=>({data:{accountId:E,hasToken:w!=="",didReset:O}})),{didReset:O,hasToken:w!==""}},ensureClient:le,async prepare(){if(d)return {ok:false,errorKey:"lifecycle.disposed"};if(x.userId==="")return {ok:false,errorKey:"lifecycle.missingLoginState"};let u=Date.now(),S=B();k.record("info","chat-kit","session","prepare-start",()=>S);try{let I=x.userId,E=x.token;if(M!==void 0&&await M,d||y!==S.generation||x.userId!==I||x.token!==E)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:T});return await le().connection.prepare(),k.record("info","chat-kit","session","prepare-complete",()=>({...S,durationMs:Date.now()-u})),{ok:!0}}catch(I){k.record("error","chat-kit","session","prepare-failed",()=>({...S,durationMs:Date.now()-u,error:{message:"ChatRuntime prepare \u5931\u8D25",data:I}}));let E=an(I);return E!==void 0?{ok:false,errorKey:E}:{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(x.wsUrl===""||x.userId===""||x.token==="")return {ok:false,errorKey:"lifecycle.missingConnectParams"};let u=Date.now(),S=B();k.record("info","chat-kit","connection","connect-start",()=>S);try{let I=x.userId,E=x.token;if(M!==void 0&&await M,d||y!==S.generation||x.userId!==I||x.token!==E)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:T});return await le().connection.connect(),k.record("info","chat-kit","connection","connect-complete",()=>({...S,durationMs:Date.now()-u})),{ok:!0}}catch(I){k.record("error","chat-kit","connection","connect-failed",()=>({...S,durationMs:Date.now()-u,error:{message:"ChatRuntime connect \u5931\u8D25",data:I}}));let E=an(I);return E!==void 0?{ok:false,errorKey:E}:{ok:false,errorKey:"lifecycle.connectFailed",errorParams:{reason:I instanceof Error?I.message:String(I)}}}},disconnect(){let u=B();k.record("info","chat-kit","connection","disconnect",()=>u),i$1?.connection.disconnect("im-chat-manual");},async logout(u){let S=Date.now(),I=B();k.record("info","chat-kit","session","logout-start",()=>({...I,data:u}));let E=i$1,w,O;if(E!==null)try{O=E.logout(u);}catch(L){w=L;}if(ve(),y+=1,O!==void 0)try{await O;}catch(L){w=L;}if(v={},C={},P={},Ce(),N.clear(),J(),k.record(w===void 0?"info":"error","chat-kit","session",w===void 0?"logout-complete":"logout-failed",()=>({...I,durationMs:Date.now()-S,...w===void 0?{}:{error:{message:"ChatRuntime logout \u5931\u8D25",data:w}}})),w!==void 0)throw w},resetForAuthChange:ye,dispose(){if(d)return;d=true;let u=B();k.record("info","chat-kit","session","dispose",()=>u),ye(true),ce.clear(),Y.clear(),de.clear();},subscribeEvents(u){return ce.add(u),()=>{ce.delete(u);}},subscribeProductEvents(u){return Y.add(u),()=>{Y.delete(u);}},getSenderProfileCache:()=>v,setSenderProfileCache(u){v=u,J();},getGroupMemberNames:()=>C,setGroupMemberNames(u){C=u,J();},getChannelMemberProfiles:()=>P,setChannelMemberProfiles(u){P=u,J();},subscribeProfileChange(u){return de.add(u),()=>{de.delete(u);}},putSelfVoiceBytes(u,S){for(N.delete(u),N.set(u,S);N.size>Zn;){let I=N.keys().next().value;if(I===void 0)break;N.delete(I);}},getSelfVoiceBytes:u=>N.get(u),clearSelfVoiceBytes(){N.clear();},rememberLocalVideoPoster(u,S){K.set(u,S);},createLocalMediaPreview(u){let S=URL.createObjectURL(u);return R.register(Ae(S),S,{byteSize:u.size,evictable:false,videoPoster:K.get(u)}),S},discardLocalMediaPreview(u){R.remove(Ae(u));},trackLocalMediaPreview(u,S){R.move(Ae(S),ne(u));},resolveMediaPreviewToRemote(u,S,I){let E=ne(u);S==="image"||S==="video"?R.makeEvictable(E,I):R.remove(E);},hasMediaBlob(u){return R.has(ne(u))},acquireMediaBlob(u){return R.acquire(ne(u))},async clearMediaCache(){let u=i$1,S=y;if(u===null)throw new Error("IM session is not ready");if(R.clearCached(),await u.media.clearCache(),y!==S||i$1!==u)throw new Error("IM session changed during media cache cleanup")},cleanupLocalMediaBlobs:Ce,cleanupConversationMediaBlobs:En}}function sn(e){return "group"in e?e.group:e.channel}function cn(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","filesAlbum","miniProgram","transfer","gift","game"].includes(t.contentType)||t.contentType==="filesAlbum"&&!Qa(t))return false;if(n===null)return true;let r=sn(n);return r.conversationType!==e.ref.conversationType||r.conversationId!==e.ref.conversationId||n.messageId!==t.id}function nt(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&&cn(t,n,r)}function tt(e){let{session:t,message:n,currentPinnedMessage:r}=e;return t?.ref.conversationType==="channel"&&t.channelState==="active"&&t.channelPermissions?.moderateMessages===true&&cn(t,n,r)}function Zr(e){return e.session?.ref.conversationType==="group"?nt(e):e.session?.ref.conversationType==="channel"?tt(e):false}function dn(e,t){if(e===null)return false;let n=sn(e);return n.conversationType===t.conversationType&&n.conversationId===t.conversationId&&e.messageId===t.id}function rt(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 eo(e,t,n,r,o){let a=rt(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 ot(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 no(e,t,n,r){return ot(e,t,n,r)||r}function to(e,t,n,r){let o=t[n]?.[r]?.avatar;return o!==void 0&&o!==""?o:at(e,r)}function at(e,t){return e[t]?.avatar??""}function ro(e,t){return e[t]?.nickname??""}function oo(e){return (e.remark??"").trim()||e.nickname||e.id}function ke(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 _e(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 b(e){return Object.freeze({availability:"unavailable",reason:e})}function it(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 b("unsupported-type")}function st(e){return e.status==="sent"&&e.recalled===void 0&&e.deletedForEveryone===void 0&&e.encryption.decryptFailed!==true&&["text","image","video","voice","file","filesAlbum","miniProgram","game","mediaAlbum","liveRoom"].includes(e.contentType)&&(e.contentType!=="filesAlbum"||Qa(e))}function ct(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 ln(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 lo(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:b("unsupported-type");case "members.view":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canViewMembers:b("unsupported-type");case "members.manage":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canManageMembers:b("unsupported-type");case "members.invite":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canInviteMembers:b("unsupported-type");case "members.remove":return e.conversationType==="channel"?e.value.canRemoveMembers:e.conversationType==="group"?e.value.canManageMembers:b("unsupported-type");case "members.setAdmin":return e.conversationType==="channel"?e.value.canSetMemberAdmin:b("unsupported-type");case "ownership.transfer":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canTransferOwnership:b("unsupported-type");case "conversation.leave":return e.conversationType==="channel"||e.conversationType==="group"?e.value.canLeave:b("unsupported-type");case "channel.manageMute":return e.conversationType==="channel"?e.value.canManageMute:b("unsupported-type");case "channel.setMemberPrivateChat":return e.conversationType==="channel"?e.value.canSetMemberPrivateChat:b("unsupported-type");case "channel.dismiss":return e.conversationType==="channel"?e.value.canDismiss:b("unsupported-type")}}function fo(e,t){let{message:n,pinnedMessage:r,selfId:o,snapshot:a,nowMs:s=Date.now()}=t;if(!it(a,n))return b("unsupported-type");let i=dn(r,n);switch(e){case "message.react":return n.status!=="sent"||!Ta(n)?b("unsupported-type"):a.conversationType==="channel"?a.value.canSendMessages:A;case "message.forward":{let c=te(n);return c!==void 0?c:Ra(n)?A:b("unsupported-type")}case "message.favorite":{let c=te(n);return c!==void 0?c:n.encryption?.decryptFailed===true?b("unsupported-type"):l(n)!==null?A:b("unsupported-type")}case "message.multiSelect":{let c=te(n);return c!==void 0?c:i?b("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?b("message-protected"):a.conversationType==="direct"?ke(n,o,s)?A:b("role-insufficient"):re(a).availability!=="available"?re(a):ke(n,o,s)?A:b("role-insufficient");case "message.edit":return i?b("message-protected"):a.conversationType==="direct"?_e(n,o,Na,s)?A:b("role-insufficient"):re(a).availability!=="available"?re(a):_e(n,o,Na,s)?A:b("role-insufficient");case "message.pin":return i?b("message-protected"):st(n)&&(a.conversationType==="group"||a.conversationType==="channel")?a.value.canPinMessages:b("unsupported-type");case "message.unpin":return a.conversationType==="group"||a.conversationType==="channel"?a.value.canUnpinMessages:b("unsupported-type");case "message.deleteLocal":{if(i)return b("message-protected");let c=te(n);return c!==void 0?c:n.contentType==="unknown"?b("unsupported-type"):a.conversationType==="direct"||a.conversationType==="group"?A:b("unsupported-type")}case "message.deleteForEveryone":return i?b("message-protected"):a.conversationType!=="channel"||!ct(n)?b("unsupported-type"):a.value.canDeleteMessagesForEveryone}}function uo(e,t){let{selfId:n,snapshot:r,targetRole:o="unknown",targetUserId:a}=t;if(a===""||a===n)return b("role-insufficient");if(r.conversationType==="group"){if(e!=="members.removeTarget")return b("unsupported-type");let i=r.value.canManageMembers;return i.availability!=="available"?i:r.value.ownerId!==void 0&&a===r.value.ownerId?b("role-insufficient"):A}if(r.conversationType!=="channel")return b("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:b("role-insufficient"):r.value.role==="admin"&&o==="member"?A:b("role-insufficient")}let s=r.value.canSetMemberAdmin;return s.availability!=="available"?s:r.value.role!=="owner"?b("role-insufficient"):e==="members.setAdminTarget"?o==="member"?A:b("role-insufficient"):o==="admin"?A:b("role-insufficient")}function fn(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 un(e,t=Date.now()){if(e?.channelState===void 0)return "channelBlock.unknownRestricted";let n=Va({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"?fn(n.channelState)||"channelBlock.unknownRestricted":n.permissions.sendMessages?"":"channelBlock.unknownRestricted"}var j=9;function dt(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 mn(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=dt(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 gn(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 Ne(e){return await oe(e)==="gif"}var lt=new Set(["group","channel"]),ft=new Set(["group","channel"]),pn=30*1024*1024,De=200*1024*1024,Oe=2*1024*1024*1024,ut=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 Ge(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 mt(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 So(e){return lt.has(e)}function gt(e){return ft.has(e)}function Po(e,t=Date.now()){return e?.type==="channel"?un(e,t):e?.type==="group"?mt(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 ln(a,s,r)}async function Eo(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,{...gt(s)?{mentions:Ge(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 vn(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 g=F(e,a,s);if(g!=="")return n.setNote(n.t(g)),false;let p=r==="video"?De:r==="file"?Oe:r==="sticker"?ut:pn;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 y=e.getGeneration();if(o.size===0)return e.getGeneration()===y&&n.setNote(n.t("send.mediaEmpty",{label:c})),false;if(r==="sticker"&&!await Ne(o))return e.getGeneration()===y&&n.setNote(n.t("send.mediaFormatMismatch",{name:o.name})),false;let m=se(n,f$1),d;try{if(r==="image"&&!await f(o))return e.getGeneration()===y&&n.setNote(n.t("send.imageFormatUnsupported",{name:o.name})),!1;if(e.getGeneration()!==y)return !1;d=r==="file"?void 0:e.createLocalMediaPreview(o);let M=t.localPreviewMetadata;if(e.getGeneration()!==y)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()===y&&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 T=ae(f$1,d);T===void 0?e.discardLocalMediaPreview(d):e.trackLocalMediaPreview({conversationId:a,conversationType:s,messageId:T},d);}return !1}return e.getGeneration()===y}catch(M){if(e.getGeneration()===y&&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{m();}}async function To(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 g=r==="video"?De:Oe;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 p=e.getGeneration();if(o.size===0)return e.getGeneration()===p&&n.setNote(n.t("send.mediaEmpty",{label:c})),false;let y=se(n,l),m;try{if(m=r==="video"?e.createLocalMediaPreview(o):void 0,e.getGeneration()!==p)return m!==void 0&&e.discardLocalMediaPreview(m),!1;let d=await(r==="video"?l.messages.replaceInterruptedVideo(a,o,{...m===void 0?{}:{localPreviewUrl:m}}):l.messages.replaceInterruptedFile(a,o,{fileName:o.name}));if(n.refreshActiveMessages(),!d.ok){e.getGeneration()===p&&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=m!==void 0&&l.getSnapshot().messages.some(h=>h.id===a&&h.contentType==="video"&&h.body.video?.url===m);return m!==void 0&&!M?e.discardLocalMediaPreview(m):m!==void 0&&e.trackLocalMediaPreview({conversationId:s,conversationType:i,messageId:a},m),!1}return e.getGeneration()===p}catch(d){return e.getGeneration()===p&&n.setNote(n.t("send.mediaFailed",{label:c,reason:d instanceof Error?d.message:String(d)})),m!==void 0&&(ae(l,m)===a?e.trackLocalMediaPreview({conversationId:s,conversationType:i,messageId:a},m):e.discardLocalMediaPreview(m)),false}finally{y();}}function pt(e){let t=e.getMediaConfig()?.buckets.voice;return t!==void 0&&t!==""}async function Ro(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(!pt(e))return n.setNote(n.t("send.voiceStorageNotConfigured")),false;let f=e.getGeneration(),g=se(n,c);try{let p=new File([r.data],r.filename,{type:r.mimeType}),y=await c.messages.sendVoice(p,{durationMs:r.durationMs,waveform:r.waveform,...s===void 0?{}:{replyToMessageId:s}});return n.refreshActiveMessages(),y.ok?e.getGeneration()!==f?!1:(e.putSelfVoiceBytes(y.message.id,r.data),!0):(e.getGeneration()===f&&y.error.code!=="IM_SDK_MEDIA_PAUSED"&&y.error.code!=="IM_SDK_MEDIA_CANCELLED"&&n.setNote(n.t("send.voiceFailed",{reason:y.error.code})),!1)}catch(p){return e.getGeneration()===f&&n.setNote(n.t("send.voiceFailed",{reason:p instanceof Error?p.message:String(p)})),false}finally{g();}}var vt=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 wo(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 g=e.getGeneration();for(let d of s){let M=n.t(`label.${d.kind}`),h=d.kind==="video"?De:pn;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()===g&&n.setNote(n.t("send.imageFormatUnsupported",{name:d.file.name})),false;if(M!=="not-gif")return e.getGeneration()!==g||n.showWarning?.(n.t("send.mediaFailed",{label:n.t("label.image"),reason:"IM_SDK_MEDIA_ALBUM_GIF_UNSUPPORTED"})),false}if(e.getGeneration()!==g)return false;let p=se(n,l),y=s.map(d=>e.createLocalMediaPreview(d.file)),m=d=>{y.forEach((M,h)=>{d===void 0?e.discardLocalMediaPreview(M):e.trackLocalMediaPreview({conversationId:o,conversationType:a,messageId:d,itemIndex:h},M);});};try{if(e.getGeneration()!==g)return m(void 0),!1;let d=await l.messages.sendMediaAlbum(s.map((M,h)=>({kind:M.kind,file:M.file,localPreviewUrl:y[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()===g&&d.error.code!=="IM_SDK_MEDIA_PAUSED"&&d.error.code!=="IM_SDK_MEDIA_CANCELLED"){let M=n.t(vt.has(d.error.code)?"label.video":"label.image");n.setNote(n.t("send.mediaFailed",{label:M,reason:d.error.code}));}return m(ae(l,y[0])),!1}return e.getGeneration()===g}catch(d){return e.getGeneration()===g&&n.setNote(n.t("send.mediaFailed",{label:n.t("label.image"),reason:d instanceof Error?d.message:String(d)})),m(ae(l,y[0])),false}finally{p();}}async function Ao(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 gn(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(vn(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 ko(e,t,n){if(t.caption!==void 0&&Array.from(t.caption).length>q)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=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<=Oe&&l.name.trim()!==""&&(s=c);}let i=await mn(t.files,async c=>{let l=o++,f=await vn(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 _o(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 No(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 ht={};a(ht,{executeForwardMessages:()=>xt,forwardMessages:()=>It});function yt(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 Ct(e){let t=e?.code;return typeof t=="string"&&t!==""?t:"unknown"}function Mt(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 bt(e,t){return t.every(n=>n.conversationType!=="supergroup"&&n.conversationType===e.ref.conversationType&&n.conversationId===e.ref.conversationId)}async function xt(e,t){let n="forward";if(e.getProductClient()===null||e.getConnectionState()!=="authenticated"||t.handle===void 0||!bt(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 g=F(e,f.conversationId,f.conversationType,{mode:"target"});if(g!=="")return Object.freeze({ok:false,operation:n,reason:"target-blocked",blockReason:g})}let o=t.messages.filter(Ra),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:Mt(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 It(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=yt(n,t.messages);if(o===void 0)return n.setNote(n.t("common.conversationNotReady")),null;for(let g of t.targets){let p=F(e,g.conversationId,g.conversationType,{mode:"target"});if(p!=="")return n.setNote(n.t(p)),null}let a=t.messages.filter(Ra),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(g=>g.id),t.targets);}catch(g){return e.getGeneration()===i&&n.getConversationHandle()===o&&n.setNote(n.t("forward.failed",{reason:Ct(g)})),null}if(e.getGeneration()!==i||n.getConversationHandle()!==o)return c;let l=c.sent.length,f=s+c.skippedSourceMessageIds.length;if(l===0){let g=c.failed[0];g!==void 0?n.setNote(n.t("forward.failed",{reason:g.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 Ot={};a(Ot,{deleteChannelMessageForEveryone:()=>Nt,editMessage:()=>Dt,executeDeleteChannelMessageForEveryone:()=>At,executeDeleteLocalMessage:()=>wt,executeRecallMessage:()=>Rt,executeRetryMessage:()=>kt,recallMessage:()=>_t});var St={IM_SDK_MESSAGE_PINNED:"recall.pinned",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"},Pt={IM_SDK_MESSAGE_PINNED:"edit.pinned",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"},Et={IM_SDK_MESSAGE_PINNED:"pinned.protected",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 Be(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 Le(e){return typeof e?.code=="string"?e.code:void 0}function Tt(e){return typeof e=="object"&&e!==null&&typeof e.code=="string"&&typeof e.category=="string"&&typeof e.operation=="string"&&typeof e.retryable=="boolean"}function ge(e,t,n){return Tt(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 je(e,t){return e!==void 0&&t.conversationType!=="supergroup"&&e.ref.conversationType===t.conversationType&&e.ref.conversationId===t.conversationId}async function Rt(e,t){let n="recall";if(!je(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:ge(o,n,t.handle)})}return e.getGeneration()===r?Object.freeze({ok:true,operation:n}):Object.freeze({ok:false,operation:n,reason:"stale"})}async function wt(e,t){let n="delete-local";if(!je(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:ge(o,n,t.handle)})}return e.getGeneration()===r?Object.freeze({ok:true,operation:n}):Object.freeze({ok:false,operation:n,reason:"stale"})}async function At(e,t){let n="delete-for-everyone";if(!je(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:ge(o,n,t.handle)})}return e.getGeneration()===r?Object.freeze({ok:true,operation:n}):Object.freeze({ok:false,operation:n,reason:"stale"})}async function kt(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:ge(s,n,o)})}return e.getGeneration()===a?Object.freeze({ok:true,operation:n}):Object.freeze({ok:false,operation:n,reason:"stale"})}async function _t(e,t,n){let r=Be(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(St[Le(a)??""]??"recall.failed"));}}async function Nt(e,t,n){let r=Be(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(Et[Le(a)??""]??"channelDelete.failed"));}}async function Dt(e,t,n){let r=Be(n,t.message);if(r===void 0)return n.setNote(n.t("common.conversationNotReady")),false;let o=e.getGeneration(),a=Ge(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(Pt[Le(s)??""]??"edit.failed")),false}return e.getGeneration()===o}var Kt={};a(Kt,{executePinMessage:()=>Bt,executeSyncPinnedMessage:()=>jt,executeUnpinMessage:()=>Lt,getPinnedMessage:()=>Ut,peekPinnedMessage:()=>Vt,pinMessage:()=>Ft,syncPinnedMessage:()=>Cn,unpinMessage:()=>Ht});function $(e,t){let n=e.getProductClient();return n===null||e.getConnectionState()!=="authenticated"?(t?.setNote(t.t("common.notConnected")),null):n}function Gt(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 yn(e){return typeof e=="object"&&e!==null&&typeof e.category=="string"}function Fe(e,t,n){if(yn(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 Bt(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:Fe(a,"pin",t.conversation)})}}async function Lt(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:Fe(a,n,t)})}}async function jt(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:Fe(a,n,t)})}}function He(e,t,n,r){if(e.getGeneration()!==t)return;let o=yn(r)?Gt(r.category):"pinned.failed";n.setNote(n.t(o));}async function Ft(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 He(e,o,n,a),null}}async function Ht(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 He(e,o,n,a),false}}async function Ut(e,t,n){let r=await Cn(e,t,n);return r.ok?r.value:null}async function Cn(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 He(e,o,n,a),{ok:false}}}function Vt(e,t){let n=e.getProductClient();return n===null?null:t.conversationType==="group"?n.groups.peekPinnedMessage(t):n.channels.peekPinnedMessage(t)}function Fo(e){return e.conversation.conversationType==="channel"&&e.channelProfile?.memberPrivateChatDisabled!==false?"blocked":e.relationship==="friend"?"friend-profile":"friend-contact"}var sr={};a(sr,{applyGroupMemberNickname:()=>tr,applyGroupMemberRename:()=>er,applyMemberNames:()=>nr,clearGroupMemberNicknameProjection:()=>rr,ensureSelfProfile:()=>or,prewarmActiveSenders:()=>ir,prewarmMemberAvatars:()=>ar,refreshStaleSenders:()=>Pn,resolveChannelMembers:()=>Qt,resolveGroupMembers:()=>Sn,resolveSenderName:()=>Zt});var Mn=new WeakMap;function zt(e){let t=Mn.get(e);return t===void 0&&(t=new Map,Mn.set(e,t)),t}function Wt(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 $t(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 Xt(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 Ue(e,t,n,r){let o=n.trim();if(o===""||r?.isCurrent?.()===false)return Promise.resolve(false);let a=Wt(e);if(a===void 0)return Promise.resolve(true);let s=e.getGeneration(),i=()=>e.getGeneration()===s&&r?.isCurrent?.()!==false,c=zt(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 g=Xt(a,t,o,i).then(p=>p===void 0||!i()?(c.get(l)?.task===g&&c.delete(l),false):($t(e,p),c.set(l,{expiresAt:Date.now()+3e5,task:Promise.resolve(true)}),true)).catch(p=>(c.get(l)?.task===g&&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:p}})),false));return c.set(l,{expiresAt:0,task:g}),g}var xn=300*1e3,Yt=new WeakMap,Jt=new WeakMap,qt=new WeakMap;function Ve(e,t){let n=e.get(t);return n===void 0&&(n=new Map,e.set(t,n)),n}function In(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 bn=new WeakMap;function D(e){return (e??"").trim()}function X(e){let t=bn.get(e),n=e.getGeneration();return (t===void 0||t.generation!==n)&&(t={generation:n,groups:new Map},bn.set(e,t)),t}function pe(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 hn(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 H(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 Zt(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=Ve(Yt,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(g=>{if(e.getGeneration()!==l)return false;let p=D(g?.remark),y=D(g?.nickname),m=D(g?.avatar),d=e.getSenderProfileCache()[t],M=d!==void 0&&d.nickname!==""&&d.nickname!==t?d.nickname:"",h=y!==""&&y!==t?y:M||y,T=m!==""?m:d?.avatar??"";return (p!==""||h!==""||T!=="")&&e.setSenderProfileCache({...e.getSenderProfileCache(),[t]:{remark:p||d?.remark||"",nickname:h,avatar:T}}),true}).catch(g=>{if(e.getGeneration()!==l)return false;if(!a){let p={...e.getSenderProfileCache()};delete p[t],e.setSenderProfileCache(p);}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:g}})),false}).finally(()=>{!a&&s.get(t)===f&&s.delete(t);});return a||s.set(t,f),f}function Sn(e,t,n){let r=e.getClient();if(t===""||r===null)return Promise.resolve(false);let o=n?.forceRefresh===true,a=Ve(Jt,e),s=o?void 0:a.get(t);if(s!==void 0)return s;let i=e.getGroupMemberNames(),c=e.getGeneration(),l=Ue(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 g=c,p=()=>{if(f||e.getGeneration()!==g)return;let m={...e.getGroupMemberNames()};delete m[t],e.setGroupMemberNames(m);},y=Promise.all([r.group.getMemberNames(t,{forceRefresh:o}),l]).then(([m])=>e.getGeneration()!==g?false:m===null?(p(),false):(e.setGroupMemberNames({...e.getGroupMemberNames(),[t]:pe(e,t,m,{reconcile:true})}),true)).catch(m=>(p(),e.getGeneration()===g&&H(e,"group-member-name-resolve-failed",m,{groupId:t}),false)).finally(()=>{!o&&a.get(t)===y&&a.delete(t);});return o||a.set(t,y),y}function Qt(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=Ue(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=Ve(qt,e),g=`${t}:${[...l].sort().join(",")}`,p=a?void 0:f.get(g);if(p!==void 0)return p;let y=s,m=Promise.all([o.channel.getMembersByIds(t,l,a?{forceRefresh:true}:void 0),i]).then(([d])=>{if(e.getGeneration()!==y||r?.isCurrent?.()===false)return false;let M=Date.now()+xn,h={...e.getChannelMemberProfiles()[t]??{}};for(let T of d){let x=h[T.userId];x!==void 0&&In(T.updateVersion,x.updateVersion)<0||(h[T.userId]={displayName:T.displayName,...T.avatar===void 0?{}:{avatar:T.avatar},role:T.role,...T.updateVersion===void 0?{}:{updateVersion:T.updateVersion},expiresAt:M});}return e.setChannelMemberProfiles({...e.getChannelMemberProfiles(),[t]:h}),true}).catch(d=>(e.getGeneration()===y&&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(g)===m&&f.delete(g);});return a||f.set(g,m),m}function er(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)||hn(e,t.conversationId,s);}Sn(e,t.conversationId,{forceRefresh:true});}function nr(e,t,n){let r={};for(let o of n)o.nickName!==""&&(r[o.userId]=o.nickName);e.setGroupMemberNames({...e.getGroupMemberNames(),[t]:pe(e,t,r)});}function tr(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 rr(e,t,n={}){let r=t.trim();if(r===""||(hn(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 or(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=D(o.remark),s=D(o.nickname),i=D(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&&H(e,"self-profile-prefetch-failed",o,{userId:n});});}async function ar(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(g){e.getGeneration()===r&&H(e,"member-avatar-prefetch-failed",g,{userId:s});return}if(i===null||e.getGeneration()!==r)return;let c=D(i.value.remark),l=D(i.value.nickname),f=D(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 ir(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 p;try{p=await o.group.peekMemberNames(n);}catch(y){e.getGeneration()===s&&H(e,"group-member-name-prefetch-failed",y,{groupId:n});return}p===null||e.getGeneration()!==s||(e.getGroupMemberNames()[n]===void 0&&e.setGroupMemberNames({...e.getGroupMemberNames(),[n]:pe(e,n,p.value)}),p.stale&&(l=true));})());let g=[...new Set(t.map(p=>p.senderId).filter(p=>p!==""&&p!=="system"&&p!==a))];f==="channel"&&g.length>0&&i.push((async()=>{let p;try{p=await o.channel.getMembersByIds(n,g);}catch(d){e.getGeneration()===s&&H(e,"channel-member-prefetch-failed",d,{conversation:{conversationType:"channel",conversationId:n}});return}if(e.getGeneration()!==s||r?.isCurrent?.()===false)return;let y=Date.now()+xn,m={...e.getChannelMemberProfiles()[n]??{}};for(let d of p){let M=m[d.userId];M!==void 0&&In(d.updateVersion,M.updateVersion)<0||(m[d.userId]={displayName:d.displayName,...d.avatar===void 0?{}:{avatar:d.avatar},role:d.role,...d.updateVersion===void 0?{}:{updateVersion:d.updateVersion},expiresAt:y});}e.setChannelMemberProfiles({...e.getChannelMemberProfiles(),[n]:m});})());for(let p of g)e.getSenderProfileCache()[p]===void 0&&i.push((async()=>{let y;try{y=await o.contact.peekProfile(p);}catch(h){e.getGeneration()===s&&H(e,"sender-profile-prefetch-failed",h,{userId:p});return}if(y===null||e.getGeneration()!==s)return;let m=D(y.value.remark),d=D(y.value.nickname),M=D(y.value.avatar);(m!==""||d!==""||M!=="")&&e.getSenderProfileCache()[p]===void 0&&e.setSenderProfileCache({...e.getSenderProfileCache(),[p]:{remark:m,nickname:d,avatar:M}}),y.stale&&c.push(p);})());await Promise.allSettled(i),e.getGeneration()===s&&Pn(e,c,l?n:void 0);}function Pn(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]:pe(e,n,a,{reconcile:true})});}).catch(a=>{e.getGeneration()===o&&H(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=D(s.remark),c=D(s.nickname),l=D(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&&H(e,"sender-profile-refresh-failed",s,{userId:a});});}async function Ko(e,t){let n=U(e),r=t.keyword.trim();return V(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 zo(e,t){let n=U(e),r=t.keyword.trim();return V(n,()=>n.texts(t.conversation,r))}function Wo(e,t){let n=U(e),r=t.keyword?.trim();return V(n,()=>n.files(t.conversation,r===void 0||r===""?void 0:r))}function $o(e,t){let n=U(e);return V(n,()=>n.images(t.conversation))}function Xo(e,t){let n=U(e);return V(n,()=>n.videos(t.conversation))}function Yo(e,t){let n=U(e);return V(n,()=>n.voices(t.conversation))}function Jo(e,t){let n=U(e);return V(n,()=>n.next(t))}function U(e){let t=e.getClient();if(t===null)throw new Error("IM client is not available");return t.search.messages}async function V(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{To as $,eo as A,rr as Aa,ot as B,or as Ba,no as C,sr as Ca,to as D,Ko as Da,at as E,zo as Ea,ro as F,Wo as Fa,oo as G,$o as Ga,ke as H,Xo as Ha,_e as I,Yo as Ia,ln as J,Jo as Ja,lo as K,fo as L,uo as M,fn as N,un as O,j as P,dt as Q,mn as R,gn as S,oe as T,Ne as U,mt as V,So as W,gt as X,Po as Y,Eo as Z,vn as _,Rn as a,pt as aa,wn as b,Ro as ba,An as c,wo as ca,kn as d,Ao as da,me as e,ko as ea,Ln as f,_o as fa,we as g,No as ga,Fn as h,xt as ha,rn as i,ht as ia,Vn as j,Rt as ja,zn as k,wt as ka,Wn as l,At as la,$n as m,kt as ma,pr as n,Ot as na,vr as o,Bt as oa,Jn as p,Lt as pa,yr as q,jt as qa,xr as r,Vt as ra,Ir as s,Kt as sa,Sr as t,Fo as ta,Yr as u,Zt as ua,nt as v,Sn as va,tt as w,Qt as wa,Zr as x,er as xa,dn as y,nr as ya,rt as z,tr as za};