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