k2-im 0.1.42 → 0.1.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +1 -1
- package/dist/chat-kit-pinia.js +1 -1
- package/dist/chat-kit-vue.js +1 -1
- package/dist/chat-kit.js +1 -1
- package/dist/chunk-6FH2DBQE.js +7 -0
- package/dist/chunk-6WAB2ZRF.js +2 -0
- package/dist/{chunk-CVLKJADF.js → chunk-7DZ5R7KR.js} +1 -1
- package/dist/chunk-DX6Q2DQD.js +2 -0
- package/dist/{chunk-GQHGZRFP.js → chunk-PCUF66O4.js} +1 -1
- package/dist/{chunk-B4SOXSDP.js → chunk-TMIAJBDG.js} +1 -1
- package/dist/{chunk-PPXQWMHO.js → chunk-TWSAZG5J.js} +1 -1
- package/dist/i18n.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -1
- package/dist/sdk.d.ts +2 -0
- package/dist/sdk.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-J77L6JLQ.js +0 -2
- package/dist/chunk-SVA6OESM.js +0 -2
- package/dist/chunk-YNYTR73D.js +0 -7
package/dist/chat-kit-vue.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {h,C,p,i,q,m,z,B,o,j,g}from'./chunk-CVLKJADF.js';import {f,h as h$2,i as i$1,g as g$1}from'./chunk-PPXQWMHO.js';import'./chunk-SVA6OESM.js';import'./chunk-YNYTR73D.js';import'./chunk-J77L6JLQ.js';import'./chunk-WOT6VMZA.js';import {defineComponent,h as h$1,ref,provide,watch,nextTick,onMounted,onBeforeUnmount,computed,inject,isVNode,cloneVNode,Fragment,reactive}from'vue';function $t(t){let a=0,b=0;for(let c of t)c.kind==="video"?b+=1:a+=1;return {imageCount:a,videoCount:b}}function Xt(t){return {systemMessage:a=>a.body.system!==void 0?g$1(a.body.system,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):"",mediaPlaceholder:a=>i$1(a.contentType,{locale:t.locale(),durationMs:a.body.voice?.durationMs,stickerImageType:a.body.sticker?.imageType,gameType:a.body.game?.gameType,callKind:a.body.call?.callKind,...a.body.filesAlbum===void 0?{}:{filesAlbum:{count:a.body.filesAlbum.items.length,caption:a.body.filesAlbum.caption}},...a.body.mediaAlbum===void 0?{}:{mediaAlbum:$t(a.body.mediaAlbum.items)}}),lastMessage:a=>a.lastMessageSummary!==void 0?h$2(a.lastMessageSummary,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):a.lastMessagePreview,failureText:a=>a.failure?.displayCode!==void 0?f(a.failure.displayCode,{locale:t.locale(),mediaKind:a.failure.mediaKind,params:a.failure.params}):a.failure?.message??""}}var Nt=Symbol("ImThreadReadActions");function kt(t){provide(Nt,t);}function Zt(){return inject(Nt,void 0)}var at=defineComponent({name:"ImThreadBodySwitch",inheritAttrs:false,props:{message:{type:Object,required:true},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup(t,{attrs:a,slots:b}){return kt(t.readActions),()=>{let c=h(t.message),m=t.rendererRegistry.resolve(c);return m!==void 0?h$1(m,{...a,message:t.message,presentation:t.presentation}):b["unsupported-body"]!==void 0?b["unsupported-body"]({kind:c,message:t.message}):h$1("span",{"data-im-thread-unsupported-body":c,"aria-hidden":"true"})}}});var st=Symbol("ImThreadViewportRegistration");function Lt(){return inject(st,void 0)}var lt=defineComponent({name:"ImThreadItems",props:{items:{type:Array,required:true},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup(t,{slots:a}){let b=Lt();function c(i,y){let k=Array.isArray(y)?y:[y];return k.length===1&&isVNode(k[0])?cloneVNode(k[0],{key:i}):h$1(Fragment,{key:i},k)}function m(i){return y=>{b?.registerMessageNode(i,y instanceof HTMLElement?y:null);}}function C(i,y){return k=>{b?.registerDateNode(i,y,k instanceof HTMLElement?k:null);}}function _(i){return a.encryption?.({item:i})??h$1("div",{"data-im-thread-encryption":i.key})}function p(i){let y=C(i.key,i.label);return a["date-separator"]?.({item:i,setElement:y})??h$1("div",{ref:y,"data-im-thread-date-separator":i.key},i.label)}function S(i){b?.registerEntryUnreadNode(i instanceof HTMLElement?i:null);}function I(i){return a["entry-unread"]?.({item:i,setElement:S})??h$1("div",{ref:S,"data-im-thread-entry-unread":i.key,...i.count===void 0?{}:{"data-count":String(i.count)}})}function O(i){let y=m(i.message.id);return a.item!==void 0?a.item({item:i,setElement:y}):a.message!==void 0?a.message({item:i,setElement:y}):i.message.deletedForEveryone!==void 0?a["deleted-message"]?.({item:i,setElement:y})??h$1("article",{ref:y,"data-im-thread-message-id":i.message.id,"data-im-thread-message-terminal":"deleted-for-everyone"},[h$1("span",{"data-im-thread-anchor-point":""})]):i.message.recalled!==void 0?a["recalled-message"]?.({item:i,setElement:y})??h$1("article",{ref:y,"data-im-thread-message-id":i.message.id,"data-im-thread-message-terminal":"recalled"},[h$1("span",{"data-im-thread-anchor-point":""})]):i.kind==="system"&&a.system!==void 0?a.system({item:i,setElement:y}):h$1("article",{ref:y,"data-im-thread-message-id":i.message.id,"data-first-of-run":i.kind==="message"?String(i.firstOfRun):void 0},[h$1("span",{"data-im-thread-anchor-point":""}),h$1(at,{message:i.message,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{"unsupported-body":a["unsupported-body"]===void 0?void 0:k=>a["unsupported-body"]?.(k)})])}return ()=>h$1("div",{"data-im-thread-items":""},t.items.map(i=>{switch(i.kind){case "encryption":return a.item!==void 0?c(i.key,a.item({item:i})):c(i.key,_(i));case "date-separator":return a.item!==void 0?c(i.key,a.item({item:i,setElement:C(i.key,i.label)})):c(i.key,p(i));case "entry-unread":return a.item!==void 0?c(i.key,a.item({item:i,setElement:S})):c(i.key,I(i));case "system":case "message":return c(i.key,O(i))}return i}))}});var Bt=120,fn=500,Be=.5,mn=8;function dt(t){let a=t.ownerDocument.defaultView?.devicePixelRatio;return 1+1/(a!==void 0&&Number.isFinite(a)&&a>0?a:1)}var ut=defineComponent({name:"ImThreadViewport",props:{messageIds:{type:Array,required:true},contentKey:{type:String,default:""},loadingOlder:{type:Boolean,default:false},hasNewer:{type:Boolean,default:false},loadingNewer:{type:Boolean,default:false},followThreshold:{type:Number,default:120},olderPrefetchThreshold:{type:Number,default:120},followNewMessages:{type:Boolean,default:true},shouldFollowAppendedMessage:{type:Function,default:void 0},visibleMargin:{type:Number,default:8},resizeFollowEnabled:{type:Boolean,default:true},activeDateOffset:{type:Number,default:16},activeDateEnabled:{type:Boolean,default:false}},emits:{"reach-start":()=>true,"reach-end":()=>true,"visible-range":t=>true,settled:t=>true,"new-message-count":t=>true,"user-scroll":()=>true,"active-date-change":t=>true},setup(t,{emit:a,expose:b,slots:c}){let m$1=ref(null),C$1=ref(null),_=new Map,p$1,S=new Map,I=new Set,O=new Map,i=0,y=[],k,E,P,B$1,L=false,q$1,te=new Set,D=false,W,$="",Z=1,j$1=false,ee=false,G=true,K=false,V=false,ne=false,X=0,ce=-1,oe=-1,o$1,J,ae,H,N,f=ref(true),w=ref(0),u=C(e=>{w.value=e,a("new-message-count",e);});function F(e){let r=Number.isFinite(t.followThreshold)?Math.max(0,t.followThreshold):0;return e.scrollHeight-e.clientHeight-e.scrollTop<=r}function T(e=t.messageIds){return e.flatMap(r=>{let s=_.get(r);if(s===void 0)return [];let h=s.getBoundingClientRect(),M=s.querySelector("[data-im-thread-anchor-point]");return [{id:r,top:h.top,bottom:h.bottom,anchorTop:M?.getBoundingClientRect().top??h.top}]})}function re(e="",r=1){let s=Math.min(1,Math.max(0,r));$!==""&&$!==e&&O.get($)?.element.style.removeProperty("opacity"),$=e,Z=s,e!==""&&O.get(e)?.element.style.setProperty("opacity",String(s));}function A(){re();}function z$1(){let e=m$1.value;if(D||e===null||!t.activeDateEnabled)return;let r=[...O.entries()].filter(([,U])=>e.contains(U.element)).map(([U,x])=>{let fe=x.element.getBoundingClientRect();return {key:U,label:x.label,top:fe.top,height:fe.height}}).sort((U,x)=>U.top-x.top),s=e.getBoundingClientRect(),h=r.find(U=>U.height>0)?.height??28,M=g({markers:r,viewportTop:s.top,overlayTop:Number.isFinite(t.activeDateOffset)?Math.max(0,t.activeDateOffset):0,overlayHeight:h});if(M===null){A(),a("active-date-change",null);return}re(M.inlineDateKey,M.inlineOpacity),a("active-date-change",M);}function ye(e){E={scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,width:e.clientWidth,height:e.clientHeight};}function Ee(e){let r=E;if(r===void 0)return false;let s=Math.max(0,e.scrollHeight-e.clientHeight);return s<r.scrollHeight-r.height&&r.scrollTop>s&&Math.abs(e.scrollTop-s)<=dt(e)}function Ue(e){return Ee(e)||W!==void 0&&(W.behavior==="smooth"||Math.abs(e.scrollTop-W.targetTop)<=dt(e))?0:e.scrollTop-i}function _e(e,r){r!==0&&(i=e.scrollTop-r,W=void 0,Q());}function qe(e,r){let s=Ue(e);if(H!==void 0)return H.expectedOffset-=s,Ie(),_e(e,s),K||je(),false;let h=E;if(h===void 0)return false;let M=k,U=M===void 0?void 0:T([M.id])[0],x=e.scrollTop-h.scrollTop,fe=Ee(e)?0:x,Se=M===void 0||U===void 0?0:(U.anchorTop??U.top)-r.top-M.offset+x;return h.scrollHeight!==e.scrollHeight||h.width!==e.clientWidth||h.height!==e.clientHeight||Math.abs(Se)>Be?(E=void 0,!j$1&&!t.loadingNewer&&!t.hasNewer&&t.resizeFollowEnabled&&f.value&&Math.abs(fe)<=Be?(le(),true):(M!==void 0&&xe({...M,offset:M.offset-fe}),_e(e,s),false)):false}function ke(){let e=m$1.value;if(D||e===null)return;let r=e.getBoundingClientRect();if(qe(e,r))return;let s=B$1!==void 0&&L?t.messageIds.filter(x=>I.has(x)):t.messageIds,h=T(s);if(B$1!==void 0&&L&&h.length===0){f.value=F(e);return}let M=h.filter(x=>B({viewportTop:r.top,viewportBottom:r.bottom,messageTop:x.top,messageBottom:x.bottom,margin:t.visibleMargin})).map(x=>x.id),U=M.length!==y.length||M.some((x,fe)=>y[fe]!==x);y=Object.freeze(M),k=o(h,{top:r.top,bottom:r.bottom}),ye(e),u.acknowledgeVisible(M),f.value=F(e),U&&a("visible-range",y),a("settled",{visibleMessageIds:y,...y.length===0?{}:{newestVisibleMessageId:y[y.length-1]},isAtBottom:f.value,newMessageCount:w.value});}function Ae(e){if(te.add(e),q$1!==void 0)return;let r=()=>{q$1=void 0;let s=[...te];te.clear(),s.forEach(h=>h());};typeof globalThis.requestAnimationFrame=="function"?q$1=globalThis.requestAnimationFrame(r):q$1=globalThis.setTimeout(r,0);}function We(){q$1!==void 0&&(typeof q$1=="number"&&typeof globalThis.cancelAnimationFrame=="function"?globalThis.cancelAnimationFrame(q$1):globalThis.clearTimeout(q$1),q$1=void 0,te.clear());}function Te(){Ae(ke);}function He(){let e=m$1.value;if(e===null)return;let r=e.getBoundingClientRect(),s=o(T(),{top:r.top,bottom:r.bottom});s!==void 0&&(k=s,ye(e));}function Le(){return G&&H===void 0&&!ee&&!t.loadingOlder}function Ge(){He(),G=false,ce=X,ee=true,a("reach-start"),Ae(()=>{t.loadingOlder||(ee=false);});}function ze(e){return t.hasNewer&&!j$1&&!t.loadingOlder&&!t.loadingNewer&&F(e)}function Ye(){j$1=true,f.value=false,oe=X,a("reach-end"),Ae(()=>{t.loadingNewer||(j$1=false);});}function Ve(){let e=m$1.value;e===null||X===oe||!ze(e)||Ye();}function Q(){let e=m$1.value;if(D||e===null)return;let r=e.scrollTop,s=Ee(e),h=W,M=false;if(h!==void 0){let x=Math.abs(r-h.targetTop)<=dt(e);M=h.behavior==="smooth"||x,(h.behavior!=="smooth"||x)&&(W=void 0);}!M&&!s&&!K&&H===void 0&&r!==i&&(K=true,V=true,X+=1);let U=K&&!M&&!s&&r!==i;if(U&&(a("user-scroll"),Ae(z$1)),K&&!ne&&ve(),!G&&V&&X!==ce&&r<i&&r>Ke()&&(G=true),H!==void 0&&!M)if(K){let x=Ce();x!==void 0&&(H.expectedOffset=x);}else Ie(),je();Le()&&U&&r>=0&&m({previousScrollTop:i,currentScrollTop:r,topThreshold:t.olderPrefetchThreshold})&&Ge(),U&&ze(e)&&z({previousScrollTop:i,currentScrollTop:r,isAtBottom:F(e),isHistoryWindow:t.hasNewer,isPageSettling:M})&&Ye(),i=r,Te();}function De(e,r="auto"){W={targetTop:e,behavior:r};}function $e(e){let r=H,s=C$1.value;if(!(r===void 0||s===null)){if(r.visualOffset=Math.abs(e)<=Be?0:e,r.visualOffset===0){s.style.removeProperty("transform"),s.style.removeProperty("will-change");return}s.style.setProperty("transform",`translate3d(0, ${r.visualOffset}px, 0)`),s.style.setProperty("will-change","transform");}}function be(){N!==void 0&&(clearTimeout(N),N=void 0),H!==void 0&&H.visualOffset!==0&&(k=void 0,E=void 0);let e=C$1.value;e?.style.removeProperty("transform"),e?.style.removeProperty("will-change"),H=void 0,W=void 0;}function Ce(){let e=m$1.value,r=H;if(e===null||r===void 0)return;let s=T().find(h=>h.id===r.anchor.id);if(s!==void 0)return (s.anchorTop??s.top)-e.getBoundingClientRect().top}function Ie(){let e=H,r=Ce();if(e===void 0||r===void 0)return;let s=e.expectedOffset-r;Math.abs(s)<=Be||($e(e.visualOffset+s),e.committed=false,e.attempts=0);}function Xe(){N!==void 0&&clearTimeout(N),N=setTimeout(()=>{N=void 0,!(K||H?.committed!==true)&&be();},fn);}function ue(){let e=m$1.value,r=H;if(D||e===null||r===void 0||K)return;let s=r.visualOffset;if(Math.abs(s)<=Be){r.committed=true,Xe();return}let h=Math.max(0,e.scrollHeight-e.clientHeight),M=Math.min(h,Math.max(0,e.scrollTop-s));if(De(M),e.scrollTop=M,Math.abs(e.scrollTop-M)>Be){W=void 0,r.committed=false,r.attempts+=1,r.attempts<mn?je():(be(),W=void 0,i=e.scrollTop);return}$e(0),i=e.scrollTop,r.expectedOffset=Ce()??r.expectedOffset,r.committed=true,r.attempts=0,Xe();}function je(){N!==void 0&&clearTimeout(N),N=setTimeout(()=>{N=void 0,ue();},Bt);}function we(e){e!==void 0&&(H===void 0&&(H={anchor:e,expectedOffset:e.offset,visualOffset:0,committed:false,attempts:0}),Ie(),!K&&ue());}function xe(e){let r=m$1.value;if(r===null||e===void 0)return;let s=r.getBoundingClientRect(),h=q(e,T(),{top:s.top,bottom:s.bottom});if(h!==void 0){let M=Math.max(0,r.scrollHeight-r.clientHeight),U=Math.min(M,Math.max(0,r.scrollTop+h));De(U),r.scrollTop=U,i=r.scrollTop,E=void 0;}}function Ke(){return Number.isFinite(t.olderPrefetchThreshold)?Math.max(0,t.olderPrefetchThreshold):0}function Me(){W?.behavior==="smooth"&&(W=void 0),V=false,K||(K=true,X+=1),o$1!==void 0&&(clearTimeout(o$1),o$1=void 0);}function se(){let e=m$1.value;e===null||X===ce||(H!==void 0&&be(),G=true,e.scrollTop<=Ke()&&Le()&&Ge());}function Re(){k=void 0,E=void 0,o$1!==void 0&&(clearTimeout(o$1),o$1=void 0),be(),K=false,V=false,ne=false,J=void 0,ae=void 0,X+=1,ce=-1,oe=-1,G=true,ee=false,j$1=false,W=void 0;}function Je(){ne||(o$1!==void 0&&(clearTimeout(o$1),o$1=void 0),K=false,V=false,H!==void 0&&(H.attempts=0),ue());}function ve(){ne||(o$1!==void 0&&clearTimeout(o$1),o$1=setTimeout(()=>{o$1=void 0,Je();},Bt));}function n(){W=void 0,Je();}function d(e){ne=true,Me(),J=e.touches?.[0]?.clientY;}function l(e){let r=e.touches?.[0]?.clientY;r!==void 0&&(J!==void 0&&r>J?se():J!==void 0&&r<J&&Ve(),J=r);}function g$1(){ne=false,J=void 0,ve();}function v(e){Me(),e.deltaY<0?se():e.deltaY>0&&Ve(),ve();}function R(e){e.pointerType!=="touch"&&(Me(),ae=e.clientY,ve());}function Y(e){e.pointerType==="touch"||!K||ae===void 0||(e.clientY<ae?se():e.clientY>ae&&Ve(),ae=e.clientY,ve());}function ie(e){e.pointerType!=="touch"&&(ae=void 0,ve());}function he(e){["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(e.key)&&(Me(),e.key==="ArrowUp"||e.key==="PageUp"||e.key==="Home"||e.key===" "&&e.shiftKey?se():Ve(),ve());}function le(e="auto"){let r=m$1.value;if(r===null)return;E=void 0,be();let s=Math.max(0,r.scrollHeight-r.clientHeight);De(s,e),r.scrollTo?.({top:s,behavior:e}),r.scrollTop!==s&&(r.scrollTop=s),i=r.scrollTop,u.clear(),L=false,ke();}function Ne(){let e=m$1.value;return e!==null&&e.clientWidth>0&&e.clientHeight>0}function nt(){let e=m$1.value;return Ne()&&e!==null&&e.scrollHeight>e.clientHeight+1}function _t(e,r={}){return ht(_.get(e),r)}function ht(e,r){let s=m$1.value;if(s===null||e===void 0||!s.contains(e)||s.clientHeight<=0)return false;be();let h=s.getBoundingClientRect(),M=e.getBoundingClientRect(),U=r.block??"center",x;U==="start"?x=s.scrollTop+M.top-h.top:U==="end"?x=s.scrollTop+M.bottom-h.bottom:U==="nearest"?M.top>=h.top&&M.bottom<=h.bottom?x=s.scrollTop:M.top<h.top?x=s.scrollTop+M.top-h.top:x=s.scrollTop+M.bottom-h.bottom:x=j({currentScrollTop:s.scrollTop,scrollHeight:s.scrollHeight,targetHeight:M.height,targetTop:M.top,viewportHeight:s.clientHeight,viewportTop:h.top});let fe=Math.max(0,s.scrollHeight-s.clientHeight),Se=Math.min(fe,Math.max(0,x));E=void 0;let Fe=r.behavior??"auto";return De(Se,Fe),s.scrollTo?.({top:Se,behavior:Fe}),s.scrollTop!==Se&&(s.scrollTop=Se),i=s.scrollTop,L=false,ke(),true}function jt(){let e=m$1.value;if(e===null||p$1===void 0||!e.contains(p$1)||e.clientHeight<=0)return null;let r=p$1.getBoundingClientRect(),s=e.scrollTop+r.top-e.getBoundingClientRect().top+r.height/2,h=e.clientHeight/2;return {older:s<h-1,newer:e.scrollHeight-s<h-1}}function Kt(){u.clear();}function qt(){j$1=true,f.value=false;}function Wt(){j$1=false,Te();}function Gt(e,r){let s=_.get(e);if(s!==void 0&&s!==r&&(B$1?.unobserve(s),P?.unobserve?.(s),S.delete(s),I.delete(e)),r===null){_.delete(e),I.delete(e);return}_.set(e,r),S.set(r,e),B$1?.observe(r),P?.observe(r),Te();}function zt(e,r,s){let h=O.get(e);if(s===null){O.delete(e);return}O.set(e,{element:s,label:r}),$===e&&s.style.setProperty("opacity",String(Z)),h?.element!==s&&(s.dataset.imThreadDateSeparator=e);}return provide(st,{registerMessageNode:Gt,registerDateNode:zt,registerEntryUnreadNode:e=>{p$1=e??void 0;}}),watch(()=>t.contentKey,(e,r)=>{if(e===r)return;Re();let s=m$1.value;s!==null&&(i=s.scrollTop);},{flush:"sync"}),watch(()=>t.messageIds,async(e,r)=>{let s=m$1.value;if(s===null)return;let h=new Set(r);r.length>0&&e.length>0&&!e.some(Oe=>h.has(Oe))&&Re();let U=s.getBoundingClientRect(),x=p(k,T(),{top:U.top,bottom:U.bottom}),fe=f.value,Se=r[r.length-1],Fe=Se===void 0?-1:e.indexOf(Se),rt=Fe<0?[]:e.slice(Fe+1).filter(Oe=>!h.has(Oe)),pt=j$1||t.loadingNewer,Yt=e.length===r.length&&e.every(Oe=>h.has(Oe))&&e.some((Oe,ot)=>Oe!==r[ot]);if(await nextTick(),D)return;if(Yt&&fe&&t.followNewMessages&&t.resizeFollowEnabled&&!t.hasNewer&&!pt){le();return}let yt=r[0];if(yt!==void 0&&e.indexOf(yt)>0&&(ee=false,we(x)),rt.length>0){if(pt){j$1=false,H===void 0&&xe(x),f.value=false,Te();return}(fe||rt.some(ot=>t.shouldFollowAppendedMessage?.(ot)===true))&&t.followNewMessages?le():u.add(rt);}Te();},{flush:"pre"}),watch(()=>t.loadingNewer,(e,r)=>{e||!r||!j$1||Ae(()=>{t.loadingNewer||(j$1=false);});},{flush:"pre"}),watch(()=>t.loadingOlder,(e,r)=>{e||!r||!ee||Ae(()=>{t.loadingOlder||(ee=false);});},{flush:"pre"}),onMounted(()=>{let e=m$1.value;if(e!==null){if(i=e.scrollTop,e.addEventListener("scroll",Q,{passive:true}),e.addEventListener("scrollend",n,{passive:true}),e.addEventListener("touchstart",d,{passive:true}),e.addEventListener("touchmove",l,{passive:true}),e.addEventListener("touchend",g$1,{passive:true}),e.addEventListener("touchcancel",g$1,{passive:true}),e.addEventListener("wheel",v,{passive:true}),e.addEventListener("pointerdown",R,{passive:true}),e.addEventListener("pointermove",Y,{passive:true}),e.addEventListener("pointerup",ie,{passive:true}),e.addEventListener("pointercancel",ie,{passive:true}),e.addEventListener("keydown",he),typeof globalThis.ResizeObserver=="function"){P=new globalThis.ResizeObserver(()=>{D||m$1.value===null||ke();}),P.observe(e),C$1.value!==null&&P.observe(C$1.value);for(let r of _.values())P.observe(r);}if(typeof globalThis.IntersectionObserver=="function"){B$1=new globalThis.IntersectionObserver(r=>{for(let s of r){let h=S.get(s.target);h!==void 0&&(s.isIntersecting?I.add(h):I.delete(h));}L=true,Te();},{root:e,rootMargin:`${Number.isFinite(t.visibleMargin)?Math.max(0,t.visibleMargin):0}px 0px`});for(let r of _.values())B$1.observe(r);}Te();}}),onBeforeUnmount(()=>{D=true;let e=m$1.value;e!==null&&e.removeEventListener("scroll",Q),e!==null&&(e.removeEventListener("scrollend",n),e.removeEventListener("touchstart",d),e.removeEventListener("touchmove",l),e.removeEventListener("touchend",g$1),e.removeEventListener("touchcancel",g$1),e.removeEventListener("wheel",v),e.removeEventListener("pointerdown",R),e.removeEventListener("pointermove",Y),e.removeEventListener("pointerup",ie),e.removeEventListener("pointercancel",ie),e.removeEventListener("keydown",he)),o$1!==void 0&&clearTimeout(o$1),be(),We(),P?.disconnect(),B$1?.disconnect(),A(),p$1=void 0,_.clear(),S.clear(),I.clear(),O.clear(),u.clear();}),b({getViewportElement:()=>m$1.value,clearNewMessageBadge:Kt,clearActiveDate:A,isAtBottom:computed(()=>f.value),isMeasurable:Ne,isScrollable:nt,newMessageCount:computed(()=>w.value),prepareHistoryPageAppend:qt,cancelHistoryPageAppend:Wt,trackRemoteMessageIds:(e,r)=>u.trackRemote(e,r),scrollToLatest:le,scrollToMessage:_t,scrollToEntryUnread:()=>ht(p$1,{block:"center",behavior:"auto"}),getEntryUnreadCenteringNeeds:jt,focusViewport:()=>m$1.value?.focus({preventScroll:true})}),()=>h$1("div",{ref:m$1,"data-im-thread-viewport":"",role:"log",tabindex:-1},[h$1("div",{ref:C$1,"data-im-thread-viewport-content":""},c.default?.())])}});var Ut=Symbol("ImThreadSurfaceContext");function hn(t){if(typeof t.getState!="function")throw new TypeError("ImThreadSurfaceContext.getState \u5FC5\u987B\u662F\u51FD\u6570");if(typeof t.actions?.loadOlder!="function")throw new TypeError("ImThreadSurfaceContext.actions.loadOlder \u5FC5\u987B\u662F\u51FD\u6570");if(typeof t.formatDate!="function")throw new TypeError("ImThreadSurfaceContext.formatDate \u5FC5\u987B\u662F\u51FD\u6570");return Object.freeze({...t,actions:Object.freeze({...t.actions})})}function pn(t){provide(Ut,t);}function ct(){let t=inject(Ut);if(t===void 0)throw new Error("ImThreadSurface \u9700\u8981\u663E\u5F0F context prop \u6216 provideImThreadSurfaceContext");return t}var ft=Object.freeze({followThreshold:120,olderPrefetchThreshold:120,visibleReadDelay:300,visibleMargin:8,activeDateOffset:16,activeDateIdleDelay:1500}),mt=Object.freeze({enabled:true,maxFillPages:8}),bn=8,In=160;function wn(t,a){return t?.conversationType===a.conversationType&&t.conversationId===a.conversationId}var Mn=defineComponent({name:"ImThreadSurface",props:{conversation:{type:Object,required:true},context:{type:Object,default:void 0},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0},viewportOptions:{type:Object,default:()=>({})},initialViewportOptions:{type:Object,default:()=>({})},hooks:{type:Object,default:void 0}},setup(t,{expose:a,slots:b}){let c=t.context??ct(),m=ref(null),C=ref(0),_=ref(false),p=ref(false),S=ref(false),I,O,i$1=ref(false),y=ref(false),k=ref(false),E=false,P,B=ref(true),L=[],q,te=0,D=0,W,$=null,Z="",j="",ee="",G=false,K=false,V=ref(false),ne=ref(""),X=ref(false),ce,oe,o=computed(()=>c.getState()),J=computed(()=>!!o.value.pendingLocationMessageId),ae=computed(()=>o.value.pageVisible??c.isPageVisible?.()??true),H=computed(()=>o.value.pageEngaged??c.isPageEngaged?.()??true),N=computed(()=>wn(o.value.activeConversation,t.conversation)),f=computed(()=>({...ft,...t.viewportOptions})),w=computed(()=>{let n=t.initialViewportOptions.maxFillPages??mt.maxFillPages;return {enabled:t.initialViewportOptions.enabled??mt.enabled,maxFillPages:Number.isFinite(n)?Math.max(0,Math.floor(n)):mt.maxFillPages}}),u=computed(()=>!N.value||!o.value.ready?"":`${t.conversation.conversationType}\0${t.conversation.conversationId}`),F=computed(()=>N.value?i({messages:o.value.messages,entryUnread:o.value.entryUnread,formatDate:c.formatDate,leadingItems:c.leadingItems?.(),beforeMessageItems:c.beforeMessageItems}):[]),T=computed(()=>F.value.flatMap(n=>n.kind==="message"||n.kind==="system"?[n.message.id]:[]));function re(){ce!==void 0&&(clearTimeout(ce),ce=void 0),oe!==void 0&&(clearTimeout(oe),oe=void 0);}function A(n=false){if(re(),X.value=false,n){m.value?.clearActiveDate(),ne.value="";return}oe=setTimeout(()=>{oe=void 0,!X.value&&(m.value?.clearActiveDate(),ne.value="");},In);}function z(n){if(n===null){A();return}re(),ne.value=n.label,X.value=true;let d=f.value.activeDateIdleDelay,l=Number.isFinite(d)?Math.max(0,d):ft.activeDateIdleDelay;ce=setTimeout(()=>{ce=void 0,A();},l);}async function ye(n,d,l){t.hooks?.beforeAction?.(n);try{let g=await d();return l?.()!==!1&&t.hooks?.afterAction?.(n,g),g}catch(g){throw l?.()!==false&&t.hooks?.onError?.(n,g),g}}function Ee(n="automatic",d){return !N.value||o.value.loading||!o.value.hasOlder?Promise.resolve(0):ye({kind:"load-older",source:n},()=>c.actions.loadOlder(),d)}function Ue(){return _e()}function _e(n){let d=c.actions.loadNewer,l=o.value.loadingNewer??o.value.loading;return !N.value||l||!o.value.hasNewer||d===void 0?Promise.resolve(0):ye({kind:"load-newer"},()=>d(),n)}async function qe(n){for(let d=0;d<bn;d+=1){if(!N.value||S.value||p.value||J.value)return;let l=n==="older"?o.value.hasOlder:o.value.hasNewer,g=n==="older"?o.value.olderError:o.value.newerError;if(!l||g!==null||(n==="older"?await Ee("user-scroll"):await Ue())>0)return;let R=n==="older"?o.value.hasOlder:o.value.hasNewer,Y=n==="older"?o.value.olderError:o.value.newerError;if(!R||Y!==null)return}}async function ke(){return !N.value||c.actions.loadNewer===void 0?0:We({kind:"load-newer"},()=>c.actions.retryNewer?.()??c.actions.loadNewer?.({force:true})??Promise.resolve(0))}async function Ae(){return N.value?We({kind:"retry-older"},()=>c.actions.retryOlder?.()??c.actions.loadOlder({force:true})):0}async function We(n,d){let l=u.value,g=++te;$=null,ee="";let v;try{v=await ye(n,d);}catch(R){throw ue(l,g)&&(ee=l),R}return ue(l,g)&&!V.value&&($=null,Me()),v}async function Te(){if(!N.value)return false;let n=u.value;Re();let d=++D;return S.value=false,se(true),G=true,Z=n,j=xe(we()),!await ye({kind:"jump-to-latest"},()=>c.actions.jumpToLatest?.()??Promise.resolve(!o.value.isHistoryWindow),()=>Q(n,d))||!Q(n,d)||(await nextTick(),!Q(n,d))?false:(m.value?.scrollToLatest(),_.value=true,k.value=false,Le(),true)}function He(n=false){let d=m.value,l=d?.getViewportElement();y.value=d?.isScrollable()===true;let g=o.value.entryUnreadNavigation;i$1.value=g?.state==="located"&&L.includes(g.firstMessageId),V.value&&i$1.value&&(_.value=true);let v=l==null?0:Math.max(0,l.scrollHeight-l.clientHeight-l.scrollTop);k.value=g!==void 0&&v>50,n&&g!==void 0&&l!==null&&l!==void 0&&l.clientHeight>0&&v>=l.clientHeight&&(_.value=true);}function Le(){let n=c.actions.markConversationRead;if(n===void 0||!H.value||!N.value||!V.value||p.value||E&&(!B.value||o.value.hasNewer)||P!==void 0||o.value.error!==null)return;let d=u.value,l=n().then(()=>{P===l&&d===u.value&&(E=true);}).catch(g=>{!K&&P===l&&d===u.value&&t.hooks?.onError?.({kind:"mark-conversation-read"},g);}).finally(()=>{P===l&&(P=void 0);});P=l;}async function Ge(){let n=c.actions.loadEntryUnread;if(!N.value||p.value||n===void 0)return "cancelled";let d=u.value,l=++D;S.value=false;let g=new AbortController;O=g,I=l,p.value=true,se(true),G=true;try{let v=await ye({kind:"jump-to-entry-unread"},()=>n({signal:g.signal}),()=>Q(d,l));if(!Q(d,l))return "cancelled";if(!v||o.value.entryUnread.state!=="located")return "unavailable";let Y=await ze(d,l);return Y&&(_.value=!0),Y?"located":Q(d,l)?"unavailable":"cancelled"}catch(v){if(!Q(d,l))return "cancelled";throw v}finally{I===l&&(I=void 0,O=void 0,p.value=false);}}async function ze(n,d){await nextTick();for(let l=0;l<60;l+=1){if(!Q(n,d))return false;if(m.value?.scrollToEntryUnread())return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(g=>window.requestAnimationFrame(()=>g()));}return false}function Ye(n){B.value=n.isAtBottom,C.value=n.newMessageCount,He(),Me();}function Ve(n,d){return m.value?.scrollToMessage(n,d)??false}function Q(n,d){return !K&&D===d&&u.value===n&&N.value}async function De(n,d,l,g){for(let v=0;v<60;v+=1){if(!Q(n,d))return false;if(Ve(l,g))return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(R=>window.requestAnimationFrame(()=>R()));}return false}async function $e(n,d){let l=m.value;if(l===null||!l.isMeasurable()||l.isScrollable())return true;let g=0,v=!o.value.hasOlder,R=!o.value.hasNewer||c.actions.loadNewer===void 0,Y=()=>Q(n,d),ie=async le=>{if(!Q(n,d)||g>=w.value.maxFillPages)return false;let Ne=0;if(le==="older"){if(v||!o.value.hasOlder)return false;Ne=await Ee("automatic",Y),v=!o.value.hasOlder;}else {if(R||!o.value.hasNewer)return false;l.prepareHistoryPageAppend();try{Ne=await _e(Y);}catch(nt){throw Y()&&l.cancelHistoryPageAppend(),nt}Y()&&Ne<=0&&!o.value.hasNewer&&l.cancelHistoryPageAppend(),R=!o.value.hasNewer;}return g+=1,await nextTick(),await nextTick(),Q(n,d)&&(Ne>0||!(le==="older"?v:R))};!v&&!await ie("older")&&(v=true),!R&&!await ie("newer")&&(R=true);let he="older";for(;Q(n,d)&&g<w.value.maxFillPages&&l.isMeasurable()&&!l.isScrollable()&&(!v||!R);){let le=he==="older"?v?"newer":"older":R?"older":"newer";he=le==="older"?"newer":"older",await ie(le)||(le==="older"?v=true:R=true);}return Q(n,d)}async function be(n,d={behavior:"auto",block:"center"}){if(!N.value||n==="")return false;let l=u.value;Re();let g=S.value||W!==void 0||(o.value.loadingOlder??o.value.loading)||(o.value.loadingNewer??o.value.loading),v=++D;S.value=true,se(true),G=true,Z=l,j=xe(we());let R=()=>Q(l,v);try{if(g||!T.value.includes(n)){let Y=c.actions.loadAround;if(Y===void 0)return !1;let ie={};W=ie;try{if(!await ye({kind:"locate-message",messageId:n},()=>Y(n),R)||!R())return !1}finally{W===ie&&(W=void 0);}}return await nextTick(),await nextTick(),!R()||!await $e(l,v)?!1:await De(l,v,n,d)}finally{D===v&&(S.value=false);}}function Ce(){q!==void 0&&(clearTimeout(q),q=void 0);}function Ie(){if(Ce(),!V.value)return;let n=t.readActions;if(n===void 0&&c.actions.markVisibleMessages===void 0)return;let d=Number.isFinite(f.value.visibleReadDelay)?Math.max(0,f.value.visibleReadDelay):ft.visibleReadDelay;q=setTimeout(()=>{if(q=void 0,!N.value||!H.value)return;Le();let l=c.actions.markVisibleMessages;if(l!==void 0){let R=L;l(R).catch(Y=>{t.hooks?.onError?.({kind:"visible-range",messageIds:R},Y);});return}if(n===void 0)return;let g=L[L.length-1];if(g===void 0)return;let v=n.resolveTarget===void 0?g:n.resolveTarget(g);v!=null&&Promise.resolve(n.markRead(v)).catch(R=>{t.hooks?.onError?.({kind:"visible-range",messageIds:L},R);});},d);}function Xe(n){L=Object.freeze([...n]),He();let d={kind:"visible-range",messageIds:L};t.hooks?.beforeAction?.(d);try{c.actions.onVisibleRange?.(L),t.hooks?.afterAction?.(d,void 0);}catch(l){throw t.hooks?.onError?.(d,l),l}V.value?Ie():Me();}function ue(n,d){return !K&&te===d&&u.value===n&&!G&&!J.value}function je(n,d){ue(n,d)&&(Z=n,j=xe(we()),V.value=true,He(),Le(),Ie());}function we(){return o.value.entryUnreadNavigation===void 0?o.value.entryUnread:{state:"none"}}function xe(n){return n.state!=="located"?n.state:`${n.state}:${n.firstMessageId}`}async function Ke(n,d,l){for(let g=0;g<60;g+=1){if(!ue(n,d))return false;if(m.value?.scrollToMessage(l,{behavior:"auto",block:"center"})===true)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(R=>window.requestAnimationFrame(()=>R()));}return false}function Me(){let n=u.value,d=xe(we());if(n===""||o.value.loading||S.value||J.value||o.value.error!==null&&o.value.messages.length===0||Z===n&&(j===d||j.startsWith("located:")||G)||ee===n||$!==null)return;if(!w.value.enabled){Z=n,j=d,V.value=true,Ie();return}let l=++te;G=false,V.value=false;let g=(async()=>{if(await nextTick(),!ue(n,l))return;let v=m.value;if(v===null||!v.isMeasurable())return;let R=we();if(R.state==="located"&&!T.value.includes(R.firstMessageId))return;let Y=R.state==="located"?await Ke(n,l,R.firstMessageId):false;if(R.state==="located"&&!Y)return;Y||v.scrollToLatest();let ie=0;for(;ue(n,l)&&ie<w.value.maxFillPages&&o.value.error===null&&(o.value.hasOlder||o.value.hasNewer&&c.actions.loadNewer!==void 0)&&v.isMeasurable()&&!v.isScrollable();){if(o.value.hasNewer&&c.actions.loadNewer!==void 0&&(o.value.messages.length===0||!o.value.hasOlder)){let le=D;v.prepareHistoryPageAppend();try{await Ue(),await nextTick();}finally{u.value===n&&D===le&&(te===l||G)&&v.cancelHistoryPageAppend();}}else await Ee();if(!ue(n,l)||(ie+=1,await nextTick(),await nextTick(),!v.isMeasurable()))return}if(!ue(n,l)||!v.isMeasurable())return;let he=we();if(he.state==="located"){if(!T.value.includes(he.firstMessageId)||!await Ke(n,l,he.firstMessageId))return}else v.scrollToLatest();await nextTick(),je(n,l);})().catch(()=>{ue(n,l)&&(ee=n);}).finally(()=>{$===g&&($=null);});$=g;}function se(n,d=false){te+=1,$=null,G=false,V.value=n,n||(Z="",j="",d||(ee="")),Ce();}function Re(){O!==void 0&&(D+=1,O.abort(),O=void 0,I=void 0,p.value=false);}function Je(){if(He(true),Re(),G=true,V.value)return;let n=u.value;te+=1,$=null,Z=n,V.value=true,Ie();}let ve=Object.freeze({getViewportElement:()=>m.value?.getViewportElement()??null,loadOlder:Ee,retryOlder:Ae,loadNewer:Ue,retryNewer:ke,jumpToLatest:Te,jumpToEntryUnread:Ge,scrollToMessage:Ve,locateMessage:be,focusViewport:()=>m.value?.focusViewport()});return a(ve),watch(H,n=>{n&&V.value?Ie():Ce();}),watch([()=>o.value.activeRemoteMessageRevision??0,m,u],()=>{let n=m.value;if(n===null||!N.value)return;let d=c.actions.drainActiveRemoteMessageIds?.()??[];n.trackRemoteMessageIds(d,{isAtBottom:B.value,isHistoryWindow:o.value.isHistoryWindow,isPageVisible:ae.value})&&(B.value=false);},{flush:"post"}),watch(()=>o.value.pendingLocationMessageId??"",n=>{(n!==""||S.value)&&(D+=1,S.value=false),n!==""&&(Re(),V.value||se(false));},{flush:"sync"}),watch([u,()=>o.value.loading,()=>o.value.error,()=>T.value.length,()=>o.value.hasOlder,()=>xe(we()),w,()=>o.value.hasNewer,J],([n,d,l,g,,v],[R,,,Y,,ie])=>{if(n!==R&&(Re(),D+=1,S.value=false,W=void 0,se(false),A(true),m.value?.clearNewMessageBadge(),C.value=0,B.value=true,L=[],_.value=false,i$1.value=false,y.value=false,k.value=false,p.value=false,I=void 0,E=false,P=void 0),n!==""&&n===R&&Y!==void 0&&Y>0&&g===0&&(o.value.hasOlder||o.value.hasNewer)&&V.value&&se(false,true),n!==""&&n===R&&v!==ie&&!j.startsWith("located:")&&!G&&v.startsWith("located:")&&(Z="",j="",V.value=false),n===""){se(false);return}if(l!==null&&o.value.messages.length===0){V.value||se(false,true);return}d||Me();},{flush:"post",immediate:true}),onBeforeUnmount(()=>{K=true,Re(),D+=1,se(false),A(true);}),()=>{let n={conversation:t.conversation,state:o.value,items:F.value,actions:ve,initialViewportSettled:u.value!==""&&(o.value.messages.length===0?!o.value.loading&&o.value.error===null&&!o.value.hasOlder&&!o.value.hasNewer:V.value&&Z===u.value)},d=[b.header?.(n),b["before-list"]?.(n)];if(!N.value)d.push(b.unsupported?.(n)??h$1("div",{"data-im-thread-unsupported":""}));else if(!o.value.ready&&o.value.loading)d.push(b.loading?.(n)??h$1("div",{"data-im-thread-loading":""}));else if(o.value.error!==null&&o.value.messages.length===0)d.push(b.error?.(n)??h$1("div",{"data-im-thread-error":""}));else if(o.value.ready&&o.value.messages.length===0&&!o.value.hasOlder&&!o.value.hasNewer)d.push(b.empty?.(n)??h$1("div",{"data-im-thread-empty":""}));else {let l=h$1(ut,{ref:m,messageIds:T.value,contentKey:`${t.conversation.conversationType}\0${t.conversation.conversationId}`,loadingOlder:o.value.loadingOlder??o.value.loading,hasNewer:o.value.hasNewer,loadingNewer:o.value.loadingNewer??o.value.loading,followThreshold:f.value.followThreshold,olderPrefetchThreshold:f.value.olderPrefetchThreshold,visibleMargin:f.value.visibleMargin,activeDateOffset:f.value.activeDateOffset,activeDateEnabled:b["active-date"]!==void 0,resizeFollowEnabled:V.value&&!p.value&&!S.value&&!J.value,followNewMessages:ae.value&&!p.value&&!S.value&&!J.value,shouldFollowAppendedMessage:g=>{let v=o.value.messages.find(R=>R.id===g);return v===void 0?false:c.shouldFollowMessage?.(v)===true},onReachStart:()=>{qe("older").catch(()=>{});},onReachEnd:()=>{qe("newer").catch(()=>{});},onSettled:Ye,onUserScroll:Je,onActiveDateChange:z,onVisibleRange:Xe,onNewMessageCount:g=>{C.value=g;}},{default:()=>[b["viewport-before"]?.(n),h$1(lt,{items:F.value,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{item:b.item,"date-separator":b["date-separator"],"entry-unread":b["entry-unread"],encryption:b.encryption,system:b.system,message:b.message,"recalled-message":b["recalled-message"],"deleted-message":b["deleted-message"],"unsupported-body":b["unsupported-body"]}),b["viewport-after"]?.(n)]});d.push(h$1("div",{"data-im-thread-viewport-shell":""},[b["active-date"]?.({label:ne.value,visible:X.value&&ne.value!==""}),l,b["entry-unread-navigation"]?.({...n,count:o.value.entryUnreadNavigation?.state==="none"?0:o.value.entryUnreadNavigation?.count??0,loading:p.value,visible:n.initialViewportSettled&&!_.value&&!i$1.value&&!o.value.isHistoryWindow&&o.value.entryUnreadNavigation!==void 0&&o.value.entryUnreadNavigation.state!=="none"&&o.value.entryUnreadNavigation.count>0&&(y.value||o.value.hasOlder)})])),o.value.error!==null&&d.push(b.error?.(n)??h$1("div",{"data-im-thread-error":""}));}return d.push(b["after-list"]?.(n),b["jump-to-latest"]?.({...n,count:C.value,visible:k.value||!B.value||o.value.isHistoryWindow}),b["context-menu"]?.(n),b.composer?.(n)),h$1("section",{"data-im-thread-surface":"","data-conversation-type":t.conversation.conversationType,"data-conversation-id":t.conversation.conversationId},d)}}});function Rn(t){let a=new Map;for(let c of t){if(a.has(c.kind))throw new Error(`\u6D88\u606F renderer kind \u91CD\u590D\u6CE8\u518C\uFF1A${c.kind}`);a.set(c.kind,c.component);}let b=Object.freeze([...a.keys()]);return Object.freeze({kinds:b,resolve:c=>a.get(c)})}var Pn=140,En=120;function tt(t,a){if(t.width<=0||t.height<=0)return 0;let b=Math.max(0,Math.min(t.right,a.right)-Math.max(t.left,a.left)),c=Math.max(0,Math.min(t.bottom,a.bottom)-Math.max(t.top,a.top));return Math.min(1,b*c/(t.width*t.height))}function gt(t,a){return {x:t.x,y:t.top-a,top:t.top-a,bottom:t.bottom+a,left:t.left,right:t.right,width:t.width,height:t.height+a*2,toJSON:()=>({})}}function vt(t){let a=Math.max(0,t.scrollIdleMs??Pn),b=Math.max(0,t.visibilityDwellMs??En),c=Math.min(1,Math.max(0,t.minimumIntersectionRatio??.01)),m=Math.max(0,t.revealMarginPx??0),C=Math.max(0,t.preloadMarginPx??0),_=Math.max(m,C),p=Math.max(0,t.maxPreloadTargets??Number.POSITIVE_INFINITY),S=Math.max(1,t.maxSettledVisible??Number.POSITIVE_INFINITY),I=new Map,O=new Map,i=reactive(new Set),y=new Set,k=new Set,E=[],P=null,B=null,L=null,q=false,te=false,D=false,W=false,$,Z;function j(){$!==void 0&&clearTimeout($),$=void 0;}function ee(){Z!==void 0&&clearTimeout(Z),Z=void 0;}function G(f=false){if(!f&&B!==null||P===null)return;let w=P.getBoundingClientRect(),u=gt(w,_);for(let[F,T]of I){let re=F.getBoundingClientRect();T.ratio=tt(re,w),T.intersecting=T.ratio>0,T.revealIntersecting=_>0?tt(re,u)>0:T.intersecting&&T.ratio>=c;}}function K(f){return f.intersecting&&f.ratio>=c}function V(){for(let[f,w]of I)!w.revealIntersecting||i.has(w.key)||_>m&&(m===0&&!K(w)||m>0&&(P===null||tt(f.getBoundingClientRect(),gt(P.getBoundingClientRect(),m))<=0))||(i.add(w.key),t.onRevealed?.(w.item));}function ne(f,w=false){let u=new Set(f.map(T=>T.key));if(!(!(u.size!==k.size||[...u].some(T=>!k.has(T)))&&!w)){k.clear();for(let T of u)k.add(T);t.onSettledVisibleChange?.(f.map(T=>T.item));}}function X(f,w=false){!w&&f.length===E.length&&f.every((u,F)=>u.key===E[F]?.key&&u.item===E[F]?.item)||(E=f,t.onSettledPreloadChange?.(f.map(u=>u.item)));}function ce(){if(D||q)return;let f=te;te=false,G(),V();let w=P?.getBoundingClientRect(),u=w===void 0?0:(w.top+w.bottom)/2,F=[...I.entries()].filter(([,T])=>K(T)).sort(([T],[re])=>{let A=T.getBoundingClientRect(),z=re.getBoundingClientRect();return Math.abs((A.top+A.bottom)/2-u)-Math.abs((z.top+z.bottom)/2-u)}).slice(0,S).map(([,T])=>T);if(ne(F,f),t.onSettledPreloadChange!==void 0&&w!==void 0){let T=gt(w,C),re=[...I.entries()].filter(([,A])=>A.revealIntersecting).map(([A,z])=>({target:z,rect:A.getBoundingClientRect()})).filter(({target:A,rect:z})=>K(A)||C>0&&tt(z,T)>0).sort((A,z)=>Number(K(z.target))-Number(K(A.target))||Math.abs((A.rect.top+A.rect.bottom)/2-u)-Math.abs((z.rect.top+z.rect.bottom)/2-u)).slice(0,p).map(({target:A})=>A);X(re,f);}for(let T of F)y.has(T.key)||(y.add(T.key),t.onActivated?.(T.item));}function oe(){D||q||(ee(),Z=setTimeout(()=>{Z=void 0,ce();},b));}function o(){D||(te=true,J(true),X([]),G(),V(),ne([]),ee(),j(),$=setTimeout(()=>{$=void 0,J(false),oe();},a));}function J(f){q!==f&&(q=f,t.onScrollingChange?.(f));}function ae(){P?.removeEventListener("scroll",o),B?.disconnect(),L?.disconnect(),B=null,L=null,P=null;}function H(f=true){if(D)return;let w=t.getRoot();if(!(w===P&&P!==null)){if(X([]),ae(),P=w,P===null){f&&!W&&(W=true,Promise.resolve().then(()=>{W=false,D||(H(false),oe());}));return}if(P.addEventListener("scroll",o,{passive:true}),typeof IntersectionObserver<"u"){B=new IntersectionObserver(u=>{for(let F of u){let T=I.get(F.target);T!==void 0&&(T.intersecting=F.isIntersecting,T.ratio=F.intersectionRatio,_===0&&(T.revealIntersecting=F.isIntersecting&&F.intersectionRatio>=c));}V(),oe();},{root:P,threshold:[0,c,1]}),_>0&&(L=new IntersectionObserver(u=>{for(let F of u){let T=I.get(F.target);T!==void 0&&(T.revealIntersecting=F.isIntersecting);}V(),oe();},{root:P,rootMargin:`${_}px 0px`,threshold:0}));for(let u of I.keys())B.observe(u);for(let u of I.keys())L?.observe(u);}else G(),V();}}function N(f){X(E.filter(w=>w.key!==f)),i.delete(f),y.delete(f),k.delete(f);}return {register(f,w){if(D)return;let u=t.getKey(f),F=i.has(u),T=y.has(u),re=w===null?void 0:I.get(w);re!==void 0&&re.key!==u&&(O.delete(re.key),I.delete(w),N(re.key));let A=O.get(u);if(A!==void 0&&A!==w&&(B?.unobserve(A),L?.unobserve(A),I.delete(A),O.delete(u)),w===null){A!==void 0&&(B?.unobserve(A),L?.unobserve(A),I.delete(A),O.delete(u)),N(u);return}let z=I.get(w);if(z?.key===u&&z.item===f){H();return}I.set(w,{item:f,key:u,intersecting:z?.key===u?z.intersecting:false,ratio:z?.key===u?z.ratio:0,revealIntersecting:z?.key===u?z.revealIntersecting:false}),O.set(u,w),H(),B?.observe(w),L?.observe(w),G(true),V(),F&&t.onRevealed?.(f),T&&t.onActivated?.(f),oe();},isRevealed:f=>i.has(t.getKey(f)),isActivated:f=>y.has(t.getKey(f)),isSettledVisible:f=>k.has(t.getKey(f)),isScrolling:()=>q,notifyScroll:o,refresh(){H(),G(true),V(),oe();},reset(){j(),ee(),J(false),te=false,ne([]),X([]),ae(),I.clear(),O.clear(),i.clear(),y.clear();},dispose(){D||(j(),ee(),J(false),te=false,ne([]),X([]),ae(),I.clear(),O.clear(),i.clear(),y.clear(),D=true);}}}function An(t){let a=new Map,b=new Map,c=false,m=p=>{let S=a.get(p.channel);return S===void 0?p.channel:`${p.channel}\0${S.getKey(p.item)}`},C=vt({getRoot:t.getRoot,getKey:m,revealMarginPx:t.revealMarginPx,preloadMarginPx:t.preloadMarginPx,minimumIntersectionRatio:t.minimumIntersectionRatio,scrollIdleMs:t.scrollIdleMs,visibilityDwellMs:t.visibilityDwellMs,onScrollingChange:p=>{for(let S of a.values())S.onScrollingChange?.(p);},onRevealed:p=>a.get(p.channel)?.onRevealed?.(p.item),onActivated:p=>a.get(p.channel)?.onActivated?.(p.item),onSettledPreloadChange:p=>{for(let[S,I]of a){let O=p.filter(i=>i.channel===S).map(i=>i.item);I.onSettledPreloadChange?.(O.slice(0,Math.max(0,I.maxPreloadTargets??Number.POSITIVE_INFINITY)));}},onSettledVisibleChange:p=>{for(let[S,I]of a){let O=p.filter(y=>y.channel===S).map(y=>y.item),i=I.maxSettledVisible===void 0?O:O.slice(0,I.maxSettledVisible);I.onSettledVisibleChange?.(i);}}});function _(p){return S=>{if(c)throw new Error("Thread visibility target group \u5DF2\u91CA\u653E");if(a.has(p))throw new Error(`Thread visibility channel \u5DF2\u5B58\u5728: ${p}`);a.set(p,S);let I=new Map;b.set(p,I);let O=false,i=E=>({channel:p,item:E});function y(){for(let E of I.values())C.register(E.target,null);I.clear(),S.onScrollingChange?.(false),S.onSettledVisibleChange?.([]),S.onSettledPreloadChange?.([]);}return {register(E,P){if(O||c)return;let B=S.getKey(E),L=I.get(B);if(P===null){L!==void 0&&(C.register(L.target,null),I.delete(B));return}let q=L?.target.item===E?L.target:i(E);I.set(B,{target:q,element:P}),C.register(q,P);},isRevealed:E=>C.isRevealed(i(E)),isActivated:E=>C.isActivated(i(E)),isSettledVisible:E=>C.isSettledVisible(i(E)),isScrolling:C.isScrolling,notifyScroll:C.notifyScroll,refresh:C.refresh,reset:y,dispose(){O||(y(),O=true,a.delete(p),b.delete(p));}}}}return {createFactory:_,refresh:C.refresh,dispose(){if(!c){for(let p of b.values())for(let S of p.values())C.register(S.target,null);for(let p of a.values())p.onSettledPreloadChange?.([]);b.clear(),a.clear(),C.dispose(),c=true;}}}}export{at as ImThreadBodySwitch,lt as ImThreadItems,Mn as ImThreadSurface,ut as ImThreadViewport,hn as createImThreadSurfaceContext,Rn as createMessageRendererRegistry,An as createThreadVisibilityTargetGroup,vt as createThreadVisibilityTargets,pn as provideImThreadSurfaceContext,Xt as useImText,ct as useImThreadSurfaceContext,Zt as useOptionalImThreadReadActions};
|
|
1
|
+
import {h,C,p,i,q,m,z,B,o,j,g}from'./chunk-7DZ5R7KR.js';import {f,h as h$2,i as i$1,g as g$1}from'./chunk-TWSAZG5J.js';import'./chunk-DX6Q2DQD.js';import'./chunk-6FH2DBQE.js';import'./chunk-6WAB2ZRF.js';import'./chunk-WOT6VMZA.js';import {defineComponent,h as h$1,ref,provide,watch,nextTick,onMounted,onBeforeUnmount,computed,inject,isVNode,cloneVNode,Fragment,reactive}from'vue';function $t(t){let a=0,b=0;for(let c of t)c.kind==="video"?b+=1:a+=1;return {imageCount:a,videoCount:b}}function Xt(t){return {systemMessage:a=>a.body.system!==void 0?g$1(a.body.system,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):"",mediaPlaceholder:a=>i$1(a.contentType,{locale:t.locale(),durationMs:a.body.voice?.durationMs,stickerImageType:a.body.sticker?.imageType,gameType:a.body.game?.gameType,callKind:a.body.call?.callKind,...a.body.filesAlbum===void 0?{}:{filesAlbum:{count:a.body.filesAlbum.items.length,caption:a.body.filesAlbum.caption}},...a.body.mediaAlbum===void 0?{}:{mediaAlbum:$t(a.body.mediaAlbum.items)}}),lastMessage:a=>a.lastMessageSummary!==void 0?h$2(a.lastMessageSummary,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):a.lastMessagePreview,failureText:a=>a.failure?.displayCode!==void 0?f(a.failure.displayCode,{locale:t.locale(),mediaKind:a.failure.mediaKind,params:a.failure.params}):a.failure?.message??""}}var Nt=Symbol("ImThreadReadActions");function kt(t){provide(Nt,t);}function Zt(){return inject(Nt,void 0)}var at=defineComponent({name:"ImThreadBodySwitch",inheritAttrs:false,props:{message:{type:Object,required:true},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup(t,{attrs:a,slots:b}){return kt(t.readActions),()=>{let c=h(t.message),m=t.rendererRegistry.resolve(c);return m!==void 0?h$1(m,{...a,message:t.message,presentation:t.presentation}):b["unsupported-body"]!==void 0?b["unsupported-body"]({kind:c,message:t.message}):h$1("span",{"data-im-thread-unsupported-body":c,"aria-hidden":"true"})}}});var st=Symbol("ImThreadViewportRegistration");function Lt(){return inject(st,void 0)}var lt=defineComponent({name:"ImThreadItems",props:{items:{type:Array,required:true},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup(t,{slots:a}){let b=Lt();function c(i,y){let k=Array.isArray(y)?y:[y];return k.length===1&&isVNode(k[0])?cloneVNode(k[0],{key:i}):h$1(Fragment,{key:i},k)}function m(i){return y=>{b?.registerMessageNode(i,y instanceof HTMLElement?y:null);}}function C(i,y){return k=>{b?.registerDateNode(i,y,k instanceof HTMLElement?k:null);}}function _(i){return a.encryption?.({item:i})??h$1("div",{"data-im-thread-encryption":i.key})}function p(i){let y=C(i.key,i.label);return a["date-separator"]?.({item:i,setElement:y})??h$1("div",{ref:y,"data-im-thread-date-separator":i.key},i.label)}function S(i){b?.registerEntryUnreadNode(i instanceof HTMLElement?i:null);}function I(i){return a["entry-unread"]?.({item:i,setElement:S})??h$1("div",{ref:S,"data-im-thread-entry-unread":i.key,...i.count===void 0?{}:{"data-count":String(i.count)}})}function O(i){let y=m(i.message.id);return a.item!==void 0?a.item({item:i,setElement:y}):a.message!==void 0?a.message({item:i,setElement:y}):i.message.deletedForEveryone!==void 0?a["deleted-message"]?.({item:i,setElement:y})??h$1("article",{ref:y,"data-im-thread-message-id":i.message.id,"data-im-thread-message-terminal":"deleted-for-everyone"},[h$1("span",{"data-im-thread-anchor-point":""})]):i.message.recalled!==void 0?a["recalled-message"]?.({item:i,setElement:y})??h$1("article",{ref:y,"data-im-thread-message-id":i.message.id,"data-im-thread-message-terminal":"recalled"},[h$1("span",{"data-im-thread-anchor-point":""})]):i.kind==="system"&&a.system!==void 0?a.system({item:i,setElement:y}):h$1("article",{ref:y,"data-im-thread-message-id":i.message.id,"data-first-of-run":i.kind==="message"?String(i.firstOfRun):void 0},[h$1("span",{"data-im-thread-anchor-point":""}),h$1(at,{message:i.message,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{"unsupported-body":a["unsupported-body"]===void 0?void 0:k=>a["unsupported-body"]?.(k)})])}return ()=>h$1("div",{"data-im-thread-items":""},t.items.map(i=>{switch(i.kind){case "encryption":return a.item!==void 0?c(i.key,a.item({item:i})):c(i.key,_(i));case "date-separator":return a.item!==void 0?c(i.key,a.item({item:i,setElement:C(i.key,i.label)})):c(i.key,p(i));case "entry-unread":return a.item!==void 0?c(i.key,a.item({item:i,setElement:S})):c(i.key,I(i));case "system":case "message":return c(i.key,O(i))}return i}))}});var Bt=120,fn=500,Be=.5,mn=8;function dt(t){let a=t.ownerDocument.defaultView?.devicePixelRatio;return 1+1/(a!==void 0&&Number.isFinite(a)&&a>0?a:1)}var ut=defineComponent({name:"ImThreadViewport",props:{messageIds:{type:Array,required:true},contentKey:{type:String,default:""},loadingOlder:{type:Boolean,default:false},hasNewer:{type:Boolean,default:false},loadingNewer:{type:Boolean,default:false},followThreshold:{type:Number,default:120},olderPrefetchThreshold:{type:Number,default:120},followNewMessages:{type:Boolean,default:true},shouldFollowAppendedMessage:{type:Function,default:void 0},visibleMargin:{type:Number,default:8},resizeFollowEnabled:{type:Boolean,default:true},activeDateOffset:{type:Number,default:16},activeDateEnabled:{type:Boolean,default:false}},emits:{"reach-start":()=>true,"reach-end":()=>true,"visible-range":t=>true,settled:t=>true,"new-message-count":t=>true,"user-scroll":()=>true,"active-date-change":t=>true},setup(t,{emit:a,expose:b,slots:c}){let m$1=ref(null),C$1=ref(null),_=new Map,p$1,S=new Map,I=new Set,O=new Map,i=0,y=[],k,E,P,B$1,L=false,q$1,te=new Set,D=false,W,$="",Z=1,j$1=false,ee=false,G=true,K=false,V=false,ne=false,X=0,ce=-1,oe=-1,o$1,J,ae,H,N,f=ref(true),w=ref(0),u=C(e=>{w.value=e,a("new-message-count",e);});function F(e){let r=Number.isFinite(t.followThreshold)?Math.max(0,t.followThreshold):0;return e.scrollHeight-e.clientHeight-e.scrollTop<=r}function T(e=t.messageIds){return e.flatMap(r=>{let s=_.get(r);if(s===void 0)return [];let h=s.getBoundingClientRect(),M=s.querySelector("[data-im-thread-anchor-point]");return [{id:r,top:h.top,bottom:h.bottom,anchorTop:M?.getBoundingClientRect().top??h.top}]})}function re(e="",r=1){let s=Math.min(1,Math.max(0,r));$!==""&&$!==e&&O.get($)?.element.style.removeProperty("opacity"),$=e,Z=s,e!==""&&O.get(e)?.element.style.setProperty("opacity",String(s));}function A(){re();}function z$1(){let e=m$1.value;if(D||e===null||!t.activeDateEnabled)return;let r=[...O.entries()].filter(([,U])=>e.contains(U.element)).map(([U,x])=>{let fe=x.element.getBoundingClientRect();return {key:U,label:x.label,top:fe.top,height:fe.height}}).sort((U,x)=>U.top-x.top),s=e.getBoundingClientRect(),h=r.find(U=>U.height>0)?.height??28,M=g({markers:r,viewportTop:s.top,overlayTop:Number.isFinite(t.activeDateOffset)?Math.max(0,t.activeDateOffset):0,overlayHeight:h});if(M===null){A(),a("active-date-change",null);return}re(M.inlineDateKey,M.inlineOpacity),a("active-date-change",M);}function ye(e){E={scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,width:e.clientWidth,height:e.clientHeight};}function Ee(e){let r=E;if(r===void 0)return false;let s=Math.max(0,e.scrollHeight-e.clientHeight);return s<r.scrollHeight-r.height&&r.scrollTop>s&&Math.abs(e.scrollTop-s)<=dt(e)}function Ue(e){return Ee(e)||W!==void 0&&(W.behavior==="smooth"||Math.abs(e.scrollTop-W.targetTop)<=dt(e))?0:e.scrollTop-i}function _e(e,r){r!==0&&(i=e.scrollTop-r,W=void 0,Q());}function qe(e,r){let s=Ue(e);if(H!==void 0)return H.expectedOffset-=s,Ie(),_e(e,s),K||je(),false;let h=E;if(h===void 0)return false;let M=k,U=M===void 0?void 0:T([M.id])[0],x=e.scrollTop-h.scrollTop,fe=Ee(e)?0:x,Se=M===void 0||U===void 0?0:(U.anchorTop??U.top)-r.top-M.offset+x;return h.scrollHeight!==e.scrollHeight||h.width!==e.clientWidth||h.height!==e.clientHeight||Math.abs(Se)>Be?(E=void 0,!j$1&&!t.loadingNewer&&!t.hasNewer&&t.resizeFollowEnabled&&f.value&&Math.abs(fe)<=Be?(le(),true):(M!==void 0&&xe({...M,offset:M.offset-fe}),_e(e,s),false)):false}function ke(){let e=m$1.value;if(D||e===null)return;let r=e.getBoundingClientRect();if(qe(e,r))return;let s=B$1!==void 0&&L?t.messageIds.filter(x=>I.has(x)):t.messageIds,h=T(s);if(B$1!==void 0&&L&&h.length===0){f.value=F(e);return}let M=h.filter(x=>B({viewportTop:r.top,viewportBottom:r.bottom,messageTop:x.top,messageBottom:x.bottom,margin:t.visibleMargin})).map(x=>x.id),U=M.length!==y.length||M.some((x,fe)=>y[fe]!==x);y=Object.freeze(M),k=o(h,{top:r.top,bottom:r.bottom}),ye(e),u.acknowledgeVisible(M),f.value=F(e),U&&a("visible-range",y),a("settled",{visibleMessageIds:y,...y.length===0?{}:{newestVisibleMessageId:y[y.length-1]},isAtBottom:f.value,newMessageCount:w.value});}function Ae(e){if(te.add(e),q$1!==void 0)return;let r=()=>{q$1=void 0;let s=[...te];te.clear(),s.forEach(h=>h());};typeof globalThis.requestAnimationFrame=="function"?q$1=globalThis.requestAnimationFrame(r):q$1=globalThis.setTimeout(r,0);}function We(){q$1!==void 0&&(typeof q$1=="number"&&typeof globalThis.cancelAnimationFrame=="function"?globalThis.cancelAnimationFrame(q$1):globalThis.clearTimeout(q$1),q$1=void 0,te.clear());}function Te(){Ae(ke);}function He(){let e=m$1.value;if(e===null)return;let r=e.getBoundingClientRect(),s=o(T(),{top:r.top,bottom:r.bottom});s!==void 0&&(k=s,ye(e));}function Le(){return G&&H===void 0&&!ee&&!t.loadingOlder}function Ge(){He(),G=false,ce=X,ee=true,a("reach-start"),Ae(()=>{t.loadingOlder||(ee=false);});}function ze(e){return t.hasNewer&&!j$1&&!t.loadingOlder&&!t.loadingNewer&&F(e)}function Ye(){j$1=true,f.value=false,oe=X,a("reach-end"),Ae(()=>{t.loadingNewer||(j$1=false);});}function Ve(){let e=m$1.value;e===null||X===oe||!ze(e)||Ye();}function Q(){let e=m$1.value;if(D||e===null)return;let r=e.scrollTop,s=Ee(e),h=W,M=false;if(h!==void 0){let x=Math.abs(r-h.targetTop)<=dt(e);M=h.behavior==="smooth"||x,(h.behavior!=="smooth"||x)&&(W=void 0);}!M&&!s&&!K&&H===void 0&&r!==i&&(K=true,V=true,X+=1);let U=K&&!M&&!s&&r!==i;if(U&&(a("user-scroll"),Ae(z$1)),K&&!ne&&ve(),!G&&V&&X!==ce&&r<i&&r>Ke()&&(G=true),H!==void 0&&!M)if(K){let x=Ce();x!==void 0&&(H.expectedOffset=x);}else Ie(),je();Le()&&U&&r>=0&&m({previousScrollTop:i,currentScrollTop:r,topThreshold:t.olderPrefetchThreshold})&&Ge(),U&&ze(e)&&z({previousScrollTop:i,currentScrollTop:r,isAtBottom:F(e),isHistoryWindow:t.hasNewer,isPageSettling:M})&&Ye(),i=r,Te();}function De(e,r="auto"){W={targetTop:e,behavior:r};}function $e(e){let r=H,s=C$1.value;if(!(r===void 0||s===null)){if(r.visualOffset=Math.abs(e)<=Be?0:e,r.visualOffset===0){s.style.removeProperty("transform"),s.style.removeProperty("will-change");return}s.style.setProperty("transform",`translate3d(0, ${r.visualOffset}px, 0)`),s.style.setProperty("will-change","transform");}}function be(){N!==void 0&&(clearTimeout(N),N=void 0),H!==void 0&&H.visualOffset!==0&&(k=void 0,E=void 0);let e=C$1.value;e?.style.removeProperty("transform"),e?.style.removeProperty("will-change"),H=void 0,W=void 0;}function Ce(){let e=m$1.value,r=H;if(e===null||r===void 0)return;let s=T().find(h=>h.id===r.anchor.id);if(s!==void 0)return (s.anchorTop??s.top)-e.getBoundingClientRect().top}function Ie(){let e=H,r=Ce();if(e===void 0||r===void 0)return;let s=e.expectedOffset-r;Math.abs(s)<=Be||($e(e.visualOffset+s),e.committed=false,e.attempts=0);}function Xe(){N!==void 0&&clearTimeout(N),N=setTimeout(()=>{N=void 0,!(K||H?.committed!==true)&&be();},fn);}function ue(){let e=m$1.value,r=H;if(D||e===null||r===void 0||K)return;let s=r.visualOffset;if(Math.abs(s)<=Be){r.committed=true,Xe();return}let h=Math.max(0,e.scrollHeight-e.clientHeight),M=Math.min(h,Math.max(0,e.scrollTop-s));if(De(M),e.scrollTop=M,Math.abs(e.scrollTop-M)>Be){W=void 0,r.committed=false,r.attempts+=1,r.attempts<mn?je():(be(),W=void 0,i=e.scrollTop);return}$e(0),i=e.scrollTop,r.expectedOffset=Ce()??r.expectedOffset,r.committed=true,r.attempts=0,Xe();}function je(){N!==void 0&&clearTimeout(N),N=setTimeout(()=>{N=void 0,ue();},Bt);}function we(e){e!==void 0&&(H===void 0&&(H={anchor:e,expectedOffset:e.offset,visualOffset:0,committed:false,attempts:0}),Ie(),!K&&ue());}function xe(e){let r=m$1.value;if(r===null||e===void 0)return;let s=r.getBoundingClientRect(),h=q(e,T(),{top:s.top,bottom:s.bottom});if(h!==void 0){let M=Math.max(0,r.scrollHeight-r.clientHeight),U=Math.min(M,Math.max(0,r.scrollTop+h));De(U),r.scrollTop=U,i=r.scrollTop,E=void 0;}}function Ke(){return Number.isFinite(t.olderPrefetchThreshold)?Math.max(0,t.olderPrefetchThreshold):0}function Me(){W?.behavior==="smooth"&&(W=void 0),V=false,K||(K=true,X+=1),o$1!==void 0&&(clearTimeout(o$1),o$1=void 0);}function se(){let e=m$1.value;e===null||X===ce||(H!==void 0&&be(),G=true,e.scrollTop<=Ke()&&Le()&&Ge());}function Re(){k=void 0,E=void 0,o$1!==void 0&&(clearTimeout(o$1),o$1=void 0),be(),K=false,V=false,ne=false,J=void 0,ae=void 0,X+=1,ce=-1,oe=-1,G=true,ee=false,j$1=false,W=void 0;}function Je(){ne||(o$1!==void 0&&(clearTimeout(o$1),o$1=void 0),K=false,V=false,H!==void 0&&(H.attempts=0),ue());}function ve(){ne||(o$1!==void 0&&clearTimeout(o$1),o$1=setTimeout(()=>{o$1=void 0,Je();},Bt));}function n(){W=void 0,Je();}function d(e){ne=true,Me(),J=e.touches?.[0]?.clientY;}function l(e){let r=e.touches?.[0]?.clientY;r!==void 0&&(J!==void 0&&r>J?se():J!==void 0&&r<J&&Ve(),J=r);}function g$1(){ne=false,J=void 0,ve();}function v(e){Me(),e.deltaY<0?se():e.deltaY>0&&Ve(),ve();}function R(e){e.pointerType!=="touch"&&(Me(),ae=e.clientY,ve());}function Y(e){e.pointerType==="touch"||!K||ae===void 0||(e.clientY<ae?se():e.clientY>ae&&Ve(),ae=e.clientY,ve());}function ie(e){e.pointerType!=="touch"&&(ae=void 0,ve());}function he(e){["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(e.key)&&(Me(),e.key==="ArrowUp"||e.key==="PageUp"||e.key==="Home"||e.key===" "&&e.shiftKey?se():Ve(),ve());}function le(e="auto"){let r=m$1.value;if(r===null)return;E=void 0,be();let s=Math.max(0,r.scrollHeight-r.clientHeight);De(s,e),r.scrollTo?.({top:s,behavior:e}),r.scrollTop!==s&&(r.scrollTop=s),i=r.scrollTop,u.clear(),L=false,ke();}function Ne(){let e=m$1.value;return e!==null&&e.clientWidth>0&&e.clientHeight>0}function nt(){let e=m$1.value;return Ne()&&e!==null&&e.scrollHeight>e.clientHeight+1}function _t(e,r={}){return ht(_.get(e),r)}function ht(e,r){let s=m$1.value;if(s===null||e===void 0||!s.contains(e)||s.clientHeight<=0)return false;be();let h=s.getBoundingClientRect(),M=e.getBoundingClientRect(),U=r.block??"center",x;U==="start"?x=s.scrollTop+M.top-h.top:U==="end"?x=s.scrollTop+M.bottom-h.bottom:U==="nearest"?M.top>=h.top&&M.bottom<=h.bottom?x=s.scrollTop:M.top<h.top?x=s.scrollTop+M.top-h.top:x=s.scrollTop+M.bottom-h.bottom:x=j({currentScrollTop:s.scrollTop,scrollHeight:s.scrollHeight,targetHeight:M.height,targetTop:M.top,viewportHeight:s.clientHeight,viewportTop:h.top});let fe=Math.max(0,s.scrollHeight-s.clientHeight),Se=Math.min(fe,Math.max(0,x));E=void 0;let Fe=r.behavior??"auto";return De(Se,Fe),s.scrollTo?.({top:Se,behavior:Fe}),s.scrollTop!==Se&&(s.scrollTop=Se),i=s.scrollTop,L=false,ke(),true}function jt(){let e=m$1.value;if(e===null||p$1===void 0||!e.contains(p$1)||e.clientHeight<=0)return null;let r=p$1.getBoundingClientRect(),s=e.scrollTop+r.top-e.getBoundingClientRect().top+r.height/2,h=e.clientHeight/2;return {older:s<h-1,newer:e.scrollHeight-s<h-1}}function Kt(){u.clear();}function qt(){j$1=true,f.value=false;}function Wt(){j$1=false,Te();}function Gt(e,r){let s=_.get(e);if(s!==void 0&&s!==r&&(B$1?.unobserve(s),P?.unobserve?.(s),S.delete(s),I.delete(e)),r===null){_.delete(e),I.delete(e);return}_.set(e,r),S.set(r,e),B$1?.observe(r),P?.observe(r),Te();}function zt(e,r,s){let h=O.get(e);if(s===null){O.delete(e);return}O.set(e,{element:s,label:r}),$===e&&s.style.setProperty("opacity",String(Z)),h?.element!==s&&(s.dataset.imThreadDateSeparator=e);}return provide(st,{registerMessageNode:Gt,registerDateNode:zt,registerEntryUnreadNode:e=>{p$1=e??void 0;}}),watch(()=>t.contentKey,(e,r)=>{if(e===r)return;Re();let s=m$1.value;s!==null&&(i=s.scrollTop);},{flush:"sync"}),watch(()=>t.messageIds,async(e,r)=>{let s=m$1.value;if(s===null)return;let h=new Set(r);r.length>0&&e.length>0&&!e.some(Oe=>h.has(Oe))&&Re();let U=s.getBoundingClientRect(),x=p(k,T(),{top:U.top,bottom:U.bottom}),fe=f.value,Se=r[r.length-1],Fe=Se===void 0?-1:e.indexOf(Se),rt=Fe<0?[]:e.slice(Fe+1).filter(Oe=>!h.has(Oe)),pt=j$1||t.loadingNewer,Yt=e.length===r.length&&e.every(Oe=>h.has(Oe))&&e.some((Oe,ot)=>Oe!==r[ot]);if(await nextTick(),D)return;if(Yt&&fe&&t.followNewMessages&&t.resizeFollowEnabled&&!t.hasNewer&&!pt){le();return}let yt=r[0];if(yt!==void 0&&e.indexOf(yt)>0&&(ee=false,we(x)),rt.length>0){if(pt){j$1=false,H===void 0&&xe(x),f.value=false,Te();return}(fe||rt.some(ot=>t.shouldFollowAppendedMessage?.(ot)===true))&&t.followNewMessages?le():u.add(rt);}Te();},{flush:"pre"}),watch(()=>t.loadingNewer,(e,r)=>{e||!r||!j$1||Ae(()=>{t.loadingNewer||(j$1=false);});},{flush:"pre"}),watch(()=>t.loadingOlder,(e,r)=>{e||!r||!ee||Ae(()=>{t.loadingOlder||(ee=false);});},{flush:"pre"}),onMounted(()=>{let e=m$1.value;if(e!==null){if(i=e.scrollTop,e.addEventListener("scroll",Q,{passive:true}),e.addEventListener("scrollend",n,{passive:true}),e.addEventListener("touchstart",d,{passive:true}),e.addEventListener("touchmove",l,{passive:true}),e.addEventListener("touchend",g$1,{passive:true}),e.addEventListener("touchcancel",g$1,{passive:true}),e.addEventListener("wheel",v,{passive:true}),e.addEventListener("pointerdown",R,{passive:true}),e.addEventListener("pointermove",Y,{passive:true}),e.addEventListener("pointerup",ie,{passive:true}),e.addEventListener("pointercancel",ie,{passive:true}),e.addEventListener("keydown",he),typeof globalThis.ResizeObserver=="function"){P=new globalThis.ResizeObserver(()=>{D||m$1.value===null||ke();}),P.observe(e),C$1.value!==null&&P.observe(C$1.value);for(let r of _.values())P.observe(r);}if(typeof globalThis.IntersectionObserver=="function"){B$1=new globalThis.IntersectionObserver(r=>{for(let s of r){let h=S.get(s.target);h!==void 0&&(s.isIntersecting?I.add(h):I.delete(h));}L=true,Te();},{root:e,rootMargin:`${Number.isFinite(t.visibleMargin)?Math.max(0,t.visibleMargin):0}px 0px`});for(let r of _.values())B$1.observe(r);}Te();}}),onBeforeUnmount(()=>{D=true;let e=m$1.value;e!==null&&e.removeEventListener("scroll",Q),e!==null&&(e.removeEventListener("scrollend",n),e.removeEventListener("touchstart",d),e.removeEventListener("touchmove",l),e.removeEventListener("touchend",g$1),e.removeEventListener("touchcancel",g$1),e.removeEventListener("wheel",v),e.removeEventListener("pointerdown",R),e.removeEventListener("pointermove",Y),e.removeEventListener("pointerup",ie),e.removeEventListener("pointercancel",ie),e.removeEventListener("keydown",he)),o$1!==void 0&&clearTimeout(o$1),be(),We(),P?.disconnect(),B$1?.disconnect(),A(),p$1=void 0,_.clear(),S.clear(),I.clear(),O.clear(),u.clear();}),b({getViewportElement:()=>m$1.value,clearNewMessageBadge:Kt,clearActiveDate:A,isAtBottom:computed(()=>f.value),isMeasurable:Ne,isScrollable:nt,newMessageCount:computed(()=>w.value),prepareHistoryPageAppend:qt,cancelHistoryPageAppend:Wt,trackRemoteMessageIds:(e,r)=>u.trackRemote(e,r),scrollToLatest:le,scrollToMessage:_t,scrollToEntryUnread:()=>ht(p$1,{block:"center",behavior:"auto"}),getEntryUnreadCenteringNeeds:jt,focusViewport:()=>m$1.value?.focus({preventScroll:true})}),()=>h$1("div",{ref:m$1,"data-im-thread-viewport":"",role:"log",tabindex:-1},[h$1("div",{ref:C$1,"data-im-thread-viewport-content":""},c.default?.())])}});var Ut=Symbol("ImThreadSurfaceContext");function hn(t){if(typeof t.getState!="function")throw new TypeError("ImThreadSurfaceContext.getState \u5FC5\u987B\u662F\u51FD\u6570");if(typeof t.actions?.loadOlder!="function")throw new TypeError("ImThreadSurfaceContext.actions.loadOlder \u5FC5\u987B\u662F\u51FD\u6570");if(typeof t.formatDate!="function")throw new TypeError("ImThreadSurfaceContext.formatDate \u5FC5\u987B\u662F\u51FD\u6570");return Object.freeze({...t,actions:Object.freeze({...t.actions})})}function pn(t){provide(Ut,t);}function ct(){let t=inject(Ut);if(t===void 0)throw new Error("ImThreadSurface \u9700\u8981\u663E\u5F0F context prop \u6216 provideImThreadSurfaceContext");return t}var ft=Object.freeze({followThreshold:120,olderPrefetchThreshold:120,visibleReadDelay:300,visibleMargin:8,activeDateOffset:16,activeDateIdleDelay:1500}),mt=Object.freeze({enabled:true,maxFillPages:8}),bn=8,In=160;function wn(t,a){return t?.conversationType===a.conversationType&&t.conversationId===a.conversationId}var Mn=defineComponent({name:"ImThreadSurface",props:{conversation:{type:Object,required:true},context:{type:Object,default:void 0},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0},viewportOptions:{type:Object,default:()=>({})},initialViewportOptions:{type:Object,default:()=>({})},hooks:{type:Object,default:void 0}},setup(t,{expose:a,slots:b}){let c=t.context??ct(),m=ref(null),C=ref(0),_=ref(false),p=ref(false),S=ref(false),I,O,i$1=ref(false),y=ref(false),k=ref(false),E=false,P,B=ref(true),L=[],q,te=0,D=0,W,$=null,Z="",j="",ee="",G=false,K=false,V=ref(false),ne=ref(""),X=ref(false),ce,oe,o=computed(()=>c.getState()),J=computed(()=>!!o.value.pendingLocationMessageId),ae=computed(()=>o.value.pageVisible??c.isPageVisible?.()??true),H=computed(()=>o.value.pageEngaged??c.isPageEngaged?.()??true),N=computed(()=>wn(o.value.activeConversation,t.conversation)),f=computed(()=>({...ft,...t.viewportOptions})),w=computed(()=>{let n=t.initialViewportOptions.maxFillPages??mt.maxFillPages;return {enabled:t.initialViewportOptions.enabled??mt.enabled,maxFillPages:Number.isFinite(n)?Math.max(0,Math.floor(n)):mt.maxFillPages}}),u=computed(()=>!N.value||!o.value.ready?"":`${t.conversation.conversationType}\0${t.conversation.conversationId}`),F=computed(()=>N.value?i({messages:o.value.messages,entryUnread:o.value.entryUnread,formatDate:c.formatDate,leadingItems:c.leadingItems?.(),beforeMessageItems:c.beforeMessageItems}):[]),T=computed(()=>F.value.flatMap(n=>n.kind==="message"||n.kind==="system"?[n.message.id]:[]));function re(){ce!==void 0&&(clearTimeout(ce),ce=void 0),oe!==void 0&&(clearTimeout(oe),oe=void 0);}function A(n=false){if(re(),X.value=false,n){m.value?.clearActiveDate(),ne.value="";return}oe=setTimeout(()=>{oe=void 0,!X.value&&(m.value?.clearActiveDate(),ne.value="");},In);}function z(n){if(n===null){A();return}re(),ne.value=n.label,X.value=true;let d=f.value.activeDateIdleDelay,l=Number.isFinite(d)?Math.max(0,d):ft.activeDateIdleDelay;ce=setTimeout(()=>{ce=void 0,A();},l);}async function ye(n,d,l){t.hooks?.beforeAction?.(n);try{let g=await d();return l?.()!==!1&&t.hooks?.afterAction?.(n,g),g}catch(g){throw l?.()!==false&&t.hooks?.onError?.(n,g),g}}function Ee(n="automatic",d){return !N.value||o.value.loading||!o.value.hasOlder?Promise.resolve(0):ye({kind:"load-older",source:n},()=>c.actions.loadOlder(),d)}function Ue(){return _e()}function _e(n){let d=c.actions.loadNewer,l=o.value.loadingNewer??o.value.loading;return !N.value||l||!o.value.hasNewer||d===void 0?Promise.resolve(0):ye({kind:"load-newer"},()=>d(),n)}async function qe(n){for(let d=0;d<bn;d+=1){if(!N.value||S.value||p.value||J.value)return;let l=n==="older"?o.value.hasOlder:o.value.hasNewer,g=n==="older"?o.value.olderError:o.value.newerError;if(!l||g!==null||(n==="older"?await Ee("user-scroll"):await Ue())>0)return;let R=n==="older"?o.value.hasOlder:o.value.hasNewer,Y=n==="older"?o.value.olderError:o.value.newerError;if(!R||Y!==null)return}}async function ke(){return !N.value||c.actions.loadNewer===void 0?0:We({kind:"load-newer"},()=>c.actions.retryNewer?.()??c.actions.loadNewer?.({force:true})??Promise.resolve(0))}async function Ae(){return N.value?We({kind:"retry-older"},()=>c.actions.retryOlder?.()??c.actions.loadOlder({force:true})):0}async function We(n,d){let l=u.value,g=++te;$=null,ee="";let v;try{v=await ye(n,d);}catch(R){throw ue(l,g)&&(ee=l),R}return ue(l,g)&&!V.value&&($=null,Me()),v}async function Te(){if(!N.value)return false;let n=u.value;Re();let d=++D;return S.value=false,se(true),G=true,Z=n,j=xe(we()),!await ye({kind:"jump-to-latest"},()=>c.actions.jumpToLatest?.()??Promise.resolve(!o.value.isHistoryWindow),()=>Q(n,d))||!Q(n,d)||(await nextTick(),!Q(n,d))?false:(m.value?.scrollToLatest(),_.value=true,k.value=false,Le(),true)}function He(n=false){let d=m.value,l=d?.getViewportElement();y.value=d?.isScrollable()===true;let g=o.value.entryUnreadNavigation;i$1.value=g?.state==="located"&&L.includes(g.firstMessageId),V.value&&i$1.value&&(_.value=true);let v=l==null?0:Math.max(0,l.scrollHeight-l.clientHeight-l.scrollTop);k.value=g!==void 0&&v>50,n&&g!==void 0&&l!==null&&l!==void 0&&l.clientHeight>0&&v>=l.clientHeight&&(_.value=true);}function Le(){let n=c.actions.markConversationRead;if(n===void 0||!H.value||!N.value||!V.value||p.value||E&&(!B.value||o.value.hasNewer)||P!==void 0||o.value.error!==null)return;let d=u.value,l=n().then(()=>{P===l&&d===u.value&&(E=true);}).catch(g=>{!K&&P===l&&d===u.value&&t.hooks?.onError?.({kind:"mark-conversation-read"},g);}).finally(()=>{P===l&&(P=void 0);});P=l;}async function Ge(){let n=c.actions.loadEntryUnread;if(!N.value||p.value||n===void 0)return "cancelled";let d=u.value,l=++D;S.value=false;let g=new AbortController;O=g,I=l,p.value=true,se(true),G=true;try{let v=await ye({kind:"jump-to-entry-unread"},()=>n({signal:g.signal}),()=>Q(d,l));if(!Q(d,l))return "cancelled";if(!v||o.value.entryUnread.state!=="located")return "unavailable";let Y=await ze(d,l);return Y&&(_.value=!0),Y?"located":Q(d,l)?"unavailable":"cancelled"}catch(v){if(!Q(d,l))return "cancelled";throw v}finally{I===l&&(I=void 0,O=void 0,p.value=false);}}async function ze(n,d){await nextTick();for(let l=0;l<60;l+=1){if(!Q(n,d))return false;if(m.value?.scrollToEntryUnread())return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(g=>window.requestAnimationFrame(()=>g()));}return false}function Ye(n){B.value=n.isAtBottom,C.value=n.newMessageCount,He(),Me();}function Ve(n,d){return m.value?.scrollToMessage(n,d)??false}function Q(n,d){return !K&&D===d&&u.value===n&&N.value}async function De(n,d,l,g){for(let v=0;v<60;v+=1){if(!Q(n,d))return false;if(Ve(l,g))return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(R=>window.requestAnimationFrame(()=>R()));}return false}async function $e(n,d){let l=m.value;if(l===null||!l.isMeasurable()||l.isScrollable())return true;let g=0,v=!o.value.hasOlder,R=!o.value.hasNewer||c.actions.loadNewer===void 0,Y=()=>Q(n,d),ie=async le=>{if(!Q(n,d)||g>=w.value.maxFillPages)return false;let Ne=0;if(le==="older"){if(v||!o.value.hasOlder)return false;Ne=await Ee("automatic",Y),v=!o.value.hasOlder;}else {if(R||!o.value.hasNewer)return false;l.prepareHistoryPageAppend();try{Ne=await _e(Y);}catch(nt){throw Y()&&l.cancelHistoryPageAppend(),nt}Y()&&Ne<=0&&!o.value.hasNewer&&l.cancelHistoryPageAppend(),R=!o.value.hasNewer;}return g+=1,await nextTick(),await nextTick(),Q(n,d)&&(Ne>0||!(le==="older"?v:R))};!v&&!await ie("older")&&(v=true),!R&&!await ie("newer")&&(R=true);let he="older";for(;Q(n,d)&&g<w.value.maxFillPages&&l.isMeasurable()&&!l.isScrollable()&&(!v||!R);){let le=he==="older"?v?"newer":"older":R?"older":"newer";he=le==="older"?"newer":"older",await ie(le)||(le==="older"?v=true:R=true);}return Q(n,d)}async function be(n,d={behavior:"auto",block:"center"}){if(!N.value||n==="")return false;let l=u.value;Re();let g=S.value||W!==void 0||(o.value.loadingOlder??o.value.loading)||(o.value.loadingNewer??o.value.loading),v=++D;S.value=true,se(true),G=true,Z=l,j=xe(we());let R=()=>Q(l,v);try{if(g||!T.value.includes(n)){let Y=c.actions.loadAround;if(Y===void 0)return !1;let ie={};W=ie;try{if(!await ye({kind:"locate-message",messageId:n},()=>Y(n),R)||!R())return !1}finally{W===ie&&(W=void 0);}}return await nextTick(),await nextTick(),!R()||!await $e(l,v)?!1:await De(l,v,n,d)}finally{D===v&&(S.value=false);}}function Ce(){q!==void 0&&(clearTimeout(q),q=void 0);}function Ie(){if(Ce(),!V.value)return;let n=t.readActions;if(n===void 0&&c.actions.markVisibleMessages===void 0)return;let d=Number.isFinite(f.value.visibleReadDelay)?Math.max(0,f.value.visibleReadDelay):ft.visibleReadDelay;q=setTimeout(()=>{if(q=void 0,!N.value||!H.value)return;Le();let l=c.actions.markVisibleMessages;if(l!==void 0){let R=L;l(R).catch(Y=>{t.hooks?.onError?.({kind:"visible-range",messageIds:R},Y);});return}if(n===void 0)return;let g=L[L.length-1];if(g===void 0)return;let v=n.resolveTarget===void 0?g:n.resolveTarget(g);v!=null&&Promise.resolve(n.markRead(v)).catch(R=>{t.hooks?.onError?.({kind:"visible-range",messageIds:L},R);});},d);}function Xe(n){L=Object.freeze([...n]),He();let d={kind:"visible-range",messageIds:L};t.hooks?.beforeAction?.(d);try{c.actions.onVisibleRange?.(L),t.hooks?.afterAction?.(d,void 0);}catch(l){throw t.hooks?.onError?.(d,l),l}V.value?Ie():Me();}function ue(n,d){return !K&&te===d&&u.value===n&&!G&&!J.value}function je(n,d){ue(n,d)&&(Z=n,j=xe(we()),V.value=true,He(),Le(),Ie());}function we(){return o.value.entryUnreadNavigation===void 0?o.value.entryUnread:{state:"none"}}function xe(n){return n.state!=="located"?n.state:`${n.state}:${n.firstMessageId}`}async function Ke(n,d,l){for(let g=0;g<60;g+=1){if(!ue(n,d))return false;if(m.value?.scrollToMessage(l,{behavior:"auto",block:"center"})===true)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(R=>window.requestAnimationFrame(()=>R()));}return false}function Me(){let n=u.value,d=xe(we());if(n===""||o.value.loading||S.value||J.value||o.value.error!==null&&o.value.messages.length===0||Z===n&&(j===d||j.startsWith("located:")||G)||ee===n||$!==null)return;if(!w.value.enabled){Z=n,j=d,V.value=true,Ie();return}let l=++te;G=false,V.value=false;let g=(async()=>{if(await nextTick(),!ue(n,l))return;let v=m.value;if(v===null||!v.isMeasurable())return;let R=we();if(R.state==="located"&&!T.value.includes(R.firstMessageId))return;let Y=R.state==="located"?await Ke(n,l,R.firstMessageId):false;if(R.state==="located"&&!Y)return;Y||v.scrollToLatest();let ie=0;for(;ue(n,l)&&ie<w.value.maxFillPages&&o.value.error===null&&(o.value.hasOlder||o.value.hasNewer&&c.actions.loadNewer!==void 0)&&v.isMeasurable()&&!v.isScrollable();){if(o.value.hasNewer&&c.actions.loadNewer!==void 0&&(o.value.messages.length===0||!o.value.hasOlder)){let le=D;v.prepareHistoryPageAppend();try{await Ue(),await nextTick();}finally{u.value===n&&D===le&&(te===l||G)&&v.cancelHistoryPageAppend();}}else await Ee();if(!ue(n,l)||(ie+=1,await nextTick(),await nextTick(),!v.isMeasurable()))return}if(!ue(n,l)||!v.isMeasurable())return;let he=we();if(he.state==="located"){if(!T.value.includes(he.firstMessageId)||!await Ke(n,l,he.firstMessageId))return}else v.scrollToLatest();await nextTick(),je(n,l);})().catch(()=>{ue(n,l)&&(ee=n);}).finally(()=>{$===g&&($=null);});$=g;}function se(n,d=false){te+=1,$=null,G=false,V.value=n,n||(Z="",j="",d||(ee="")),Ce();}function Re(){O!==void 0&&(D+=1,O.abort(),O=void 0,I=void 0,p.value=false);}function Je(){if(He(true),Re(),G=true,V.value)return;let n=u.value;te+=1,$=null,Z=n,V.value=true,Ie();}let ve=Object.freeze({getViewportElement:()=>m.value?.getViewportElement()??null,loadOlder:Ee,retryOlder:Ae,loadNewer:Ue,retryNewer:ke,jumpToLatest:Te,jumpToEntryUnread:Ge,scrollToMessage:Ve,locateMessage:be,focusViewport:()=>m.value?.focusViewport()});return a(ve),watch(H,n=>{n&&V.value?Ie():Ce();}),watch([()=>o.value.activeRemoteMessageRevision??0,m,u],()=>{let n=m.value;if(n===null||!N.value)return;let d=c.actions.drainActiveRemoteMessageIds?.()??[];n.trackRemoteMessageIds(d,{isAtBottom:B.value,isHistoryWindow:o.value.isHistoryWindow,isPageVisible:ae.value})&&(B.value=false);},{flush:"post"}),watch(()=>o.value.pendingLocationMessageId??"",n=>{(n!==""||S.value)&&(D+=1,S.value=false),n!==""&&(Re(),V.value||se(false));},{flush:"sync"}),watch([u,()=>o.value.loading,()=>o.value.error,()=>T.value.length,()=>o.value.hasOlder,()=>xe(we()),w,()=>o.value.hasNewer,J],([n,d,l,g,,v],[R,,,Y,,ie])=>{if(n!==R&&(Re(),D+=1,S.value=false,W=void 0,se(false),A(true),m.value?.clearNewMessageBadge(),C.value=0,B.value=true,L=[],_.value=false,i$1.value=false,y.value=false,k.value=false,p.value=false,I=void 0,E=false,P=void 0),n!==""&&n===R&&Y!==void 0&&Y>0&&g===0&&(o.value.hasOlder||o.value.hasNewer)&&V.value&&se(false,true),n!==""&&n===R&&v!==ie&&!j.startsWith("located:")&&!G&&v.startsWith("located:")&&(Z="",j="",V.value=false),n===""){se(false);return}if(l!==null&&o.value.messages.length===0){V.value||se(false,true);return}d||Me();},{flush:"post",immediate:true}),onBeforeUnmount(()=>{K=true,Re(),D+=1,se(false),A(true);}),()=>{let n={conversation:t.conversation,state:o.value,items:F.value,actions:ve,initialViewportSettled:u.value!==""&&(o.value.messages.length===0?!o.value.loading&&o.value.error===null&&!o.value.hasOlder&&!o.value.hasNewer:V.value&&Z===u.value)},d=[b.header?.(n),b["before-list"]?.(n)];if(!N.value)d.push(b.unsupported?.(n)??h$1("div",{"data-im-thread-unsupported":""}));else if(!o.value.ready&&o.value.loading)d.push(b.loading?.(n)??h$1("div",{"data-im-thread-loading":""}));else if(o.value.error!==null&&o.value.messages.length===0)d.push(b.error?.(n)??h$1("div",{"data-im-thread-error":""}));else if(o.value.ready&&o.value.messages.length===0&&!o.value.hasOlder&&!o.value.hasNewer)d.push(b.empty?.(n)??h$1("div",{"data-im-thread-empty":""}));else {let l=h$1(ut,{ref:m,messageIds:T.value,contentKey:`${t.conversation.conversationType}\0${t.conversation.conversationId}`,loadingOlder:o.value.loadingOlder??o.value.loading,hasNewer:o.value.hasNewer,loadingNewer:o.value.loadingNewer??o.value.loading,followThreshold:f.value.followThreshold,olderPrefetchThreshold:f.value.olderPrefetchThreshold,visibleMargin:f.value.visibleMargin,activeDateOffset:f.value.activeDateOffset,activeDateEnabled:b["active-date"]!==void 0,resizeFollowEnabled:V.value&&!p.value&&!S.value&&!J.value,followNewMessages:ae.value&&!p.value&&!S.value&&!J.value,shouldFollowAppendedMessage:g=>{let v=o.value.messages.find(R=>R.id===g);return v===void 0?false:c.shouldFollowMessage?.(v)===true},onReachStart:()=>{qe("older").catch(()=>{});},onReachEnd:()=>{qe("newer").catch(()=>{});},onSettled:Ye,onUserScroll:Je,onActiveDateChange:z,onVisibleRange:Xe,onNewMessageCount:g=>{C.value=g;}},{default:()=>[b["viewport-before"]?.(n),h$1(lt,{items:F.value,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{item:b.item,"date-separator":b["date-separator"],"entry-unread":b["entry-unread"],encryption:b.encryption,system:b.system,message:b.message,"recalled-message":b["recalled-message"],"deleted-message":b["deleted-message"],"unsupported-body":b["unsupported-body"]}),b["viewport-after"]?.(n)]});d.push(h$1("div",{"data-im-thread-viewport-shell":""},[b["active-date"]?.({label:ne.value,visible:X.value&&ne.value!==""}),l,b["entry-unread-navigation"]?.({...n,count:o.value.entryUnreadNavigation?.state==="none"?0:o.value.entryUnreadNavigation?.count??0,loading:p.value,visible:n.initialViewportSettled&&!_.value&&!i$1.value&&!o.value.isHistoryWindow&&o.value.entryUnreadNavigation!==void 0&&o.value.entryUnreadNavigation.state!=="none"&&o.value.entryUnreadNavigation.count>0&&(y.value||o.value.hasOlder)})])),o.value.error!==null&&d.push(b.error?.(n)??h$1("div",{"data-im-thread-error":""}));}return d.push(b["after-list"]?.(n),b["jump-to-latest"]?.({...n,count:C.value,visible:k.value||!B.value||o.value.isHistoryWindow}),b["context-menu"]?.(n),b.composer?.(n)),h$1("section",{"data-im-thread-surface":"","data-conversation-type":t.conversation.conversationType,"data-conversation-id":t.conversation.conversationId},d)}}});function Rn(t){let a=new Map;for(let c of t){if(a.has(c.kind))throw new Error(`\u6D88\u606F renderer kind \u91CD\u590D\u6CE8\u518C\uFF1A${c.kind}`);a.set(c.kind,c.component);}let b=Object.freeze([...a.keys()]);return Object.freeze({kinds:b,resolve:c=>a.get(c)})}var Pn=140,En=120;function tt(t,a){if(t.width<=0||t.height<=0)return 0;let b=Math.max(0,Math.min(t.right,a.right)-Math.max(t.left,a.left)),c=Math.max(0,Math.min(t.bottom,a.bottom)-Math.max(t.top,a.top));return Math.min(1,b*c/(t.width*t.height))}function gt(t,a){return {x:t.x,y:t.top-a,top:t.top-a,bottom:t.bottom+a,left:t.left,right:t.right,width:t.width,height:t.height+a*2,toJSON:()=>({})}}function vt(t){let a=Math.max(0,t.scrollIdleMs??Pn),b=Math.max(0,t.visibilityDwellMs??En),c=Math.min(1,Math.max(0,t.minimumIntersectionRatio??.01)),m=Math.max(0,t.revealMarginPx??0),C=Math.max(0,t.preloadMarginPx??0),_=Math.max(m,C),p=Math.max(0,t.maxPreloadTargets??Number.POSITIVE_INFINITY),S=Math.max(1,t.maxSettledVisible??Number.POSITIVE_INFINITY),I=new Map,O=new Map,i=reactive(new Set),y=new Set,k=new Set,E=[],P=null,B=null,L=null,q=false,te=false,D=false,W=false,$,Z;function j(){$!==void 0&&clearTimeout($),$=void 0;}function ee(){Z!==void 0&&clearTimeout(Z),Z=void 0;}function G(f=false){if(!f&&B!==null||P===null)return;let w=P.getBoundingClientRect(),u=gt(w,_);for(let[F,T]of I){let re=F.getBoundingClientRect();T.ratio=tt(re,w),T.intersecting=T.ratio>0,T.revealIntersecting=_>0?tt(re,u)>0:T.intersecting&&T.ratio>=c;}}function K(f){return f.intersecting&&f.ratio>=c}function V(){for(let[f,w]of I)!w.revealIntersecting||i.has(w.key)||_>m&&(m===0&&!K(w)||m>0&&(P===null||tt(f.getBoundingClientRect(),gt(P.getBoundingClientRect(),m))<=0))||(i.add(w.key),t.onRevealed?.(w.item));}function ne(f,w=false){let u=new Set(f.map(T=>T.key));if(!(!(u.size!==k.size||[...u].some(T=>!k.has(T)))&&!w)){k.clear();for(let T of u)k.add(T);t.onSettledVisibleChange?.(f.map(T=>T.item));}}function X(f,w=false){!w&&f.length===E.length&&f.every((u,F)=>u.key===E[F]?.key&&u.item===E[F]?.item)||(E=f,t.onSettledPreloadChange?.(f.map(u=>u.item)));}function ce(){if(D||q)return;let f=te;te=false,G(),V();let w=P?.getBoundingClientRect(),u=w===void 0?0:(w.top+w.bottom)/2,F=[...I.entries()].filter(([,T])=>K(T)).sort(([T],[re])=>{let A=T.getBoundingClientRect(),z=re.getBoundingClientRect();return Math.abs((A.top+A.bottom)/2-u)-Math.abs((z.top+z.bottom)/2-u)}).slice(0,S).map(([,T])=>T);if(ne(F,f),t.onSettledPreloadChange!==void 0&&w!==void 0){let T=gt(w,C),re=[...I.entries()].filter(([,A])=>A.revealIntersecting).map(([A,z])=>({target:z,rect:A.getBoundingClientRect()})).filter(({target:A,rect:z})=>K(A)||C>0&&tt(z,T)>0).sort((A,z)=>Number(K(z.target))-Number(K(A.target))||Math.abs((A.rect.top+A.rect.bottom)/2-u)-Math.abs((z.rect.top+z.rect.bottom)/2-u)).slice(0,p).map(({target:A})=>A);X(re,f);}for(let T of F)y.has(T.key)||(y.add(T.key),t.onActivated?.(T.item));}function oe(){D||q||(ee(),Z=setTimeout(()=>{Z=void 0,ce();},b));}function o(){D||(te=true,J(true),X([]),G(),V(),ne([]),ee(),j(),$=setTimeout(()=>{$=void 0,J(false),oe();},a));}function J(f){q!==f&&(q=f,t.onScrollingChange?.(f));}function ae(){P?.removeEventListener("scroll",o),B?.disconnect(),L?.disconnect(),B=null,L=null,P=null;}function H(f=true){if(D)return;let w=t.getRoot();if(!(w===P&&P!==null)){if(X([]),ae(),P=w,P===null){f&&!W&&(W=true,Promise.resolve().then(()=>{W=false,D||(H(false),oe());}));return}if(P.addEventListener("scroll",o,{passive:true}),typeof IntersectionObserver<"u"){B=new IntersectionObserver(u=>{for(let F of u){let T=I.get(F.target);T!==void 0&&(T.intersecting=F.isIntersecting,T.ratio=F.intersectionRatio,_===0&&(T.revealIntersecting=F.isIntersecting&&F.intersectionRatio>=c));}V(),oe();},{root:P,threshold:[0,c,1]}),_>0&&(L=new IntersectionObserver(u=>{for(let F of u){let T=I.get(F.target);T!==void 0&&(T.revealIntersecting=F.isIntersecting);}V(),oe();},{root:P,rootMargin:`${_}px 0px`,threshold:0}));for(let u of I.keys())B.observe(u);for(let u of I.keys())L?.observe(u);}else G(),V();}}function N(f){X(E.filter(w=>w.key!==f)),i.delete(f),y.delete(f),k.delete(f);}return {register(f,w){if(D)return;let u=t.getKey(f),F=i.has(u),T=y.has(u),re=w===null?void 0:I.get(w);re!==void 0&&re.key!==u&&(O.delete(re.key),I.delete(w),N(re.key));let A=O.get(u);if(A!==void 0&&A!==w&&(B?.unobserve(A),L?.unobserve(A),I.delete(A),O.delete(u)),w===null){A!==void 0&&(B?.unobserve(A),L?.unobserve(A),I.delete(A),O.delete(u)),N(u);return}let z=I.get(w);if(z?.key===u&&z.item===f){H();return}I.set(w,{item:f,key:u,intersecting:z?.key===u?z.intersecting:false,ratio:z?.key===u?z.ratio:0,revealIntersecting:z?.key===u?z.revealIntersecting:false}),O.set(u,w),H(),B?.observe(w),L?.observe(w),G(true),V(),F&&t.onRevealed?.(f),T&&t.onActivated?.(f),oe();},isRevealed:f=>i.has(t.getKey(f)),isActivated:f=>y.has(t.getKey(f)),isSettledVisible:f=>k.has(t.getKey(f)),isScrolling:()=>q,notifyScroll:o,refresh(){H(),G(true),V(),oe();},reset(){j(),ee(),J(false),te=false,ne([]),X([]),ae(),I.clear(),O.clear(),i.clear(),y.clear();},dispose(){D||(j(),ee(),J(false),te=false,ne([]),X([]),ae(),I.clear(),O.clear(),i.clear(),y.clear(),D=true);}}}function An(t){let a=new Map,b=new Map,c=false,m=p=>{let S=a.get(p.channel);return S===void 0?p.channel:`${p.channel}\0${S.getKey(p.item)}`},C=vt({getRoot:t.getRoot,getKey:m,revealMarginPx:t.revealMarginPx,preloadMarginPx:t.preloadMarginPx,minimumIntersectionRatio:t.minimumIntersectionRatio,scrollIdleMs:t.scrollIdleMs,visibilityDwellMs:t.visibilityDwellMs,onScrollingChange:p=>{for(let S of a.values())S.onScrollingChange?.(p);},onRevealed:p=>a.get(p.channel)?.onRevealed?.(p.item),onActivated:p=>a.get(p.channel)?.onActivated?.(p.item),onSettledPreloadChange:p=>{for(let[S,I]of a){let O=p.filter(i=>i.channel===S).map(i=>i.item);I.onSettledPreloadChange?.(O.slice(0,Math.max(0,I.maxPreloadTargets??Number.POSITIVE_INFINITY)));}},onSettledVisibleChange:p=>{for(let[S,I]of a){let O=p.filter(y=>y.channel===S).map(y=>y.item),i=I.maxSettledVisible===void 0?O:O.slice(0,I.maxSettledVisible);I.onSettledVisibleChange?.(i);}}});function _(p){return S=>{if(c)throw new Error("Thread visibility target group \u5DF2\u91CA\u653E");if(a.has(p))throw new Error(`Thread visibility channel \u5DF2\u5B58\u5728: ${p}`);a.set(p,S);let I=new Map;b.set(p,I);let O=false,i=E=>({channel:p,item:E});function y(){for(let E of I.values())C.register(E.target,null);I.clear(),S.onScrollingChange?.(false),S.onSettledVisibleChange?.([]),S.onSettledPreloadChange?.([]);}return {register(E,P){if(O||c)return;let B=S.getKey(E),L=I.get(B);if(P===null){L!==void 0&&(C.register(L.target,null),I.delete(B));return}let q=L?.target.item===E?L.target:i(E);I.set(B,{target:q,element:P}),C.register(q,P);},isRevealed:E=>C.isRevealed(i(E)),isActivated:E=>C.isActivated(i(E)),isSettledVisible:E=>C.isSettledVisible(i(E)),isScrolling:C.isScrolling,notifyScroll:C.notifyScroll,refresh:C.refresh,reset:y,dispose(){O||(y(),O=true,a.delete(p),b.delete(p));}}}}return {createFactory:_,refresh:C.refresh,dispose(){if(!c){for(let p of b.values())for(let S of p.values())C.register(S.target,null);for(let p of a.values())p.onSettledPreloadChange?.([]);b.clear(),a.clear(),C.dispose(),c=true;}}}}export{at as ImThreadBodySwitch,lt as ImThreadItems,Mn as ImThreadSurface,ut as ImThreadViewport,hn as createImThreadSurfaceContext,Rn as createMessageRendererRegistry,An as createThreadVisibilityTargetGroup,vt as createThreadVisibilityTargets,pn as provideImThreadSurfaceContext,Xt as useImText,ct as useImThreadSurfaceContext,Zt as useOptionalImThreadReadActions};
|
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-
|
|
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-PCUF66O4.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-TMIAJBDG.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-7DZ5R7KR.js';import'./chunk-TWSAZG5J.js';import'./chunk-DX6Q2DQD.js';import'./chunk-6FH2DBQE.js';export{wa as canTransmit,ua as canTransmitByType,va as canTransmitContent,ta as requiresForwardTypeConfirmation}from'./chunk-6WAB2ZRF.js';import'./chunk-WOT6VMZA.js';
|