k2-im 0.1.53 → 0.1.54

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