k2-im 0.1.54 → 0.1.55

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