k2-im 0.1.50 → 0.1.51
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/README.md +21 -2
- package/dist/browser-2MUNHRDS.js +1 -0
- package/dist/browser-RTCHWSQ2.js +2 -0
- package/dist/browser.js +1 -1
- package/dist/chat-kit-pinia.d.ts +40 -5
- package/dist/chat-kit-pinia.js +1 -1
- package/dist/chat-kit-vue.d.ts +3 -1
- package/dist/chat-kit-vue.js +1 -1
- package/dist/chat-kit.d.ts +20 -3
- package/dist/chat-kit.js +1 -1
- package/dist/{chunk-JOD67FT3.js → chunk-2R4KVYRU.js} +1 -1
- package/dist/{chunk-2LUSPYH5.js → chunk-HJYSLPY4.js} +1 -1
- package/dist/chunk-JXCG3DYB.js +1 -0
- package/dist/chunk-KV7I2SAC.js +8 -0
- package/dist/chunk-OUXI5ZYL.js +2 -0
- package/dist/chunk-Q6TFPZMF.js +2 -0
- package/dist/{chunk-KFVKMPCY.js → chunk-YJV5ZN3V.js} +1 -1
- package/dist/crypto.worker.js +25 -0
- package/dist/i18n.d.ts +1 -1
- package/dist/i18n.js +1 -1
- package/dist/index.d.ts +20 -3
- package/dist/index.js +1 -1
- package/dist/request-crypto.d.ts +31 -0
- package/dist/request-crypto.js +1 -0
- package/dist/sdk.d.ts +20 -3
- package/dist/sdk.js +1 -1
- package/package.json +5 -1
- package/dist/browser-YLMJKRLM.js +0 -2
- package/dist/chunk-6EPXLFLD.js +0 -2
- package/dist/chunk-DLZBFAYO.js +0 -1
- package/dist/chunk-JHGB6KYI.js +0 -2
- package/dist/chunk-ZFYM6YHK.js +0 -7
package/dist/chat-kit-vue.d.ts
CHANGED
|
@@ -99,7 +99,7 @@ type LastMessageSummary = {
|
|
|
99
99
|
} | {
|
|
100
100
|
kind: 'gift';
|
|
101
101
|
}
|
|
102
|
-
/** 直播间分享。`title`
|
|
102
|
+
/** 直播间分享。`title` 是房间标题,没有房间标题再用主播昵称。 */
|
|
103
103
|
| {
|
|
104
104
|
kind: 'liveRoom';
|
|
105
105
|
title?: string;
|
|
@@ -1308,6 +1308,8 @@ interface ImSdkErrorShape {
|
|
|
1308
1308
|
category: ImSdkErrorCategory;
|
|
1309
1309
|
operation: string;
|
|
1310
1310
|
retryable: boolean;
|
|
1311
|
+
/** 执行设施已终止;宿主可在保存草稿后提供用户主动整页刷新,不得自动重试。 */
|
|
1312
|
+
recovery?: 'reload-app';
|
|
1311
1313
|
conversation?: ConversationRef;
|
|
1312
1314
|
details?: Readonly<Record<string, unknown>>;
|
|
1313
1315
|
cause?: unknown;
|
package/dist/chat-kit-vue.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {h,C,p,i,q,m,z,B,o,j,g}from'./chunk-2LUSPYH5.js';import {f,h as h$2,i as i$1,g as g$1}from'./chunk-JOD67FT3.js';import {a}from'./chunk-Q2DEFN53.js';import'./chunk-6EPXLFLD.js';import'./chunk-ZFYM6YHK.js';import'./chunk-JHGB6KYI.js';import'./chunk-WOT6VMZA.js';import {defineComponent,h as h$1,onUpdated,onUnmounted,ref,provide,watch,nextTick,onMounted,onBeforeUnmount,computed,inject,isVNode,cloneVNode,Fragment,reactive,shallowReactive}from'vue';function fn(t){let o=0,v=0;for(let c of t)c.kind==="video"?v+=1:o+=1;return {imageCount:o,videoCount:v}}function mn(t){return {systemMessage:o=>o.body.system!==void 0?g$1(o.body.system,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):"",mediaPlaceholder:o=>i$1(o.contentType,{locale:t.locale(),durationMs:o.body.voice?.durationMs,stickerImageType:o.body.sticker?.imageType,gameType:o.body.game?.gameType,callKind:o.body.call?.callKind,...o.body.filesAlbum===void 0?{}:{filesAlbum:{count:o.body.filesAlbum.items.length,caption:o.body.filesAlbum.caption}},...o.body.mediaAlbum===void 0?{}:{mediaAlbum:fn(o.body.mediaAlbum.items)}}),lastMessage:o=>o.lastMessageSummary!==void 0?h$2(o.lastMessageSummary,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):o.lastMessagePreview,failureText:o=>o.failure?.displayCode!==void 0?f(o.failure.displayCode,{locale:t.locale(),mediaKind:o.failure.mediaKind,params:o.failure.params}):o.failure?.message??""}}var Gt=Symbol("ImThreadReadActions");function Wt(t){provide(Gt,t);}function hn(){return inject(Gt,void 0)}var Tt=defineComponent({name:"ImThreadBodySwitch",inheritAttrs:false,props:{message:{type:Object,required:true},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup(t,{attrs:o,slots:v}){return Wt(t.readActions),()=>{let c=h(t.message),m=t.rendererRegistry.resolve(c);return m!==void 0?h$1(m,{...o,message:t.message,presentation:t.presentation}):v["unsupported-body"]!==void 0?v["unsupported-body"]({kind:c,message:t.message}):h$1("span",{"data-im-thread-unsupported-body":c,"aria-hidden":"true"})}}});var bt=Symbol("ImThreadViewportRegistration");function ut(){return inject(bt,void 0)}var 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:o}){let v=ut(),c=new Map,m=new Map;onUpdated(()=>{let a=new Set,h=new Set;for(let f of t.items)f.kind==="message"||f.kind==="system"?a.add(f.key):f.kind==="date-separator"&&h.add(f.key);for(let f of c.keys())a.has(f)||c.delete(f);for(let f of m.keys())h.has(f)||m.delete(f);}),onUnmounted(()=>{c.clear(),m.clear();});function A(a,h){let f=Array.isArray(h)?h:[h];return f.length===1&&isVNode(f[0])?cloneVNode(f[0],{key:a}):h$1(Fragment,{key:a},f)}function C(a,h){let f=c.get(a);if(f?.messageId===h)return f.setElement;let R=D=>{v?.registerMessageNode(h,D instanceof HTMLElement?D:null);};return c.set(a,{messageId:h,setElement:R}),R}function V(a,h){let f=m.get(a);if(f!==void 0)return f.label=h,f.setElement;let R={label:h,setElement:D=>{v?.registerDateNode(a,R.label,D instanceof HTMLElement?D:null);}};return m.set(a,R),R.setElement}function M(a){return o.encryption?.({item:a})??h$1("div",{"data-im-thread-encryption":a.key})}function g(a){let h=V(a.key,a.label);return o["date-separator"]?.({item:a,setElement:h})??h$1("div",{ref:h,"data-im-thread-date-separator":a.key},a.label)}function x(a){v?.registerEntryUnreadNode(a instanceof HTMLElement?a:null);}function u(a){return o["entry-unread"]?.({item:a,setElement:x})??h$1("div",{ref:x,"data-im-thread-entry-unread":a.key,...a.count===void 0?{}:{"data-count":String(a.count)}})}function y(a){let h=C(a.key,a.message.id);return o.item!==void 0?o.item({item:a,setElement:h}):o.message!==void 0?o.message({item:a,setElement:h}):a.message.deletedForEveryone!==void 0?o["deleted-message"]?.({item:a,setElement:h})??h$1("article",{ref:h,"data-im-thread-message-id":a.message.id,"data-im-thread-message-terminal":"deleted-for-everyone"},[h$1("span",{"data-im-thread-anchor-point":""})]):a.message.recalled!==void 0?o["recalled-message"]?.({item:a,setElement:h})??h$1("article",{ref:h,"data-im-thread-message-id":a.message.id,"data-im-thread-message-terminal":"recalled"},[h$1("span",{"data-im-thread-anchor-point":""})]):a.kind==="system"&&o.system!==void 0?o.system({item:a,setElement:h}):h$1("article",{ref:h,"data-im-thread-message-id":a.message.id,"data-first-of-run":a.kind==="message"?String(a.firstOfRun):void 0},[h$1("span",{"data-im-thread-anchor-point":""}),h$1(Tt,{message:a.message,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{"unsupported-body":o["unsupported-body"]===void 0?void 0:f=>o["unsupported-body"]?.(f)})])}return ()=>h$1("div",{"data-im-thread-items":""},t.items.map(a=>{switch(a.kind){case "encryption":return o.item!==void 0?A(a.key,o.item({item:a})):A(a.key,M(a));case "date-separator":return o.item!==void 0?A(a.key,o.item({item:a,setElement:V(a.key,a.label)})):A(a.key,g(a));case "entry-unread":return o.item!==void 0?A(a.key,o.item({item:a,setElement:x})):A(a.key,u(a));case "system":case "message":return A(a.key,y(a))}return a}))}});function nt(){let t,o=0,v=0,c;function m(){t!==void 0&&clearTimeout(t),t=void 0,c=void 0;}function A(){t=void 0;let V=o-performance.now();if(V>0){v=o,t=setTimeout(A,V);return}let M=c;c=void 0,M?.();}function C(V,M){o=performance.now()+M,c=V,!(t!==void 0&&o>=v)&&(t!==void 0&&clearTimeout(t),v=o,t=setTimeout(A,M));}return {schedule:C,cancel:m}}function $t(t){let o=new Set,v=new Map,c=new Set;function m(){let M=[...c];c.clear();let g=[],x=[];for(let u of M)if(u.active)try{g.push({job:u,commit:u.read()});}catch(y){x.push(y);}for(let{job:u,commit:y}of g)if(u.active)try{y?.();}catch(a){x.push(a);}x.length>0&&queueMicrotask(()=>{throw new AggregateError(x,"Thread layout measurement failed")});}function A(M){M.active&&(c.add(M),t.requestFrame(m));}function C(M,g){let x=v.get(g);x?.delete(M),x?.size===0&&(v.delete(g),t.unobserve(g));}function V(M){let g={read:M,elements:new Set,active:true};return o.add(g),{observe(x){if(!g.active)return;let u=new Set(x),y=u.size!==g.elements.size||[...u].some(a=>!g.elements.has(a));for(let a of g.elements)u.has(a)||C(g,a);for(let a of u){if(g.elements.has(a))continue;let h=v.get(a);h===void 0&&(h=new Set,v.set(a,h),t.observe(a)),h.add(g);}g.elements=u,y&&u.size>0&&A(g);},invalidate:()=>A(g),dispose(){g.active=false,c.delete(g),o.delete(g);for(let x of g.elements)C(g,x);g.elements.clear();}}}return {register:V,hasTarget:M=>v.has(M),observeTargets:()=>v.forEach((M,g)=>t.observe(g)),resized:M=>M.forEach(g=>v.get(g)?.forEach(A)),invalidateAll:()=>o.forEach(A),dispose(){for(let M of o)M.active=false;o.clear(),c.clear(),v.clear();}}}var Qt=120,Vn=500,Ye=.5,xn=8;function wt(t){let o=t.ownerDocument.defaultView?.devicePixelRatio;return 1+1/(o!==void 0&&Number.isFinite(o)&&o>0?o: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:o$1,expose:v,slots:c}){let m$1=ref(null),A=ref(null),C$1=new Map,V,M=new Map,g$1=new Set,x=new Map,u=0,y=[],a,h,f,R,D=$t({requestFrame:le,observe:e=>f?.observe(e),unobserve:e=>{e!==m$1.value&&e!==A.value&&!M.has(e)&&f?.unobserve(e);}}),$,B$1=false,O,z$1=new Set,j$1=false,K,q$1=0,te="",we=1,J=false,ee=false,_=true,X=false,ve=false,be=true,ne=false,i=0,ae=-1,Me=-1,pe=nt(),N,ie,H,F,se=ref(true),Pe=ref(0),ue=C(e=>{Pe.value=e,o$1("new-message-count",e);});function He(e){let r=Number.isFinite(t.followThreshold)?Math.max(0,t.followThreshold):0;return e.scrollHeight-e.clientHeight-e.scrollTop<=r}function p$1(e=t.messageIds){return e.flatMap(r=>{let s=C$1.get(r);if(s===void 0)return [];let T=s.getBoundingClientRect(),E=s.querySelector("[data-im-thread-anchor-point]");return [{id:r,top:T.top,bottom:T.bottom,anchorTop:E?.getBoundingClientRect().top??T.top}]})}function S(e="",r=1){let s=Math.min(1,Math.max(0,r));te!==""&&te!==e&&x.get(te)?.element.style.removeProperty("opacity"),te=e,we=s,e!==""&&x.get(e)?.element.style.setProperty("opacity",String(s));}function I(){S();}function P(){let e=m$1.value;if(j$1||e===null||!t.activeDateEnabled)return;let r=[...x.entries()].filter(([,W])=>e.contains(W.element)).map(([W,U])=>{let Ee=U.element.getBoundingClientRect();return {key:W,label:U.label,top:Ee.top,height:Ee.height}}).sort((W,U)=>W.top-U.top),s=e.getBoundingClientRect(),T=r.find(W=>W.height>0)?.height??28,E=g({markers:r,viewportTop:s.top,overlayTop:Number.isFinite(t.activeDateOffset)?Math.max(0,t.activeDateOffset):0,overlayHeight:T});if(E===null){I(),o$1("active-date-change",null);return}S(E.inlineDateKey,E.inlineOpacity),o$1("active-date-change",E);}function k(e){h={scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,width:e.clientWidth,height:e.clientHeight};}function Z(e){let r=h;if(r===void 0)return false;let s=Math.max(0,e.scrollHeight-e.clientHeight);return s<r.scrollHeight-r.height&&r.scrollTop>s&&Math.abs(e.scrollTop-s)<=wt(e)}function Y(e){return Z(e)||K!==void 0&&(K.behavior==="smooth"||Math.abs(e.scrollTop-K.targetTop)<=wt(e))?0:e.scrollTop-u}function re(e,r){r!==0&&(u=e.scrollTop-r,K=void 0,Xe());}function Ae(e,r){let s=Y(e);if(H!==void 0)return H.expectedOffset-=s,Qe(),re(e,s),X||Ze(),false;let T=h;if(T===void 0)return false;let E=a,W=E===void 0?void 0:p$1([E.id])[0],U=e.scrollTop-T.scrollTop,Ee=Z(e)?0:U,Ue=E===void 0||W===void 0?0:(W.anchorTop??W.top)-r.top-E.offset+U;return T.scrollHeight!==e.scrollHeight||T.width!==e.clientWidth||T.height!==e.clientHeight||Math.abs(Ue)>Ye?(h=void 0,!J&&!ee&&!t.loadingOlder&&!t.loadingNewer&&!t.hasNewer&&t.resizeFollowEnabled&&se.value&&Math.abs(Ee)<=Ye?(G(),true):(E!==void 0&<({...E,offset:E.offset-Ee}),re(e,s),false)):false}function Q(){let e=m$1.value;if(j$1||e===null)return;let r=e.getBoundingClientRect();if(Ae(e,r))return;let s=$!==void 0&&B$1?t.messageIds.filter(U=>g$1.has(U)):t.messageIds,T=p$1(s);if($!==void 0&&B$1&&T.length===0){se.value=He(e);return}let E=T.filter(U=>B({viewportTop:r.top,viewportBottom:r.bottom,messageTop:U.top,messageBottom:U.bottom,margin:t.visibleMargin})).map(U=>U.id),W=E.length!==y.length||E.some((U,Ee)=>y[Ee]!==U);y=Object.freeze(E),a=o(T,{top:r.top,bottom:r.bottom}),k(e),ue.acknowledgeVisible(E),se.value=He(e),W&&o$1("visible-range",y),o$1("settled",{visibleMessageIds:y,...y.length===0?{}:{newestVisibleMessageId:y[y.length-1]},isAtBottom:se.value,newMessageCount:Pe.value});}function le(e){if(z$1.add(e),O!==void 0)return;let r=()=>{O=void 0;let s=[...z$1];z$1.clear(),s.forEach(T=>T());};typeof globalThis.requestAnimationFrame=="function"?O=globalThis.requestAnimationFrame(r):O=globalThis.setTimeout(r,0);}function he(){O!==void 0&&(typeof O=="number"&&typeof globalThis.cancelAnimationFrame=="function"?globalThis.cancelAnimationFrame(O):globalThis.clearTimeout(O),O=void 0,z$1.clear());}function oe(){le(Q);}function $e(){let e=m$1.value;if(e===null)return;let r=e.getBoundingClientRect(),s=o(p$1(),{top:r.top,bottom:r.bottom});s!==void 0&&(a=s,k(e));}function ot(){return _&&H===void 0&&!ee&&!t.loadingOlder}function at(){$e(),_=false,ae=i,ee=true,se.value=false,o$1("reach-start"),le(()=>{t.loadingOlder||(ee=false);});}function it(e){return t.hasNewer&&!J&&!t.loadingOlder&&!t.loadingNewer&&He(e)}function Je(){J=true,se.value=false,Me=i,o$1("reach-end"),le(()=>{t.loadingNewer||(J=false);});}function de(){let e=m$1.value;e===null||i===Me||!it(e)||Je();}function Xe(){let e=m$1.value;if(j$1||e===null)return;let r=e.scrollTop,s=Z(e),T=K,E=false;if(T!==void 0){let U=Math.abs(r-T.targetTop)<=wt(e);E=T.behavior==="smooth"||U,(T.behavior!=="smooth"||U)&&(K=void 0);}!E&&!s&&!X&&be&&H===void 0&&r!==u&&(X=true,ve=true,i+=1);let W=X&&!E&&!s&&r!==u;if(W&&(q$1+=1,o$1("user-scroll"),le(P)),X&&!ne&&ye(),!_&&ve&&i!==ae&&r<u&&r>Le()&&je(),H!==void 0&&!E)if(X){let U=Ge();U!==void 0&&(H.expectedOffset=U);}else Qe(),Ze();ot()&&W&&r>=0&&m({previousScrollTop:u,currentScrollTop:r,topThreshold:t.olderPrefetchThreshold})&&at(),W&&it(e)&&z({previousScrollTop:u,currentScrollTop:r,isAtBottom:He(e),isHistoryWindow:t.hasNewer,isPageSettling:E})&&Je(),u=r,oe();}function ze(e,r="auto"){K={targetTop:e,behavior:r};}function st(e){let r=H,s=A.value;if(!(r===void 0||s===null)){if(r.visualOffset=Math.abs(e)<=Ye?0:e,r.visualOffset===0){s.style.removeProperty("transform"),s.style.removeProperty("will-change");return}s.style.setProperty("transform",`translate3d(0, ${r.visualOffset}px, 0)`),s.style.setProperty("will-change","transform");}}function De(){F!==void 0&&(clearTimeout(F),F=void 0),H!==void 0&&H.visualOffset!==0&&(a=void 0,h=void 0);let e=A.value;e?.style.removeProperty("transform"),e?.style.removeProperty("will-change"),H=void 0,K=void 0;}function Ge(){let e=m$1.value,r=H;if(e===null||r===void 0)return;let s=C$1.get(r.anchor.id);return s===void 0?void 0:(s.querySelector("[data-im-thread-anchor-point]")??s).getBoundingClientRect().top-e.getBoundingClientRect().top}function Qe(){let e=H,r=Ge();if(e===void 0||r===void 0)return;let s=e.expectedOffset-r;Math.abs(s)<=Ye||(st(e.visualOffset+s),e.committed=false,e.attempts=0);}function _e(){F!==void 0&&clearTimeout(F),F=setTimeout(()=>{F=void 0,!(X||H?.committed!==true)&&De();},Vn);}function Fe(){let e=m$1.value,r=H;if(j$1||e===null||r===void 0||X)return;let s=r.visualOffset;if(Math.abs(s)<=Ye){r.committed=true,_e();return}let T=Math.max(0,e.scrollHeight-e.clientHeight),E=Math.min(T,Math.max(0,e.scrollTop-s));if(ze(E),e.scrollTop=E,Math.abs(e.scrollTop-E)>Ye){K=void 0,r.committed=false,r.attempts+=1,r.attempts<xn?Ze():(De(),K=void 0,u=e.scrollTop);return}st(0),u=e.scrollTop,r.expectedOffset=Ge()??r.expectedOffset,r.committed=true,r.attempts=0,_e();}function Ze(){F!==void 0&&clearTimeout(F),F=setTimeout(()=>{F=void 0,Fe();},Qt);}function Oe(e){e!==void 0&&(H===void 0&&(H={anchor:e,expectedOffset:e.offset,visualOffset:0,committed:false,attempts:0}),Qe(),!X&&Fe());}function lt(e){let r=m$1.value;if(r===null||e===void 0)return;let s=r.getBoundingClientRect(),T=q(e,p$1([e.id]),{top:s.top,bottom:s.bottom});if(T!==void 0){let E=Math.max(0,r.scrollHeight-r.clientHeight),W=Math.min(E,Math.max(0,r.scrollTop+T));ze(W),r.scrollTop=W,u=r.scrollTop,h=void 0;}}function Le(){return Number.isFinite(t.olderPrefetchThreshold)?Math.max(0,t.olderPrefetchThreshold):0}function Ce(){q$1+=1,K?.behavior==="smooth"&&(K=void 0),ve=false,X||(X=true,i+=1),ne&&pe.cancel();}function je(){let e=m$1.value;if(!(e===null||i===ae)){if(ee||t.loadingOlder){ae=i,_=false;return}H!==void 0&&De(),_=true,ot()&&e.scrollTop<=Le()&&at();}}function qe(){q$1+=1,a=void 0,h=void 0,pe.cancel(),De(),X=false,ve=false,ne=false,N=void 0,ie=void 0,i+=1,ae=-1,Me=-1,_=true,ee=false,J=false,K=void 0;}function Re(){ne||(pe.cancel(),X=false,ve=false,H!==void 0&&(H.attempts=0),Fe());}function ye(){ne||pe.schedule(Re,Qt);}function Ne(){K=void 0,Re();}function dt(e){be=false,ne=true,Ce(),N=e.touches?.[0]?.clientY;}function et(e){let r=e.touches?.[0]?.clientY;r!==void 0&&(N!==void 0&&r!==N&&(q$1+=1),N!==void 0&&r>N?je():N!==void 0&&r<N&&de(),N=r);}function n(){ne=false,N=void 0,ye();}function l(e){be=true,Ce(),e.deltaY<0?je():e.deltaY>0&&de(),ye();}function d(e){e.pointerType!=="touch"&&(be=true,Ce(),ie=e.clientY,ye());}function b(e){e.pointerType==="touch"||!X||ie===void 0||(e.clientY!==ie&&(q$1+=1),e.clientY<ie?je():e.clientY>ie&&de(),ie=e.clientY,ye());}function w(e){e.pointerType!=="touch"&&(ie=void 0,ye());}function L(e){["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(e.key)&&(be=true,Ce(),e.key==="ArrowUp"||e.key==="PageUp"||e.key==="Home"||e.key===" "&&e.shiftKey?je():de(),ye());}function G(e="auto"){let r=m$1.value;if(r===null)return;q$1+=1,h=void 0,De();let s=Math.max(0,r.scrollHeight-r.clientHeight);ze(s,e),r.scrollTo?.({top:s,behavior:e}),r.scrollTop!==s&&(r.scrollTop=s),u=r.scrollTop,ue.clear(),B$1=false,Q();}function ge(){let e=m$1.value;return e!==null&&e.clientWidth>0&&e.clientHeight>0}function ce(){let e=m$1.value;return ge()&&e!==null&&e.scrollHeight>e.clientHeight+1}function Te(e,r={}){return Ve(C$1.get(e),r)}function Ve(e,r){let s=m$1.value;if(s===null||e===void 0||!s.contains(e)||s.clientHeight<=0)return false;q$1+=1,De();let T=s.getBoundingClientRect(),E=e.getBoundingClientRect(),W=r.block??"center",U;W==="start"?U=s.scrollTop+E.top-T.top:W==="end"?U=s.scrollTop+E.bottom-T.bottom:W==="nearest"?E.top>=T.top&&E.bottom<=T.bottom?U=s.scrollTop:E.top<T.top?U=s.scrollTop+E.top-T.top:U=s.scrollTop+E.bottom-T.bottom:U=j({currentScrollTop:s.scrollTop,scrollHeight:s.scrollHeight,targetHeight:E.height,targetTop:E.top,viewportHeight:s.clientHeight,viewportTop:T.top});let Ee=Math.max(0,s.scrollHeight-s.clientHeight),Ue=Math.min(Ee,Math.max(0,U));h=void 0;let We=r.behavior??"auto";return ze(Ue,We),s.scrollTo?.({top:Ue,behavior:We}),s.scrollTop!==Ue&&(s.scrollTop=Ue),u=s.scrollTop,B$1=false,Q(),true}function xe(e){let r=m$1.value;if(r===null||e===void 0||!r.contains(e)||r.clientHeight<=0)return null;let s=e.getBoundingClientRect(),T=r.scrollTop+s.top-r.getBoundingClientRect().top+s.height/2,E=r.clientHeight/2;return {older:T<E-1,newer:r.scrollHeight-T<E-1}}function gt(){return xe(V)}function nn(e){return xe(C$1.get(e))}function rn(){ue.clear();}function on(){J=true,se.value=false;}function an(){J=false,oe();}function sn(e,r){let s=C$1.get(e);if(s!==r){if(s!==void 0&&($?.unobserve(s),s.style.removeProperty("--im-thread-placeholder-play-state"),D.hasTarget(s)||f?.unobserve?.(s),M.delete(s),g$1.delete(e)),r===null){C$1.delete(e),g$1.delete(e);return}C$1.set(e,r),M.set(r,e),typeof globalThis.IntersectionObserver=="function"&&r.style.setProperty("--im-thread-placeholder-play-state","paused"),$?.observe(r),f?.observe(r),oe();}}function ln(e,r,s){let T=x.get(e);if(s===null){x.delete(e);return}x.set(e,{element:s,label:r}),te===e&&s.style.setProperty("opacity",String(we)),T?.element!==s&&(s.dataset.imThreadDateSeparator=e);}return provide(bt,{registerLayoutMeasurement:D.register,registerMessageNode:sn,registerDateNode:ln,registerEntryUnreadNode:e=>{V=e??void 0;}}),watch(()=>t.contentKey,(e,r)=>{if(e===r)return;qe();let s=m$1.value;s!==null&&(u=s.scrollTop);},{flush:"sync"}),watch(()=>t.messageIds,async(e,r)=>{if(e.length===r.length&&e.every((fe,Ke)=>fe===r[Ke]))return;let s=m$1.value;if(s===null)return;let T=new Set(r);r.length>0&&e.length>0&&!e.some(fe=>T.has(fe))&&qe();let W=t.contentKey,U=q$1,Ee=se.value,Ue=r[r.length-1],We=Ue===void 0?-1:e.indexOf(Ue),tt=We<0?[]:e.slice(We+1).filter(fe=>!T.has(fe)),dn=tt.some(fe=>t.pendingSendMessageIds.includes(fe)),vt=J||t.loadingNewer||ee||t.loadingOlder,un=e.length===r.length&&e.every(fe=>T.has(fe))&&e.some((fe,Ke)=>fe!==r[Ke]),Ot=r[0],Vt=Ot!==void 0&&e.indexOf(Ot)>0,ht;if(a!==void 0&&(Vt||tt.length>0&&vt)){let fe=s.getBoundingClientRect(),Ke=p$1([a.id]),pt=Ke[0],cn=pt!==void 0&&pt.bottom>fe.top&&pt.top<fe.bottom?Ke:p$1();ht=p(a,cn,{top:fe.top,bottom:fe.bottom});}if(await nextTick(),!(j$1||t.contentKey!==W||q$1!==U)){if(dn&&t.followNewMessages){G();return}if(un&&Ee&&t.followNewMessages&&t.resizeFollowEnabled&&!t.hasNewer&&!vt){G();return}if(Vt&&(ee=false,Oe(ht)),tt.length>0){if(vt){J=false,H===void 0&<(ht),se.value=false,oe();return}(Ee||tt.some(Ke=>t.shouldFollowAppendedMessage?.(Ke)===true))&&t.followNewMessages?G():ue.add(tt);}oe();}},{flush:"pre"}),watch(()=>t.loadingNewer,(e,r)=>{e||!r||!J||le(()=>{t.loadingNewer||(J=false);});},{flush:"pre"}),watch(()=>t.loadingOlder,(e,r)=>{if(e){ee=true;return}!r||!ee||le(()=>{t.loadingOlder||(ee=false);});},{flush:"pre"}),onMounted(()=>{let e=m$1.value;if(e!==null){if(u=e.scrollTop,e.addEventListener("scroll",Xe,{passive:true}),e.addEventListener("scrollend",Ne,{passive:true}),e.addEventListener("touchstart",dt,{passive:true}),e.addEventListener("touchmove",et,{passive:true}),e.addEventListener("touchend",n,{passive:true}),e.addEventListener("touchcancel",n,{passive:true}),e.addEventListener("wheel",l,{passive:true}),e.addEventListener("pointerdown",d,{passive:true}),e.addEventListener("pointermove",b,{passive:true}),e.addEventListener("pointerup",w,{passive:true}),e.addEventListener("pointercancel",w,{passive:true}),e.addEventListener("keydown",L),typeof globalThis.ResizeObserver=="function"){f=new globalThis.ResizeObserver(r=>{if(j$1||m$1.value===null)return;D.resized(r.map(T=>T.target)),r.some(({target:T})=>T===e||T===A.value||M.has(T))&&Q();}),f.observe(e),A.value!==null&&f.observe(A.value);for(let r of C$1.values())f.observe(r);D.observeTargets();}if(R=e.ownerDocument.fonts,R?.addEventListener("loadingdone",D.invalidateAll),typeof globalThis.IntersectionObserver=="function"){$=new globalThis.IntersectionObserver(r=>{for(let s of r){let T=M.get(s.target);if(T===void 0)continue;let E=s.target,W=s.isIntersecting?"running":"paused";E.style.getPropertyValue("--im-thread-placeholder-play-state")!==W&&E.style.setProperty("--im-thread-placeholder-play-state",W),s.isIntersecting?g$1.add(T):g$1.delete(T);}B$1=true,oe();},{root:e,rootMargin:`${Number.isFinite(t.visibleMargin)?Math.max(0,t.visibleMargin):0}px 0px`});for(let r of C$1.values())$.observe(r);}oe();}}),onBeforeUnmount(()=>{j$1=true;let e=m$1.value;e!==null&&e.removeEventListener("scroll",Xe),e!==null&&(e.removeEventListener("scrollend",Ne),e.removeEventListener("touchstart",dt),e.removeEventListener("touchmove",et),e.removeEventListener("touchend",n),e.removeEventListener("touchcancel",n),e.removeEventListener("wheel",l),e.removeEventListener("pointerdown",d),e.removeEventListener("pointermove",b),e.removeEventListener("pointerup",w),e.removeEventListener("pointercancel",w),e.removeEventListener("keydown",L)),pe.cancel(),De(),he(),R?.removeEventListener("loadingdone",D.invalidateAll),D.dispose(),f?.disconnect(),$?.disconnect(),I(),V=void 0;for(let r of C$1.values())r.style.removeProperty("--im-thread-placeholder-play-state");C$1.clear(),M.clear(),g$1.clear(),x.clear(),ue.clear();}),v({getViewportElement:()=>m$1.value,clearNewMessageBadge:rn,clearActiveDate:I,isAtBottom:computed(()=>se.value),isMeasurable:ge,isScrollable:ce,getMessageCenteringNeeds:nn,newMessageCount:computed(()=>Pe.value),prepareHistoryPageAppend:on,cancelHistoryPageAppend:an,trackRemoteMessageIds:(e,r)=>ue.trackRemote(e,r),scrollToLatest:G,scrollToMessage:Te,scrollToEntryUnread:()=>Ve(V,{block:"center",behavior:"auto"}),getEntryUnreadCenteringNeeds:gt,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:A,"data-im-thread-viewport-content":""},c.default?.())])}});var Zt=Symbol("ImThreadSurfaceContext");function Cn(t){if(typeof t.getState!="function")throw new TypeError("ImThreadSurfaceContext.getState \u5FC5\u987B\u662F\u51FD\u6570");if(typeof t.actions?.loadOlder!="function")throw new TypeError("ImThreadSurfaceContext.actions.loadOlder \u5FC5\u987B\u662F\u51FD\u6570");if(typeof t.formatDate!="function")throw new TypeError("ImThreadSurfaceContext.formatDate \u5FC5\u987B\u662F\u51FD\u6570");return Object.freeze({...t,actions:Object.freeze({...t.actions})})}function Nn(t){provide(Zt,t);}function Rt(){let t=inject(Zt);if(t===void 0)throw new Error("ImThreadSurface \u9700\u8981\u663E\u5F0F context prop \u6216 provideImThreadSurfaceContext");return t}function Fn(t,o){if(t.key!==o.key||t.kind!==o.kind)return false;switch(o.kind){case "message":return t.kind==="message"&&t.message===o.message&&t.firstOfRun===o.firstOfRun;case "system":return t.kind==="system"&&t.message===o.message;case "date-separator":return t.kind==="date-separator"&&t.label===o.label;case "entry-unread":return t.kind==="entry-unread"&&t.count===o.count;case "encryption":return true}}function en(t,o){if(t===void 0)return o;let v=new Map(t.map(m=>[m.key,m])),c=o.map(m=>{let A=v.get(m.key);return A!==void 0&&Fn(A,m)?A:m});return t.length===c.length&&c.every((m,A)=>m===t[A])?t:c}var Et=Object.freeze({followThreshold:120,olderPrefetchThreshold:120,visibleReadDelay:300,visibleMargin:8,activeDateOffset:16,activeDateIdleDelay:1500}),St=Object.freeze({enabled:true,maxFillPages:8}),Un=8,Bn=160;function jn(t,o){return t?.conversationType===o.conversationType&&t.conversationId===o.conversationId}var Kn=defineComponent({name:"ImThreadSurface",props:{conversation:{type:Object,required:true},context:{type:Object,default:void 0},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0},viewportOptions:{type:Object,default:()=>({})},initialViewportOptions:{type:Object,default:()=>({})},hooks:{type:Object,default:void 0}},setup(t,{expose:o,slots:v}){let c=t.context??Rt(),m=ref(null),A=ref(0),C=ref(false),V=ref(false),M=ref(false),g,x,u,y=ref(false),a$1=ref(false),h=ref(false),f=false,R,D=ref(true),$=[],B=nt(),O=0,z=ref(0),j,K=null,q="",te="",we="",J=false,ee=false,_=ref(false),X=ref(""),ve=ref(false),be=nt(),ne,i$1=computed(()=>c.getState()),ae=computed(()=>!!i$1.value.pendingLocationMessageId),Me=computed(()=>i$1.value.pageVisible??c.isPageVisible?.()??true),pe=computed(()=>i$1.value.pageEngaged??c.isPageEngaged?.()??true),N=computed(()=>jn(i$1.value.activeConversation,t.conversation)),ie=computed(()=>({...Et,...t.viewportOptions})),H=computed(()=>{let n=t.initialViewportOptions.maxFillPages??St.maxFillPages;return {enabled:t.initialViewportOptions.enabled??St.enabled,maxFillPages:Number.isFinite(n)?Math.max(0,Math.floor(n)):St.maxFillPages}}),F=computed(()=>!N.value||!i$1.value.ready?"":`${t.conversation.conversationType}\0${t.conversation.conversationId}`),se="",Pe=computed(n=>{let l=N.value?`${t.conversation.conversationType}\0${t.conversation.conversationId}`:"",d=se===l?n:void 0;return se=l,N.value?en(d,i({messages:i$1.value.messages,entryUnread:i$1.value.entryUnread,formatDate:c.formatDate,leadingItems:c.leadingItems?.(),beforeMessageItems:c.beforeMessageItems})):en(d,[])}),ue=computed(()=>Pe.value.flatMap(n=>n.kind==="message"||n.kind==="system"?[n.message.id]:[])),He=computed(()=>i$1.value.messages.filter(n=>(n.status==="pending"||n.status==="uploading"||n.status==="sending")&&c.shouldFollowMessage?.(n)===true).map(n=>n.id));function p(){be.cancel(),ne!==void 0&&(clearTimeout(ne),ne=void 0);}function S(n=false){if(p(),ve.value=false,n){m.value?.clearActiveDate(),X.value="";return}ne=setTimeout(()=>{ne=void 0,!ve.value&&(m.value?.clearActiveDate(),X.value="");},Bn);}function I(n){if(n===null){S();return}ne!==void 0&&(clearTimeout(ne),ne=void 0),X.value=n.label,ve.value=true;let l=ie.value.activeDateIdleDelay,d=Number.isFinite(l)?Math.max(0,l):Et.activeDateIdleDelay;be.schedule(()=>S(),d);}async function P(n,l,d,b=true){t.hooks?.beforeAction?.(n);try{let w=await l();return d?.()!==!1&&t.hooks?.afterAction?.(n,w),w}catch(w){throw b&&d?.()!==false&&t.hooks?.onError?.(n,w),w}}function k(n="automatic",l,d=true){return !N.value||i$1.value.loading||!i$1.value.hasOlder?Promise.resolve(0):P({kind:"load-older",source:n},()=>c.actions.loadOlder(),l,d)}function Z(){return Y()}function Y(n,l=true){let d=c.actions.loadNewer,b=i$1.value.loadingNewer??i$1.value.loading;return !N.value||b||!i$1.value.hasNewer||d===void 0?Promise.resolve(0):P({kind:"load-newer"},()=>d(),n,l)}async function re(n){for(let l=0;l<Un;l+=1){if(!N.value||M.value||V.value||ae.value)return;let d=n==="older"?i$1.value.hasOlder:i$1.value.hasNewer,b=n==="older"?i$1.value.olderError:i$1.value.newerError;if(!d||b!==null||(n==="older"?await k("user-scroll"):await Z())>0)return;let L=n==="older"?i$1.value.hasOlder:i$1.value.hasNewer,G=n==="older"?i$1.value.olderError:i$1.value.newerError;if(!L||G!==null)return}}async function Ae(){return !N.value||c.actions.loadNewer===void 0?0:le({kind:"load-newer"},()=>c.actions.retryNewer?.()??c.actions.loadNewer?.({force:true})??Promise.resolve(0))}async function Q(){return N.value?le({kind:"retry-older"},()=>c.actions.retryOlder?.()??c.actions.loadOlder({force:true})):0}async function le(n,l){let d=F.value,b=++O;K=null,we="";let w;try{w=await P(n,l);}catch(L){throw Oe(d,b)&&(we=d),L}return Oe(d,b)&&!_.value&&(K=null,qe()),w}async function he(){if(!N.value)return false;let n=F.value;ye(),Ne();let l=++z.value;return M.value=false,Re(true),J=true,q=n,te=Ce(Le()),!await P({kind:"jump-to-latest"},()=>c.actions.jumpToLatest?.()??Promise.resolve(!i$1.value.isHistoryWindow),()=>de(n,l))||!de(n,l)||(await nextTick(),!de(n,l))?false:(m.value?.scrollToLatest(),C.value=true,h.value=false,$e(),true)}function oe(n=false){let l=m.value,d=l?.getViewportElement();a$1.value=l?.isScrollable()===true;let b=i$1.value.entryUnreadNavigation;y.value=b?.state==="located"&&$.includes(b.firstMessageId),_.value&&y.value&&(C.value=true);let w=d==null?0:Math.max(0,d.scrollHeight-d.clientHeight-d.scrollTop);h.value=b!==void 0&&w>50,n&&b!==void 0&&d!==null&&d!==void 0&&d.clientHeight>0&&w>=d.clientHeight&&(C.value=true);}function $e(){let n=c.actions.markConversationRead;if(n===void 0||!pe.value||!N.value||!_.value||V.value||f&&(!D.value||i$1.value.hasNewer)||R!==void 0||i$1.value.error!==null)return;let l=F.value,d=n().then(()=>{R===d&&l===F.value&&(f=true);}).catch(b=>{!ee&&R===d&&l===F.value&&t.hooks?.onError?.({kind:"mark-conversation-read"},b);}).finally(()=>{R===d&&(R=void 0);});R=d;}async function ot(){let n=c.actions.loadEntryUnread;if(!N.value||V.value||n===void 0)return "cancelled";Ne();let l=F.value,d=++z.value;M.value=false;let b=new AbortController;u=b,x=d,V.value=true,Re(true),J=true;try{let w=await P({kind:"jump-to-entry-unread"},()=>n({signal:b.signal}),()=>de(l,d));if(!de(l,d))return "cancelled";if(!w||i$1.value.entryUnread.state!=="located")return "unavailable";let G=await at(l,d);return G&&(C.value=!0),G?"located":de(l,d)?"unavailable":"cancelled"}catch(w){if(!de(l,d))return "cancelled";throw w}finally{x===d&&(x=void 0,u=void 0,V.value=false);}}async function at(n,l){await nextTick();for(let d=0;d<60;d+=1){if(!de(n,l))return false;if(m.value?.scrollToEntryUnread())return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(b=>window.requestAnimationFrame(()=>b()));}return false}function it(n){D.value=n.isAtBottom,A.value=n.newMessageCount,oe(),qe();}function Je(n,l){return m.value?.scrollToMessage(n,l)??false}function de(n,l){return !ee&&z.value===l&&F.value===n&&N.value}async function Xe(n,l,d,b){for(let w=0;w<60;w+=1){if(!de(n,l))return false;if(Je(d,b))return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(L=>window.requestAnimationFrame(()=>L()));}return false}async function ze(n,l){for(let d=0;d<60;d+=1){if(!n())return false;if(m.value?.isMeasurable()&&m.value.getMessageCenteringNeeds(l)!=null)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(b=>window.requestAnimationFrame(()=>b()));}return false}async function st(n){let l=()=>!n()||!(i$1.value.loading||i$1.value.loadingOlder||i$1.value.loadingNewer);return l()||await new Promise(d=>{let b=watch(l,w=>{w&&(b(),d());},{flush:"sync"});}),await nextTick(),await nextTick(),n()}async function De(n,l,d){let b=m.value;if(b===null||!b.isMeasurable())return false;let w=0,L="older",G=()=>de(n,l),ge=async ce=>{let Te=0,Ve=ce==="older"?i$1.value.olderError:i$1.value.newerError,xe=Ve===void 0?i$1.value.error:Ve;if(xe!=null)throw xe;if(ce==="older")Te=await k("automatic",G,false);else {b.prepareHistoryPageAppend();try{Te=await Y(G,!1);}catch(gt){throw G()&&b.cancelHistoryPageAppend(),gt}Te<=0&&G()&&!i$1.value.hasNewer&&b.cancelHistoryPageAppend();}return w+=1,await nextTick(),await nextTick(),G()};for(;de(n,l)&&w<H.value.maxFillPages&&b.isMeasurable();){if(!await st(G))return false;let ce=b.getMessageCenteringNeeds(d);if(ce===null)return false;let Te=!i$1.value.hasOlder,Ve=!i$1.value.hasNewer||c.actions.loadNewer===void 0,xe=ce.older&&ce.newer&&!Te&&!Ve?L:ce.older&&!Te?"older":ce.newer&&!Ve?"newer":void 0;if(xe===void 0)break;if(L=xe==="older"?"newer":"older",!await ge(xe))return false}return de(n,l)}async function Ge(n,l={behavior:"auto",block:"center"}){if(!N.value||n==="")return {ok:false,reason:"cancelled"};let d=F.value,b=M.value;ye(),Ne();let w=b||j!==void 0||(i$1.value.loadingOlder??i$1.value.loading)||(i$1.value.loadingNewer??i$1.value.loading),L=++z.value;M.value=true;let G=new AbortController;g=G,Re(true),J=true,q=d,te=Ce(Le());let ge=()=>de(d,L);try{if(w&&c.actions.loadAround!==void 0||!ue.value.includes(n)){let Te=c.actions.loadAround;if(Te===void 0)return {ok:!1,reason:"anchor-unavailable"};let Ve={};j=Ve;try{let xe=await P({kind:"locate-message",messageId:n},()=>Te(n,{signal:G.signal}),ge,!1);if(!ge())return {ok:!1,reason:"cancelled"};if(!xe)return {ok:!1,reason:"not-visible"}}finally{j===Ve&&(j=void 0);}}return await nextTick(),await nextTick(),!await ze(ge,n)||!await De(d,L,n)?{ok:!1,reason:ge()?"not-visible":"cancelled"}:await Xe(d,L,n,l)?{ok:!0}:{ok:!1,reason:ge()?"not-visible":"cancelled"}}catch(ce){return ge()?a(ce):{ok:false,reason:"cancelled"}}finally{g===G&&(g=void 0),z.value===L&&(M.value=false);}}async function Qe(n,l){return (await Ge(n,l)).ok}function _e(){B.cancel();}function Fe(){if(!_.value){_e();return}let n=t.readActions;if(n===void 0&&c.actions.markVisibleMessages===void 0){_e();return}let l=Number.isFinite(ie.value.visibleReadDelay)?Math.max(0,ie.value.visibleReadDelay):Et.visibleReadDelay;B.schedule(()=>{if(!N.value||!pe.value)return;$e();let d=c.actions.markVisibleMessages;if(d!==void 0){let L=$;d(L).catch(G=>{t.hooks?.onError?.({kind:"visible-range",messageIds:L},G);});return}if(n===void 0)return;let b=$[$.length-1];if(b===void 0)return;let w=n.resolveTarget===void 0?b:n.resolveTarget(b);w!=null&&Promise.resolve(n.markRead(w)).catch(L=>{t.hooks?.onError?.({kind:"visible-range",messageIds:$},L);});},l);}function Ze(n){$=Object.freeze([...n]),oe();let l={kind:"visible-range",messageIds:$};t.hooks?.beforeAction?.(l);try{c.actions.onVisibleRange?.($),t.hooks?.afterAction?.(l,void 0);}catch(d){throw t.hooks?.onError?.(l,d),d}_.value?Fe():qe();}function Oe(n,l){return !ee&&O===l&&F.value===n&&!J&&!ae.value}function lt(n,l){Oe(n,l)&&(q=n,te=Ce(Le()),_.value=true,oe(),$e(),Fe());}function Le(){return i$1.value.entryUnreadNavigation===void 0?i$1.value.entryUnread:{state:"none"}}function Ce(n){return n.state!=="located"?n.state:`${n.state}:${n.firstMessageId}`}async function je(n,l,d){for(let b=0;b<60;b+=1){if(!Oe(n,l))return false;if(m.value?.scrollToMessage(d,{behavior:"auto",block:"center"})===true)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(L=>window.requestAnimationFrame(()=>L()));}return false}function qe(){let n=F.value,l=Ce(Le());if(n===""||i$1.value.loading||M.value||ae.value||i$1.value.error!==null&&i$1.value.messages.length===0||q===n&&(te===l||te.startsWith("located:")||J)||we===n||K!==null)return;if(!H.value.enabled){q=n,te=l,_.value=true,Fe();return}let d=++O;J=false,_.value=false;let b=(async()=>{if(await nextTick(),!Oe(n,d))return;let w=m.value;if(w===null||!w.isMeasurable())return;let L=Le();if(L.state==="located"&&!ue.value.includes(L.firstMessageId))return;let G=L.state==="located"?await je(n,d,L.firstMessageId):false;if(L.state==="located"&&!G)return;G||w.scrollToLatest();let ge=0;for(;Oe(n,d)&&ge<H.value.maxFillPages&&i$1.value.error===null&&(i$1.value.hasOlder||i$1.value.hasNewer&&c.actions.loadNewer!==void 0)&&w.isMeasurable()&&!w.isScrollable();){if(i$1.value.hasNewer&&c.actions.loadNewer!==void 0&&(i$1.value.messages.length===0||!i$1.value.hasOlder)){let Te=z.value;w.prepareHistoryPageAppend();try{await Z(),await nextTick();}finally{F.value===n&&z.value===Te&&(O===d||J)&&w.cancelHistoryPageAppend();}}else await k();if(!Oe(n,d)||(ge+=1,await nextTick(),await nextTick(),!w.isMeasurable()))return}if(!Oe(n,d)||!w.isMeasurable())return;let ce=Le();if(ce.state==="located"){if(!ue.value.includes(ce.firstMessageId)||!await je(n,d,ce.firstMessageId))return}else w.scrollToLatest();await nextTick(),lt(n,d);})().catch(()=>{Oe(n,d)&&(we=n);}).finally(()=>{K===b&&(K=null);});K=b;}function Re(n,l=false){O+=1,K=null,J=false,_.value=n,n||(q="",te="",l||(we="")),_e();}function ye(){u!==void 0&&(z.value+=1,u.abort(),u=void 0,x=void 0,V.value=false);}function Ne(){!M.value&&g===void 0||(z.value+=1,g?.abort(),g=void 0,M.value=false);}function dt(){if(oe(true),ye(),Ne(),ae.value&&c.actions.cancelMessageLocation?.(),J=true,_.value)return;let n=F.value;O+=1,K=null,q=n,_.value=true,Fe();}let et=Object.freeze({getViewportElement:()=>m.value?.getViewportElement()??null,loadOlder:k,retryOlder:Q,loadNewer:Z,retryNewer:Ae,jumpToLatest:he,jumpToEntryUnread:ot,scrollToMessage:Je,locateMessage:Qe,locateMessageDetailed:Ge,focusViewport:()=>m.value?.focusViewport()});return o(et),watch(pe,n=>{n&&_.value?Fe():_e();}),watch([()=>i$1.value.activeRemoteMessageRevision??0,m,F],()=>{let n=m.value;if(n===null||!N.value)return;let l=c.actions.drainActiveRemoteMessageIds?.()??[];n.trackRemoteMessageIds(l,{isAtBottom:D.value,isHistoryWindow:i$1.value.isHistoryWindow,isPageVisible:Me.value})&&(D.value=false);},{flush:"post"}),watch(()=>i$1.value.pendingLocationMessageId??"",n=>{(n!==""||M.value)&&(Ne(),z.value+=1,M.value=false),n!==""&&(ye(),_.value||Re(false));},{flush:"sync"}),watch([F,()=>i$1.value.loading,()=>i$1.value.error,()=>ue.value.length,()=>i$1.value.hasOlder,()=>Ce(Le()),H,()=>i$1.value.hasNewer,ae],([n,l,d,b,,w],[L,,,G,,ge])=>{if(n!==L&&(ye(),Ne(),z.value+=1,M.value=false,j=void 0,Re(false),S(true),m.value?.clearNewMessageBadge(),A.value=0,D.value=true,$=[],C.value=false,y.value=false,a$1.value=false,h.value=false,V.value=false,x=void 0,f=false,R=void 0),n!==""&&n===L&&G!==void 0&&G>0&&b===0&&(i$1.value.hasOlder||i$1.value.hasNewer)&&_.value&&Re(false,true),n!==""&&n===L&&w!==ge&&!te.startsWith("located:")&&!J&&w.startsWith("located:")&&(q="",te="",_.value=false),n===""){Re(false);return}if(d!==null&&i$1.value.messages.length===0){_.value||Re(false,true);return}l||qe();},{flush:"post",immediate:true}),onBeforeUnmount(()=>{ee=true,ye(),Ne(),z.value+=1,Re(false),S(true);}),()=>{let n={conversation:t.conversation,state:i$1.value,items:Pe.value,actions:et,initialViewportSettled:F.value!==""&&(i$1.value.messages.length===0?!i$1.value.loading&&i$1.value.error===null&&!i$1.value.hasOlder&&!i$1.value.hasNewer:_.value&&q===F.value)},l=[v.header?.(n),v["before-list"]?.(n)];if(!N.value)l.push(v.unsupported?.(n)??h$1("div",{"data-im-thread-unsupported":""}));else if(!i$1.value.ready&&i$1.value.loading)l.push(v.loading?.(n)??h$1("div",{"data-im-thread-loading":""}));else if(i$1.value.error!==null&&i$1.value.messages.length===0)l.push(v.error?.(n)??h$1("div",{"data-im-thread-error":""}));else if(i$1.value.ready&&i$1.value.messages.length===0&&!i$1.value.hasOlder&&!i$1.value.hasNewer)l.push(v.empty?.(n)??h$1("div",{"data-im-thread-empty":""}));else {let d=h$1(Mt,{ref:m,messageIds:ue.value,contentKey:`${t.conversation.conversationType}\0${t.conversation.conversationId}`,loadingOlder:i$1.value.loadingOlder??i$1.value.loading,hasNewer:i$1.value.hasNewer,loadingNewer:i$1.value.loadingNewer??i$1.value.loading,followThreshold:ie.value.followThreshold,olderPrefetchThreshold:ie.value.olderPrefetchThreshold,visibleMargin:ie.value.visibleMargin,activeDateOffset:ie.value.activeDateOffset,activeDateEnabled:v["active-date"]!==void 0,resizeFollowEnabled:_.value&&!V.value&&!M.value&&!ae.value,followNewMessages:Me.value&&!V.value&&!M.value&&!ae.value,shouldFollowAppendedMessage:b=>{let w=i$1.value.messages.find(L=>L.id===b);return w===void 0?false:c.shouldFollowMessage?.(w)===true},pendingSendMessageIds:He.value,onReachStart:()=>{re("older").catch(()=>{});},onReachEnd:()=>{re("newer").catch(()=>{});},onSettled:it,onUserScroll:dt,onActiveDateChange:I,onVisibleRange:Ze,onNewMessageCount:b=>{A.value=b;}},{default:()=>[v["viewport-before"]?.(n),h$1(It,{items:Pe.value,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{item:v.item,"date-separator":v["date-separator"],"entry-unread":v["entry-unread"],encryption:v.encryption,system:v.system,message:v.message,"recalled-message":v["recalled-message"],"deleted-message":v["deleted-message"],"unsupported-body":v["unsupported-body"]}),v["viewport-after"]?.(n)]});l.push(h$1("div",{"data-im-thread-viewport-shell":""},[v["active-date"]?.({label:X.value,visible:ve.value&&X.value!==""}),d,v["entry-unread-navigation"]?.({...n,count:i$1.value.entryUnreadNavigation?.state==="none"?0:i$1.value.entryUnreadNavigation?.count??0,loading:V.value,visible:n.initialViewportSettled&&!C.value&&!y.value&&!i$1.value.isHistoryWindow&&i$1.value.entryUnreadNavigation!==void 0&&i$1.value.entryUnreadNavigation.state!=="none"&&i$1.value.entryUnreadNavigation.count>0&&(a$1.value||i$1.value.hasOlder)})])),i$1.value.error!==null&&l.push(v.error?.(n)??h$1("div",{"data-im-thread-error":""}));}return l.push(v["after-list"]?.(n),v["jump-to-latest"]?.({...n,count:A.value,visible:h.value||!D.value||i$1.value.isHistoryWindow}),v["context-menu"]?.(n),v.composer?.(n)),h$1("section",{"data-im-thread-surface":"","data-conversation-type":t.conversation.conversationType,"data-conversation-id":t.conversation.conversationId},l)}}});function _n(t){let o=new Map;for(let c of t){if(o.has(c.kind))throw new Error(`\u6D88\u606F renderer kind \u91CD\u590D\u6CE8\u518C\uFF1A${c.kind}`);o.set(c.kind,c.component);}let v=Object.freeze([...o.keys()]);return Object.freeze({kinds:v,resolve:c=>o.get(c)})}var Gn=140,Wn=120;function mt(t,o){if(t.width<=0||t.height<=0)return 0;let v=Math.max(0,Math.min(t.right,o.right)-Math.max(t.left,o.left)),c=Math.max(0,Math.min(t.bottom,o.bottom)-Math.max(t.top,o.top));return Math.min(1,v*c/(t.width*t.height))}function Pt(t,o){return {x:t.x,y:t.top-o,top:t.top-o,bottom:t.bottom+o,left:t.left,right:t.right,width:t.width,height:t.height+o*2,toJSON:()=>({})}}function At(t){let o=Math.max(0,t.scrollIdleMs??Gn),v=Math.max(0,t.visibilityDwellMs??Wn),c=Math.min(1,Math.max(0,t.minimumIntersectionRatio??.01)),m=Math.max(0,t.revealMarginPx??0),A=Math.max(0,t.preloadMarginPx??0),C=Math.max(m,A),V=Math.max(0,t.maxPreloadTargets??Number.POSITIVE_INFINITY),M=Math.max(1,t.maxSettledVisible??Number.POSITIVE_INFINITY),g=new Map,x=new Map,u=reactive(new Set),y=new Set,a=new Set,h=[],f=null,R=null,D=null,$=false,B=false,O=false,z=false,j=new Map,K=0,q=false;function te(){K+=1,q=false,j.clear();}function we(p){let S=[...p].filter(([P,k])=>g.get(P)===k);if(S.length===0)return;let I=be();ne(true,I,S),Me(I,S);}function J(p){if(!t.batchRegistration){we(p);return}for(let[I,P]of p)j.set(I,P);if(q)return;q=true;let S=K;nextTick(()=>{if(O||S!==K)return;q=false;let I=[...j];j.clear(),we(I),H();});}let ee,_;function X(){ee!==void 0&&clearTimeout(ee),ee=void 0;}function ve(){_!==void 0&&clearTimeout(_),_=void 0;}function be(){let p,S=new Map;return {getRootRect(){return p===void 0&&(p=f?.getBoundingClientRect()??null),p},getElementRect(I){let P=S.get(I);return P===void 0&&(P=I.getBoundingClientRect(),S.set(I,P)),P}}}function ne(p=false,S=be(),I=g){if(!p&&R!==null||f===null)return;let P=S.getRootRect();if(P===null)return;let k=Pt(P,C);for(let[Z,Y]of I){let re=S.getElementRect(Z);Y.ratio=mt(re,P),Y.intersecting=Y.ratio>0,Y.revealIntersecting=C>0?mt(re,k)>0:Y.intersecting&&Y.ratio>=c;}}function i(p){return p.intersecting&&p.ratio>=c}function ae(p){let S=x.get(p.key);return S!==void 0&&g.get(S)===p}function Me(p=be(),S=g){let I=[];for(let[P,k]of S)if(!(!k.revealIntersecting||u.has(k.key))){if(C>m){if(m===0&&!i(k))continue;if(m>0){let Z=p.getRootRect();if(Z===null||mt(p.getElementRect(P),Pt(Z,m))<=0)continue}}I.push(k);}for(let P of I)!ae(P)||u.has(P.key)||(u.add(P.key),t.onRevealed?.(P.item));}function pe(p,S=false){let I=new Set(p.map(k=>k.key));if(!(!(I.size!==a.size||[...I].some(k=>!a.has(k)))&&!S)){a.clear();for(let k of I)a.add(k);t.onSettledVisibleChange?.(p.map(k=>k.item));}}function N(p,S=false){!S&&p.length===h.length&&p.every((I,P)=>I.key===h[P]?.key&&I.item===h[P]?.item)||(h=p,t.onSettledPreloadChange?.(p.map(I=>I.item)));}function ie(){if(O||$)return;let p=B;B=false;let S=K,I=f,P=()=>!O&&!$&&S===K&&f===I,k=be();ne(false,k);let Z=k.getRootRect(),Y=Z===null?0:(Z.top+Z.bottom)/2,re=[...g.entries()].filter(([,Q])=>i(Q)).map(([Q,le])=>({target:le,rect:k.getElementRect(Q)})).sort((Q,le)=>Math.abs((Q.rect.top+Q.rect.bottom)/2-Y)-Math.abs((le.rect.top+le.rect.bottom)/2-Y)).slice(0,M).map(({target:Q})=>Q),Ae;if(t.onSettledPreloadChange!==void 0&&Z!==null){let Q=Pt(Z,A);Ae=[...g.entries()].filter(([,he])=>he.revealIntersecting).map(([he,oe])=>({target:oe,rect:k.getElementRect(he)})).filter(({target:he,rect:oe})=>i(he)||A>0&&mt(oe,Q)>0).sort((he,oe)=>Number(i(oe.target))-Number(i(he.target))||Math.abs((he.rect.top+he.rect.bottom)/2-Y)-Math.abs((oe.rect.top+oe.rect.bottom)/2-Y)).slice(0,V).map(({target:he})=>he);}if(Me(k),!!P()&&(pe(re.filter(ae),p),!!P())){Ae!==void 0&&N(Ae.filter(ae),p);for(let Q of re){if(!P())return;!ae(Q)||y.has(Q.key)||(y.add(Q.key),t.onActivated?.(Q.item));}}}function H(){O||$||(ve(),_=setTimeout(()=>{_=void 0,ie();},v));}function F(){O||(B=true,se(true),N([]),ne(),Me(),pe([]),ve(),X(),ee=setTimeout(()=>{ee=void 0,se(false),H();},o));}function se(p){$!==p&&($=p,t.onScrollingChange?.(p));}function Pe(){f?.removeEventListener("scroll",F),R?.disconnect(),D?.disconnect(),R=null,D=null,f=null;}function ue(p=true){if(O)return;let S=t.getRoot();if(!(S===f&&f!==null)){if(N([]),Pe(),f=S,f===null){p&&!z&&(z=true,Promise.resolve().then(()=>{z=false,O||(ue(false),H());}));return}if(f.addEventListener("scroll",F,{passive:true}),typeof IntersectionObserver<"u"){R=new IntersectionObserver(I=>{for(let P of I){let k=g.get(P.target);k!==void 0&&(k.intersecting=P.isIntersecting,k.ratio=P.intersectionRatio,C===0&&(k.revealIntersecting=P.isIntersecting&&P.intersectionRatio>=c));}Me(),H();},{root:f,threshold:[0,c,1]}),C>0&&(D=new IntersectionObserver(I=>{for(let P of I){let k=g.get(P.target);k!==void 0&&(k.revealIntersecting=P.isIntersecting);}Me(),H();},{root:f,rootMargin:`${C}px 0px`,threshold:0}));for(let I of g.keys())R.observe(I);for(let I of g.keys())D?.observe(I);}J(g);}}function He(p){N(h.filter(S=>S.key!==p)),u.delete(p),y.delete(p),a.delete(p);}return {register(p,S){if(O)return;let I=t.getKey(p),P=u.has(I),k=y.has(I),Z=S===null?void 0:g.get(S);Z!==void 0&&Z.key!==I&&(x.delete(Z.key),g.delete(S),He(Z.key));let Y=x.get(I);if(Y!==void 0&&Y!==S&&(R?.unobserve(Y),D?.unobserve(Y),g.delete(Y),x.delete(I)),S===null){Y!==void 0&&(R?.unobserve(Y),D?.unobserve(Y),g.delete(Y),x.delete(I)),He(I);return}let re=g.get(S);if(re?.key===I&&re.item===p){let le=f;ue(),f!==le&&H();return}let Ae={item:p,key:I,intersecting:re?.key===I?re.intersecting:false,ratio:re?.key===I?re.ratio:0,revealIntersecting:re?.key===I?re.revealIntersecting:false};g.set(S,Ae),x.set(I,S);let Q=f;ue(),f===Q&&(R?.observe(S),D?.observe(S),J([[S,Ae]])),P&&t.onRevealed?.(p),k&&ae(Ae)&&t.onActivated?.(p),H();},isRevealed:p=>u.has(t.getKey(p)),isActivated:p=>y.has(t.getKey(p)),isSettledVisible:p=>a.has(t.getKey(p)),isScrolling:()=>$,notifyScroll:F,refresh(){ue(),te(),we(g),H();},reset(){te(),X(),ve(),se(false),B=false,pe([]),N([]),Pe(),g.clear(),x.clear(),u.clear(),y.clear();},dispose(){O||(te(),X(),ve(),se(false),B=false,pe([]),N([]),Pe(),g.clear(),x.clear(),u.clear(),y.clear(),O=true);}}}function Yn(t){let o=new Map,v=new Map,c=shallowReactive(new Map),m=[],A=false,C=u=>{let y=o.get(u.channel);return y===void 0?u.channel:`${u.channel}\0${y.getKey(u.item)}`},V=At({getRoot:t.getRoot,batchRegistration:t.batchRegistration,getKey:u=>u.key,revealMarginPx:t.revealMarginPx,preloadMarginPx:t.preloadMarginPx,minimumIntersectionRatio:t.minimumIntersectionRatio,scrollIdleMs:t.scrollIdleMs,visibilityDwellMs:t.visibilityDwellMs,onScrollingChange:u=>{for(let y of o.values())y.onScrollingChange?.(u);},onRevealed:u=>u.targets.forEach(y=>o.get(y.channel)?.onRevealed?.(y.item)),onActivated:u=>u.targets.forEach(y=>o.get(y.channel)?.onActivated?.(y.item)),onSettledPreloadChange:u=>{let y=u.flatMap(a=>a.targets);for(let[a,h]of o){let f=y.filter(R=>R.channel===a).map(R=>R.item);h.onSettledPreloadChange?.(f.slice(0,Math.max(0,h.maxPreloadTargets??Number.POSITIVE_INFINITY)));}},onSettledVisibleChange:u=>{M(u.flatMap(y=>y.targets));}});function M(u){m=u;for(let[y,a]of o){let h=u.filter(R=>R.channel===y).map(R=>R.item),f=a.maxSettledVisible===void 0?h:h.slice(0,a.maxSettledVisible);a.onSettledVisibleChange?.(f);}}function g(u){let y=[...v.values()].flatMap(f=>[...f.values()].filter(R=>R.element===u).map(R=>R.target)),a=c.get(u);if(a!==void 0&&y.length===a.targets.length&&y.every((f,R)=>f===a.targets[R]))return;if(y.length===0)a!==void 0&&(c.delete(u),[...c.values()].some(f=>f.key===a.key)||V.register(a,null));else {let f={key:JSON.stringify(y.map(C)),targets:y};c.set(u,f),V.register(f,u);}let h=m.flatMap(f=>{let R=v.get(f.channel)?.get(o.get(f.channel).getKey(f.item));return R===void 0?[]:[R.target]});(h.length!==m.length||h.some((f,R)=>f!==m[R]))&&M(h);}function x(u){return y=>{if(A)throw new Error("Thread visibility target group \u5DF2\u91CA\u653E");if(o.has(u))throw new Error(`Thread visibility channel \u5DF2\u5B58\u5728: ${u}`);o.set(u,y);let a=shallowReactive(new Map);v.set(u,a);let h=false,f=B=>({channel:u,item:B});function R(){let B=[...a.values()].map(O=>O.element);a.clear();for(let O of B)g(O);y.onScrollingChange?.(false),y.onSettledVisibleChange?.([]),y.onSettledPreloadChange?.([]);}function D(B,O){let z=a.get(y.getKey(B)),j=z===void 0?void 0:c.get(z.element);return j!==void 0&&O(j)}return {register(B,O){if(h||A)return;let z=y.getKey(B),j=a.get(z);if(O===null){j!==void 0&&(a.delete(z),g(j.element));return}if(j?.target.item===B&&j.element===O){let q=c.get(O);q!==void 0&&V.register(q,O);return}let K=j?.target.item===B?j.target:f(B);for(let[q,te]of a)q!==z&&te.element===O&&a.delete(q);a.set(z,{target:K,element:O}),g(O),j!==void 0&&j.element!==O&&g(j.element);},isRevealed:B=>D(B,V.isRevealed),isActivated:B=>D(B,V.isActivated),isSettledVisible:B=>D(B,V.isSettledVisible),isScrolling:V.isScrolling,notifyScroll:V.notifyScroll,refresh:V.refresh,reset:R,dispose(){h||(R(),h=true,o.delete(u),v.delete(u));}}}}return {createFactory:x,refresh:V.refresh,dispose(){if(!A){for(let u of c.values())V.register(u,null);c.clear();for(let u of o.values())u.onSettledPreloadChange?.([]);v.clear(),o.clear(),V.dispose(),A=true;}}}}function Jn(t){let o=ut();if(o===void 0)throw new Error("useImThreadLayoutMeasurement requires an ImThreadViewport");let v=o.registerLayoutMeasurement(t);return onBeforeUnmount(v.dispose),v}export{Tt as ImThreadBodySwitch,It as ImThreadItems,Kn as ImThreadSurface,Mt as ImThreadViewport,Cn as createImThreadSurfaceContext,_n as createMessageRendererRegistry,Yn as createThreadVisibilityTargetGroup,At as createThreadVisibilityTargets,Nn as provideImThreadSurfaceContext,mn as useImText,Jn as useImThreadLayoutMeasurement,Rt as useImThreadSurfaceContext,hn as useOptionalImThreadReadActions};
|
|
1
|
+
import {h,C,p,i,q,m,z,B,o,j,g}from'./chunk-HJYSLPY4.js';import {f,h as h$2,i as i$1,g as g$1}from'./chunk-2R4KVYRU.js';import {a}from'./chunk-Q2DEFN53.js';import'./chunk-OUXI5ZYL.js';import'./chunk-KV7I2SAC.js';import'./chunk-Q6TFPZMF.js';import'./chunk-WOT6VMZA.js';import {defineComponent,h as h$1,onUpdated,onUnmounted,ref,provide,watch,nextTick,onMounted,onBeforeUnmount,computed,inject,isVNode,cloneVNode,Fragment,reactive,shallowReactive}from'vue';function fn(t){let a=0,v=0;for(let c of t)c.kind==="video"?v+=1:a+=1;return {imageCount:a,videoCount:v}}function mn(t){return {systemMessage:a=>a.body.system!==void 0?g$1(a.body.system,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):"",mediaPlaceholder:a=>i$1(a.contentType,{locale:t.locale(),durationMs:a.body.voice?.durationMs,stickerImageType:a.body.sticker?.imageType,gameType:a.body.game?.gameType,callKind:a.body.call?.callKind,...a.body.filesAlbum===void 0?{}:{filesAlbum:{count:a.body.filesAlbum.items.length,caption:a.body.filesAlbum.caption}},...a.body.mediaAlbum===void 0?{}:{mediaAlbum:fn(a.body.mediaAlbum.items)}}),lastMessage:a=>a.lastMessageSummary!==void 0?h$2(a.lastMessageSummary,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):a.lastMessagePreview,failureText:a=>a.failure?.displayCode!==void 0?f(a.failure.displayCode,{locale:t.locale(),mediaKind:a.failure.mediaKind,params:a.failure.params}):a.failure?.message??""}}var zt=Symbol("ImThreadReadActions");function Wt(t){provide(zt,t);}function hn(){return inject(zt,void 0)}var Tt=defineComponent({name:"ImThreadBodySwitch",inheritAttrs:false,props:{message:{type:Object,required:true},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup(t,{attrs:a,slots:v}){return Wt(t.readActions),()=>{let c=h(t.message),g=t.rendererRegistry.resolve(c);return g!==void 0?h$1(g,{...a,message:t.message,presentation:t.presentation}):v["unsupported-body"]!==void 0?v["unsupported-body"]({kind:c,message:t.message}):h$1("span",{"data-im-thread-unsupported-body":c,"aria-hidden":"true"})}}});var bt=Symbol("ImThreadViewportRegistration");function ut(){return inject(bt,void 0)}var wt=defineComponent({name:"ImThreadItems",props:{items:{type:Array,required:true},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup(t,{slots:a}){let v=ut(),c=new Map,g=new Map;onUpdated(()=>{let r=new Set,m=new Set;for(let u of t.items)u.kind==="message"||u.kind==="system"?r.add(u.key):u.kind==="date-separator"&&m.add(u.key);for(let u of c.keys())r.has(u)||c.delete(u);for(let u of g.keys())m.has(u)||g.delete(u);}),onUnmounted(()=>{c.clear(),g.clear();});function k(r,m){let u=Array.isArray(m)?m:[m];return u.length===1&&isVNode(u[0])?cloneVNode(u[0],{key:r}):h$1(Fragment,{key:r},u)}function C(r,m){let u=c.get(r);if(u?.messageId===m)return u.setElement;let M=L=>{v?.registerMessageNode(m,L instanceof HTMLElement?L:null);};return c.set(r,{messageId:m,setElement:M}),M}function j(r,m){let u=g.get(r);if(u!==void 0)return u.label=m,u.setElement;let M={label:m,setElement:L=>{v?.registerDateNode(r,M.label,L instanceof HTMLElement?L:null);}};return g.set(r,M),M.setElement}function E(r){return a.encryption?.({item:r})??h$1("div",{"data-im-thread-encryption":r.key})}function f(r){let m=j(r.key,r.label);return a["date-separator"]?.({item:r,setElement:m})??h$1("div",{ref:m,"data-im-thread-date-separator":r.key},r.label)}function V(r){v?.registerEntryUnreadNode(r instanceof HTMLElement?r:null);}function w(r){return a["entry-unread"]?.({item:r,setElement:V})??h$1("div",{ref:V,"data-im-thread-entry-unread":r.key,...r.count===void 0?{}:{"data-count":String(r.count)}})}function _(r){let m=C(r.key,r.message.id);return a.item!==void 0?a.item({item:r,setElement:m}):a.message!==void 0?a.message({item:r,setElement:m}):r.message.deletedForEveryone!==void 0?a["deleted-message"]?.({item:r,setElement:m})??h$1("article",{ref:m,"data-im-thread-message-id":r.message.id,"data-im-thread-message-terminal":"deleted-for-everyone"},[h$1("span",{"data-im-thread-anchor-point":""})]):r.message.recalled!==void 0?a["recalled-message"]?.({item:r,setElement:m})??h$1("article",{ref:m,"data-im-thread-message-id":r.message.id,"data-im-thread-message-terminal":"recalled"},[h$1("span",{"data-im-thread-anchor-point":""})]):r.kind==="system"&&a.system!==void 0?a.system({item:r,setElement:m}):h$1("article",{ref:m,"data-im-thread-message-id":r.message.id,"data-first-of-run":r.kind==="message"?String(r.firstOfRun):void 0},[h$1("span",{"data-im-thread-anchor-point":""}),h$1(Tt,{message:r.message,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{"unsupported-body":a["unsupported-body"]===void 0?void 0:u=>a["unsupported-body"]?.(u)})])}return ()=>h$1("div",{"data-im-thread-items":""},t.items.map(r=>{switch(r.kind){case "encryption":return a.item!==void 0?k(r.key,a.item({item:r})):k(r.key,E(r));case "date-separator":return a.item!==void 0?k(r.key,a.item({item:r,setElement:j(r.key,r.label)})):k(r.key,f(r));case "entry-unread":return a.item!==void 0?k(r.key,a.item({item:r,setElement:V})):k(r.key,w(r));case "system":case "message":return k(r.key,_(r))}return r}))}});function rt(){let t,a=0,v=0,c;function g(){t!==void 0&&clearTimeout(t),t=void 0,c=void 0;}function k(){t=void 0;let j=a-performance.now();if(j>0){v=a,t=setTimeout(k,j);return}let E=c;c=void 0,E?.();}function C(j,E){a=performance.now()+E,c=j,!(t!==void 0&&a>=v)&&(t!==void 0&&clearTimeout(t),v=a,t=setTimeout(k,E));}return {schedule:C,cancel:g}}function $t(t){let a=new Set,v=new Map,c=new Set;function g(){let E=[...c];c.clear();let f=[],V=[];for(let w of E)if(w.active)try{f.push({job:w,commit:w.read()});}catch(_){V.push(_);}for(let{job:w,commit:_}of f)if(w.active)try{_?.();}catch(r){V.push(r);}V.length>0&&queueMicrotask(()=>{throw new AggregateError(V,"Thread layout measurement failed")});}function k(E){E.active&&(c.add(E),t.requestFrame(g));}function C(E,f){let V=v.get(f);V?.delete(E),V?.size===0&&(v.delete(f),t.unobserve(f));}function j(E){let f={read:E,elements:new Set,active:true};return a.add(f),{observe(V){if(!f.active)return;let w=new Set(V),_=w.size!==f.elements.size||[...w].some(r=>!f.elements.has(r));for(let r of f.elements)w.has(r)||C(f,r);for(let r of w){if(f.elements.has(r))continue;let m=v.get(r);m===void 0&&(m=new Set,v.set(r,m),t.observe(r)),m.add(f);}f.elements=w,_&&w.size>0&&k(f);},invalidate:()=>k(f),dispose(){f.active=false,c.delete(f),a.delete(f);for(let V of f.elements)C(f,V);f.elements.clear();}}}return {register:j,hasTarget:E=>v.has(E),observeTargets:()=>v.forEach((E,f)=>t.observe(f)),resized:E=>E.forEach(f=>v.get(f)?.forEach(k)),invalidateAll:()=>a.forEach(k),dispose(){for(let E of a)E.active=false;a.clear(),c.clear(),v.clear();}}}var Qt=120,kn=500,Ye=.5,Vn=8;function It(t){let a=t.ownerDocument.defaultView?.devicePixelRatio;return 1+1/(a!==void 0&&Number.isFinite(a)&&a>0?a:1)}var Mt=defineComponent({name:"ImThreadViewport",props:{messageIds:{type:Array,required:true},contentKey:{type:String,default:""},loadingOlder:{type:Boolean,default:false},hasNewer:{type:Boolean,default:false},loadingNewer:{type:Boolean,default:false},followThreshold:{type:Number,default:120},olderPrefetchThreshold:{type:Number,default:120},followNewMessages:{type:Boolean,default:true},shouldFollowAppendedMessage:{type:Function,default:void 0},pendingSendMessageIds:{type:Array,default:()=>[]},visibleMargin:{type:Number,default:8},resizeFollowEnabled:{type:Boolean,default:true},activeDateOffset:{type:Number,default:16},activeDateEnabled:{type:Boolean,default:false}},emits:{"reach-start":()=>true,"reach-end":()=>true,"visible-range":t=>true,settled:t=>true,"new-message-count":t=>true,"user-scroll":()=>true,"active-date-change":t=>true},setup(t,{emit:a,expose:v,slots:c}){let g$1=ref(null),k=ref(null),C$1=new Map,j$1,E=new Map,f=new Set,V=new Map,w=0,_=[],r,m$1,u,M,L=$t({requestFrame:de,observe:e=>u?.observe(e),unobserve:e=>{e!==g$1.value&&e!==k.value&&!E.has(e)&&u?.unobserve(e);}}),R,W=false,q$1,Z=new Set,ae=false,I,A=0,Y="",z$1=1,$=false,X=false,N=true,J=false,pe=false,Ie=true,ne=false,s=0,ie=-1,Re=-1,Te=rt(),B$1,se,H,K,le=ref(true),Pe=ref(0),fe=C(e=>{Pe.value=e,a("new-message-count",e);});function De(e){let o=Number.isFinite(t.followThreshold)?Math.max(0,t.followThreshold):0;return e.scrollHeight-e.clientHeight-e.scrollTop<=o}function h(e=t.messageIds){return e.flatMap(o=>{let i=C$1.get(o);if(i===void 0)return [];let p=i.getBoundingClientRect(),O=i.querySelector("[data-im-thread-anchor-point]");return [{id:o,top:p.top,bottom:p.bottom,anchorTop:O?.getBoundingClientRect().top??p.top}]})}function S(e="",o=1){let i=Math.min(1,Math.max(0,o));Y!==""&&Y!==e&&V.get(Y)?.element.style.removeProperty("opacity"),Y=e,z$1=i,e!==""&&V.get(e)?.element.style.setProperty("opacity",String(i));}function T(){S();}function P(){let e=g$1.value;if(ae||e===null||!t.activeDateEnabled)return;let o=[...V.entries()].filter(([,U])=>e.contains(U.element)).map(([U,F])=>{let ce=F.element.getBoundingClientRect();return {key:U,label:F.label,top:ce.top,height:ce.height}}).sort((U,F)=>U.top-F.top),i=e.getBoundingClientRect(),p=o.find(U=>U.height>0)?.height??28,O=g({markers:o,viewportTop:i.top,overlayTop:Number.isFinite(t.activeDateOffset)?Math.max(0,t.activeDateOffset):0,overlayHeight:p});if(O===null){T(),a("active-date-change",null);return}S(O.inlineDateKey,O.inlineOpacity),a("active-date-change",O);}function x(e){m$1={scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,width:e.clientWidth,height:e.clientHeight};}function te(e){let o=m$1;if(o===void 0)return false;let i=Math.max(0,e.scrollHeight-e.clientHeight);return i<o.scrollHeight-o.height&&o.scrollTop>i&&Math.abs(e.scrollTop-i)<=It(e)}function Q(e){return te(e)||I!==void 0&&(I.behavior==="smooth"||Math.abs(e.scrollTop-I.targetTop)<=It(e))?0:e.scrollTop-w}function re(e,o){o!==0&&(w=e.scrollTop-o,I=void 0,Xe());}function Ae(e,o){let i=Q(e);if(H!==void 0)return H.expectedOffset-=i,Ze(),re(e,i),J||et(),false;let p=m$1;if(p===void 0)return false;let O=r,U=O===void 0?void 0:h([O.id])[0],F=e.scrollTop-p.scrollTop,ce=te(e)?0:F,Be=O===void 0||U===void 0?0:(U.anchorTop??U.top)-o.top-O.offset+F;return p.scrollHeight!==e.scrollHeight||p.width!==e.clientWidth||p.height!==e.clientHeight||Math.abs(Be)>Ye?(m$1=void 0,!$&&!X&&!t.loadingOlder&&!t.loadingNewer&&!t.hasNewer&&t.resizeFollowEnabled&&le.value&&Math.abs(ce)<=Ye?(G(),true):(O!==void 0&<({...O,offset:O.offset-ce}),re(e,i),false)):false}function ee(){let e=g$1.value;if(ae||e===null)return;let o$1=e.getBoundingClientRect();if(Ae(e,o$1))return;let i=R!==void 0&&W?t.messageIds.filter(F=>f.has(F)):t.messageIds,p=h(i);if(R!==void 0&&W&&p.length===0){le.value=De(e);return}let O=p.filter(F=>B({viewportTop:o$1.top,viewportBottom:o$1.bottom,messageTop:F.top,messageBottom:F.bottom,margin:t.visibleMargin})).map(F=>F.id),U=O.length!==_.length||O.some((F,ce)=>_[ce]!==F);_=Object.freeze(O),r=o(p,{top:o$1.top,bottom:o$1.bottom}),x(e),fe.acknowledgeVisible(O),le.value=De(e),U&&a("visible-range",_),a("settled",{visibleMessageIds:_,..._.length===0?{}:{newestVisibleMessageId:_[_.length-1]},isAtBottom:le.value,newMessageCount:Pe.value});}function de(e){if(Z.add(e),q$1!==void 0)return;let o=()=>{q$1=void 0;let i=[...Z];Z.clear(),i.forEach(p=>p());};typeof globalThis.requestAnimationFrame=="function"?q$1=globalThis.requestAnimationFrame(o):q$1=globalThis.setTimeout(o,0);}function ye(){q$1!==void 0&&(typeof q$1=="number"&&typeof globalThis.cancelAnimationFrame=="function"?globalThis.cancelAnimationFrame(q$1):globalThis.clearTimeout(q$1),q$1=void 0,Z.clear());}function oe(){de(ee);}function $e(){let e=g$1.value;if(e===null)return;let o$1=e.getBoundingClientRect(),i=o(h(),{top:o$1.top,bottom:o$1.bottom});i!==void 0&&(r=i,x(e));}function at(){return N&&H===void 0&&!X&&!t.loadingOlder}function it(){$e(),N=false,ie=s,X=true,le.value=false,a("reach-start"),de(()=>{t.loadingOlder||(X=false);});}function st(e){return t.hasNewer&&!$&&!t.loadingOlder&&!t.loadingNewer&&De(e)}function Je(){$=true,le.value=false,Re=s,a("reach-end"),de(()=>{t.loadingNewer||($=false);});}function ue(){let e=g$1.value;e===null||s===Re||!st(e)||Je();}function Xe(){let e=g$1.value;if(ae||e===null)return;let o=e.scrollTop,i=te(e),p=I,O=false;if(p!==void 0){let F=Math.abs(o-p.targetTop)<=It(e);O=p.behavior==="smooth"||F,(p.behavior!=="smooth"||F)&&(I=void 0);}!O&&!i&&!J&&Ie&&H===void 0&&o!==w&&(J=true,pe=true,s+=1);let U=J&&!O&&!i&&o!==w;if(U&&(A+=1,a("user-scroll"),de(P)),J&&!ne&&be(),!N&&pe&&s!==ie&&o<w&&o>Ce()&&je(),H!==void 0&&!O)if(J){let F=_e();F!==void 0&&(H.expectedOffset=F);}else Ze(),et();at()&&U&&o>=0&&m({previousScrollTop:w,currentScrollTop:o,topThreshold:t.olderPrefetchThreshold})&&it(),U&&st(e)&&z({previousScrollTop:w,currentScrollTop:o,isAtBottom:De(e),isHistoryWindow:t.hasNewer,isPageSettling:O})&&Je(),w=o,oe();}function ze(e,o="auto"){I={targetTop:e,behavior:o};}function Qe(e){let o=H,i=k.value;if(!(o===void 0||i===null)){if(o.visualOffset=Math.abs(e)<=Ye?0:e,o.visualOffset===0){i.style.removeProperty("transform"),i.style.removeProperty("will-change");return}i.style.setProperty("transform",`translate3d(0, ${o.visualOffset}px, 0)`),i.style.setProperty("will-change","transform");}}function Fe(){K!==void 0&&(clearTimeout(K),K=void 0),H!==void 0&&H.visualOffset!==0&&(r=void 0,m$1=void 0);let e=k.value;e?.style.removeProperty("transform"),e?.style.removeProperty("will-change"),H=void 0,I=void 0;}function _e(){let e=g$1.value,o=H;if(e===null||o===void 0)return;let i=C$1.get(o.anchor.id);return i===void 0?void 0:(i.querySelector("[data-im-thread-anchor-point]")??i).getBoundingClientRect().top-e.getBoundingClientRect().top}function Ze(){let e=H,o=_e();if(e===void 0||o===void 0)return;let i=e.expectedOffset-o;Math.abs(i)<=Ye||(Qe(e.visualOffset+i),e.committed=false,e.attempts=0);}function qe(){K!==void 0&&clearTimeout(K),K=setTimeout(()=>{K=void 0,!(J||H?.committed!==true)&&Fe();},kn);}function Le(e){let o=g$1.value,i=H;if(ae||o===null||i===void 0||J)return;let p=e?.visualOffset??i.visualOffset;if(Math.abs(p)<=Ye){i.committed=true,qe();return}let O=Math.max(0,o.scrollHeight-o.clientHeight),U=o.scrollTop,F=Math.min(O,Math.max(0,U-p));ze(F),o.scrollTop=F;let ce=o.scrollTop;if(Math.abs(ce-F)>Ye){e!==void 0&&(Qe(p+ce-U),w=ce),I=void 0,i.committed=false,i.attempts+=1,i.attempts<Vn?et():(Fe(),I=void 0,w=o.scrollTop);return}i.visualOffset!==0&&Qe(0),w=ce,i.expectedOffset=e===void 0?_e()??i.expectedOffset:e.currentOffset-(ce-U),r={...i.anchor,offset:i.expectedOffset},x(o),i.committed=true,i.attempts=0,qe();}function et(){K!==void 0&&clearTimeout(K),K=setTimeout(()=>{K=void 0,Le();},Qt);}function Oe(e){if(e!==void 0){if(H===void 0&&(H={anchor:e,expectedOffset:e.offset,visualOffset:0,committed:false,attempts:0}),!J&&H.visualOffset===0){let o=_e();if(o!==void 0){Le({visualOffset:H.expectedOffset-o,currentOffset:o});return}}Ze(),!J&&Le();}}function lt(e){let o=g$1.value;if(o===null||e===void 0)return;let i=o.getBoundingClientRect(),p=q(e,h([e.id]),{top:i.top,bottom:i.bottom});if(p!==void 0){let O=Math.max(0,o.scrollHeight-o.clientHeight),U=Math.min(O,Math.max(0,o.scrollTop+p));ze(U),o.scrollTop=U,w=o.scrollTop,m$1=void 0;}}function Ce(){return Number.isFinite(t.olderPrefetchThreshold)?Math.max(0,t.olderPrefetchThreshold):0}function Ne(){A+=1,I?.behavior==="smooth"&&(I=void 0),pe=false,J||(J=true,s+=1),ne&&Te.cancel();}function je(){let e=g$1.value;if(!(e===null||s===ie)){if(X||t.loadingOlder){ie=s,N=false;return}H!==void 0&&Fe(),N=true,at()&&e.scrollTop<=Ce()&&it();}}function Ge(){A+=1,r=void 0,m$1=void 0,Te.cancel(),Fe(),J=false,pe=false,ne=false,B$1=void 0,se=void 0,s+=1,ie=-1,Re=-1,N=true,X=false,$=false,I=void 0;}function Ee(){ne||(Te.cancel(),J=false,pe=false,H!==void 0&&(H.attempts=0),Le());}function be(){ne||Te.schedule(Ee,Qt);}function He(){I=void 0,Ee();}function dt(e){Ie=false,ne=true,Ne(),B$1=e.touches?.[0]?.clientY;}function tt(e){let o=e.touches?.[0]?.clientY;o!==void 0&&(B$1!==void 0&&o!==B$1&&(A+=1),B$1!==void 0&&o>B$1?je():B$1!==void 0&&o<B$1&&ue(),B$1=o);}function n(){ne=false,B$1=void 0,be();}function l(e){Ie=true,Ne(),e.deltaY<0?je():e.deltaY>0&&ue(),be();}function d(e){e.pointerType!=="touch"&&(Ie=true,Ne(),se=e.clientY,be());}function y(e){e.pointerType==="touch"||!J||se===void 0||(e.clientY!==se&&(A+=1),e.clientY<se?je():e.clientY>se&&ue(),se=e.clientY,be());}function b(e){e.pointerType!=="touch"&&(se=void 0,be());}function D(e){["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(e.key)&&(Ie=true,Ne(),e.key==="ArrowUp"||e.key==="PageUp"||e.key==="Home"||e.key===" "&&e.shiftKey?je():ue(),be());}function G(e="auto"){let o=g$1.value;if(o===null)return;A+=1,m$1=void 0,Fe();let i=Math.max(0,o.scrollHeight-o.clientHeight);ze(i,e),o.scrollTo?.({top:i,behavior:e}),o.scrollTop!==i&&(o.scrollTop=i),w=o.scrollTop,fe.clear(),W=false,ee();}function me(){let e=g$1.value;return e!==null&&e.clientWidth>0&&e.clientHeight>0}function ge(){let e=g$1.value;return me()&&e!==null&&e.scrollHeight>e.clientHeight+1}function we(e,o={}){return ke(C$1.get(e),o)}function ke(e,o){let i=g$1.value;if(i===null||e===void 0||!i.contains(e)||i.clientHeight<=0)return false;A+=1,Fe();let p=i.getBoundingClientRect(),O=e.getBoundingClientRect(),U=o.block??"center",F;U==="start"?F=i.scrollTop+O.top-p.top:U==="end"?F=i.scrollTop+O.bottom-p.bottom:U==="nearest"?O.top>=p.top&&O.bottom<=p.bottom?F=i.scrollTop:O.top<p.top?F=i.scrollTop+O.top-p.top:F=i.scrollTop+O.bottom-p.bottom:F=j({currentScrollTop:i.scrollTop,scrollHeight:i.scrollHeight,targetHeight:O.height,targetTop:O.top,viewportHeight:i.clientHeight,viewportTop:p.top});let ce=Math.max(0,i.scrollHeight-i.clientHeight),Be=Math.min(ce,Math.max(0,F));m$1=void 0;let We=o.behavior??"auto";return ze(Be,We),i.scrollTo?.({top:Be,behavior:We}),i.scrollTop!==Be&&(i.scrollTop=Be),w=i.scrollTop,W=false,ee(),true}function Ve(e){let o=g$1.value;if(o===null||e===void 0||!o.contains(e)||o.clientHeight<=0)return null;let i=e.getBoundingClientRect(),p=o.scrollTop+i.top-o.getBoundingClientRect().top+i.height/2,O=o.clientHeight/2;return {older:p<O-1,newer:o.scrollHeight-p<O-1}}function gt(){return Ve(j$1)}function nn(e){return Ve(C$1.get(e))}function rn(){fe.clear();}function on(){$=true,le.value=false;}function an(){$=false,oe();}function sn(e,o){let i=C$1.get(e);if(i!==o){if(i!==void 0&&(R?.unobserve(i),i.style.removeProperty("--im-thread-placeholder-play-state"),L.hasTarget(i)||u?.unobserve?.(i),E.delete(i),f.delete(e)),o===null){C$1.delete(e),f.delete(e);return}C$1.set(e,o),E.set(o,e),typeof globalThis.IntersectionObserver=="function"&&o.style.setProperty("--im-thread-placeholder-play-state","paused"),R?.observe(o),u?.observe(o),oe();}}function ln(e,o,i){let p=V.get(e);if(i===null){V.delete(e);return}V.set(e,{element:i,label:o}),Y===e&&i.style.setProperty("opacity",String(z$1)),p?.element!==i&&(i.dataset.imThreadDateSeparator=e);}return provide(bt,{registerLayoutMeasurement:L.register,registerMessageNode:sn,registerDateNode:ln,registerEntryUnreadNode:e=>{j$1=e??void 0;}}),watch(()=>t.contentKey,(e,o)=>{if(e===o)return;Ge();let i=g$1.value;i!==null&&(w=i.scrollTop);},{flush:"sync"}),watch(()=>t.messageIds,async(e,o)=>{if(e.length===o.length&&e.every((ve,Ke)=>ve===o[Ke]))return;let i=g$1.value;if(i===null)return;let p$1=new Set(o);o.length>0&&e.length>0&&!e.some(ve=>p$1.has(ve))&&Ge();let U=t.contentKey,F=A,ce=le.value,Be=o[o.length-1],We=Be===void 0?-1:e.indexOf(Be),nt=We<0?[]:e.slice(We+1).filter(ve=>!p$1.has(ve)),dn=nt.some(ve=>t.pendingSendMessageIds.includes(ve)),vt=$||t.loadingNewer||X||t.loadingOlder,un=e.length===o.length&&e.every(ve=>p$1.has(ve))&&e.some((ve,Ke)=>ve!==o[Ke]),Ot=o[0],kt=Ot!==void 0&&e.indexOf(Ot)>0,ht;if(r!==void 0&&(kt||nt.length>0&&vt)){let ve=i.getBoundingClientRect(),Ke=h([r.id]),pt=Ke[0],cn=pt!==void 0&&pt.bottom>ve.top&&pt.top<ve.bottom?Ke:h();ht=p(r,cn,{top:ve.top,bottom:ve.bottom});}if(await nextTick(),!(ae||t.contentKey!==U||A!==F)){if(dn&&t.followNewMessages){G();return}if(un&&ce&&t.followNewMessages&&t.resizeFollowEnabled&&!t.hasNewer&&!vt){G();return}if(kt&&(X=false,Oe(ht)),nt.length>0){if(vt){$=false,H===void 0&<(ht),le.value=false,oe();return}(ce||nt.some(Ke=>t.shouldFollowAppendedMessage?.(Ke)===true))&&t.followNewMessages?G():fe.add(nt);}oe();}},{flush:"pre"}),watch(()=>t.loadingNewer,(e,o)=>{e||!o||!$||de(()=>{t.loadingNewer||($=false);});},{flush:"pre"}),watch(()=>t.loadingOlder,(e,o)=>{if(e){X=true;return}!o||!X||de(()=>{t.loadingOlder||(X=false);});},{flush:"pre"}),onMounted(()=>{let e=g$1.value;if(e!==null){if(w=e.scrollTop,e.addEventListener("scroll",Xe,{passive:true}),e.addEventListener("scrollend",He,{passive:true}),e.addEventListener("touchstart",dt,{passive:true}),e.addEventListener("touchmove",tt,{passive:true}),e.addEventListener("touchend",n,{passive:true}),e.addEventListener("touchcancel",n,{passive:true}),e.addEventListener("wheel",l,{passive:true}),e.addEventListener("pointerdown",d,{passive:true}),e.addEventListener("pointermove",y,{passive:true}),e.addEventListener("pointerup",b,{passive:true}),e.addEventListener("pointercancel",b,{passive:true}),e.addEventListener("keydown",D),typeof globalThis.ResizeObserver=="function"){u=new globalThis.ResizeObserver(o=>{if(ae||g$1.value===null)return;L.resized(o.map(p=>p.target)),o.some(({target:p})=>p===e||p===k.value||E.has(p))&&ee();}),u.observe(e),k.value!==null&&u.observe(k.value);for(let o of C$1.values())u.observe(o);L.observeTargets();}if(M=e.ownerDocument.fonts,M?.addEventListener("loadingdone",L.invalidateAll),typeof globalThis.IntersectionObserver=="function"){R=new globalThis.IntersectionObserver(o=>{for(let i of o){let p=E.get(i.target);if(p===void 0)continue;let O=i.target,U=i.isIntersecting?"running":"paused";O.style.getPropertyValue("--im-thread-placeholder-play-state")!==U&&O.style.setProperty("--im-thread-placeholder-play-state",U),i.isIntersecting?f.add(p):f.delete(p);}W=true,oe();},{root:e,rootMargin:`${Number.isFinite(t.visibleMargin)?Math.max(0,t.visibleMargin):0}px 0px`});for(let o of C$1.values())R.observe(o);}oe();}}),onBeforeUnmount(()=>{ae=true;let e=g$1.value;e!==null&&e.removeEventListener("scroll",Xe),e!==null&&(e.removeEventListener("scrollend",He),e.removeEventListener("touchstart",dt),e.removeEventListener("touchmove",tt),e.removeEventListener("touchend",n),e.removeEventListener("touchcancel",n),e.removeEventListener("wheel",l),e.removeEventListener("pointerdown",d),e.removeEventListener("pointermove",y),e.removeEventListener("pointerup",b),e.removeEventListener("pointercancel",b),e.removeEventListener("keydown",D)),Te.cancel(),Fe(),ye(),M?.removeEventListener("loadingdone",L.invalidateAll),L.dispose(),u?.disconnect(),R?.disconnect(),T(),j$1=void 0;for(let o of C$1.values())o.style.removeProperty("--im-thread-placeholder-play-state");C$1.clear(),E.clear(),f.clear(),V.clear(),fe.clear();}),v({getViewportElement:()=>g$1.value,clearNewMessageBadge:rn,clearActiveDate:T,isAtBottom:computed(()=>le.value),isMeasurable:me,isScrollable:ge,getMessageCenteringNeeds:nn,newMessageCount:computed(()=>Pe.value),prepareHistoryPageAppend:on,cancelHistoryPageAppend:an,trackRemoteMessageIds:(e,o)=>fe.trackRemote(e,o),scrollToLatest:G,scrollToMessage:we,scrollToEntryUnread:()=>ke(j$1,{block:"center",behavior:"auto"}),getEntryUnreadCenteringNeeds:gt,focusViewport:()=>g$1.value?.focus({preventScroll:true})}),()=>h$1("div",{ref:g$1,"data-im-thread-viewport":"",role:"log",tabindex:-1},[h$1("div",{ref:k,"data-im-thread-viewport-content":""},c.default?.())])}});var Zt=Symbol("ImThreadSurfaceContext");function Cn(t){if(typeof t.getState!="function")throw new TypeError("ImThreadSurfaceContext.getState \u5FC5\u987B\u662F\u51FD\u6570");if(typeof t.actions?.loadOlder!="function")throw new TypeError("ImThreadSurfaceContext.actions.loadOlder \u5FC5\u987B\u662F\u51FD\u6570");if(typeof t.formatDate!="function")throw new TypeError("ImThreadSurfaceContext.formatDate \u5FC5\u987B\u662F\u51FD\u6570");return Object.freeze({...t,actions:Object.freeze({...t.actions})})}function Nn(t){provide(Zt,t);}function Rt(){let t=inject(Zt);if(t===void 0)throw new Error("ImThreadSurface \u9700\u8981\u663E\u5F0F context prop \u6216 provideImThreadSurfaceContext");return t}function Fn(t,a){if(t.key!==a.key||t.kind!==a.kind)return false;switch(a.kind){case "message":return t.kind==="message"&&t.message===a.message&&t.firstOfRun===a.firstOfRun;case "system":return t.kind==="system"&&t.message===a.message;case "date-separator":return t.kind==="date-separator"&&t.label===a.label;case "entry-unread":return t.kind==="entry-unread"&&t.count===a.count;case "encryption":return true}}function en(t,a){if(t===void 0)return a;let v=new Map(t.map(g=>[g.key,g])),c=a.map(g=>{let k=v.get(g.key);return k!==void 0&&Fn(k,g)?k:g});return t.length===c.length&&c.every((g,k)=>g===t[k])?t:c}var Et=Object.freeze({followThreshold:120,olderPrefetchThreshold:120,visibleReadDelay:300,visibleMargin:8,activeDateOffset:16,activeDateIdleDelay:1500}),St=Object.freeze({enabled:true,maxFillPages:8}),Bn=8,Un=160;function jn(t,a){return t?.conversationType===a.conversationType&&t.conversationId===a.conversationId}var Kn=defineComponent({name:"ImThreadSurface",props:{conversation:{type:Object,required:true},context:{type:Object,default:void 0},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0},viewportOptions:{type:Object,default:()=>({})},initialViewportOptions:{type:Object,default:()=>({})},hooks:{type:Object,default:void 0}},setup(t,{expose:a$1,slots:v}){let c=t.context??Rt(),g=ref(null),k=ref(0),C=ref(false),j=ref(false),E=ref(false),f,V,w,_=ref(false),r=ref(false),m=ref(false),u=false,M,L=ref(true),R=[],W=rt(),q=0,Z=ref(0),ae,I=null,A="",Y="",z="",$=false,X=false,N=ref(false),J=ref(""),pe=ref(false),Ie=rt(),ne,s=computed(()=>c.getState()),ie=computed(()=>!!s.value.pendingLocationMessageId),Re=computed(()=>s.value.pageVisible??c.isPageVisible?.()??true),Te=computed(()=>s.value.pageEngaged??c.isPageEngaged?.()??true),B=computed(()=>jn(s.value.activeConversation,t.conversation)),se=computed(()=>({...Et,...t.viewportOptions})),H=computed(()=>{let n=t.initialViewportOptions.maxFillPages??St.maxFillPages;return {enabled:t.initialViewportOptions.enabled??St.enabled,maxFillPages:Number.isFinite(n)?Math.max(0,Math.floor(n)):St.maxFillPages}}),K=computed(()=>!B.value||!s.value.ready?"":`${t.conversation.conversationType}\0${t.conversation.conversationId}`),le="",Pe=computed(n=>{let l=B.value?`${t.conversation.conversationType}\0${t.conversation.conversationId}`:"",d=le===l?n:void 0;return le=l,B.value?en(d,i({messages:s.value.messages,entryUnread:s.value.entryUnread,formatDate:c.formatDate,leadingItems:c.leadingItems?.(),beforeMessageItems:c.beforeMessageItems})):en(d,[])}),fe=computed(()=>Pe.value.flatMap(n=>n.kind==="message"||n.kind==="system"?[n.message.id]:[])),De=computed(()=>s.value.messages.filter(n=>(n.status==="pending"||n.status==="uploading"||n.status==="sending")&&c.shouldFollowMessage?.(n)===true).map(n=>n.id));function h(){Ie.cancel(),ne!==void 0&&(clearTimeout(ne),ne=void 0);}function S(n=false){if(h(),pe.value=false,n){g.value?.clearActiveDate(),J.value="";return}ne=setTimeout(()=>{ne=void 0,!pe.value&&(g.value?.clearActiveDate(),J.value="");},Un);}function T(n){if(n===null){S();return}ne!==void 0&&(clearTimeout(ne),ne=void 0),J.value=n.label,pe.value=true;let l=se.value.activeDateIdleDelay,d=Number.isFinite(l)?Math.max(0,l):Et.activeDateIdleDelay;Ie.schedule(()=>S(),d);}async function P(n,l,d,y=true){t.hooks?.beforeAction?.(n);try{let b=await l();return d?.()!==!1&&t.hooks?.afterAction?.(n,b),b}catch(b){throw y&&d?.()!==false&&t.hooks?.onError?.(n,b),b}}function x(n="automatic",l,d=true){return !B.value||s.value.loading||!s.value.hasOlder?Promise.resolve(0):P({kind:"load-older",source:n},()=>c.actions.loadOlder(),l,d)}function te(){return Q()}function Q(n,l=true){let d=c.actions.loadNewer,y=s.value.loadingNewer??s.value.loading;return !B.value||y||!s.value.hasNewer||d===void 0?Promise.resolve(0):P({kind:"load-newer"},()=>d(),n,l)}async function re(n){for(let l=0;l<Bn;l+=1){if(!B.value||E.value||j.value||ie.value)return;let d=n==="older"?s.value.hasOlder:s.value.hasNewer,y=n==="older"?s.value.olderError:s.value.newerError;if(!d||y!==null||(n==="older"?await x("user-scroll"):await te())>0)return;let D=n==="older"?s.value.hasOlder:s.value.hasNewer,G=n==="older"?s.value.olderError:s.value.newerError;if(!D||G!==null)return}}async function Ae(){return !B.value||c.actions.loadNewer===void 0?0:de({kind:"load-newer"},()=>c.actions.retryNewer?.()??c.actions.loadNewer?.({force:true})??Promise.resolve(0))}async function ee(){return B.value?de({kind:"retry-older"},()=>c.actions.retryOlder?.()??c.actions.loadOlder({force:true})):0}async function de(n,l){let d=K.value,y=++q;I=null,z="";let b;try{b=await P(n,l);}catch(D){throw Oe(d,y)&&(z=d),D}return Oe(d,y)&&!N.value&&(I=null,Ge()),b}async function ye(){if(!B.value)return false;let n=K.value;be(),He();let l=++Z.value;return E.value=false,Ee(true),$=true,A=n,Y=Ne(Ce()),!await P({kind:"jump-to-latest"},()=>c.actions.jumpToLatest?.()??Promise.resolve(!s.value.isHistoryWindow),()=>ue(n,l))||!ue(n,l)||(await nextTick(),!ue(n,l))?false:(g.value?.scrollToLatest(),C.value=true,m.value=false,$e(),true)}function oe(n=false){let l=g.value,d=l?.getViewportElement();r.value=l?.isScrollable()===true;let y=s.value.entryUnreadNavigation;_.value=y?.state==="located"&&R.includes(y.firstMessageId),N.value&&_.value&&(C.value=true);let b=d==null?0:Math.max(0,d.scrollHeight-d.clientHeight-d.scrollTop);m.value=y!==void 0&&b>50,n&&y!==void 0&&d!==null&&d!==void 0&&d.clientHeight>0&&b>=d.clientHeight&&(C.value=true);}function $e(){let n=c.actions.markConversationRead;if(n===void 0||!Te.value||!B.value||!N.value||j.value||u&&(!L.value||s.value.hasNewer)||M!==void 0||s.value.error!==null)return;let l=K.value,d=n().then(()=>{M===d&&l===K.value&&(u=true);}).catch(y=>{!X&&M===d&&l===K.value&&t.hooks?.onError?.({kind:"mark-conversation-read"},y);}).finally(()=>{M===d&&(M=void 0);});M=d;}async function at(){let n=c.actions.loadEntryUnread;if(!B.value||j.value||n===void 0)return "cancelled";He();let l=K.value,d=++Z.value;E.value=false;let y=new AbortController;w=y,V=d,j.value=true,Ee(true),$=true;try{let b=await P({kind:"jump-to-entry-unread"},()=>n({signal:y.signal}),()=>ue(l,d));if(!ue(l,d))return "cancelled";if(!b||s.value.entryUnread.state!=="located")return "unavailable";let G=await it(l,d);return G&&(C.value=!0),G?"located":ue(l,d)?"unavailable":"cancelled"}catch(b){if(!ue(l,d))return "cancelled";throw b}finally{V===d&&(V=void 0,w=void 0,j.value=false);}}async function it(n,l){await nextTick();for(let d=0;d<60;d+=1){if(!ue(n,l))return false;if(g.value?.scrollToEntryUnread())return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(y=>window.requestAnimationFrame(()=>y()));}return false}function st(n){L.value=n.isAtBottom,k.value=n.newMessageCount,oe(),Ge();}function Je(n,l){return g.value?.scrollToMessage(n,l)??false}function ue(n,l){return !X&&Z.value===l&&K.value===n&&B.value}async function Xe(n,l,d,y){for(let b=0;b<60;b+=1){if(!ue(n,l))return false;if(Je(d,y))return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(D=>window.requestAnimationFrame(()=>D()));}return false}async function ze(n,l){for(let d=0;d<60;d+=1){if(!n())return false;if(g.value?.isMeasurable()&&g.value.getMessageCenteringNeeds(l)!=null)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(y=>window.requestAnimationFrame(()=>y()));}return false}async function Qe(n){let l=()=>!n()||!(s.value.loading||s.value.loadingOlder||s.value.loadingNewer);return l()||await new Promise(d=>{let y=watch(l,b=>{b&&(y(),d());},{flush:"sync"});}),await nextTick(),await nextTick(),n()}async function Fe(n,l,d){let y=g.value;if(y===null||!y.isMeasurable())return false;let b=0,D="older",G=()=>ue(n,l),me=async ge=>{let we=0,ke=ge==="older"?s.value.olderError:s.value.newerError,Ve=ke===void 0?s.value.error:ke;if(Ve!=null)throw Ve;if(ge==="older")we=await x("automatic",G,false);else {y.prepareHistoryPageAppend();try{we=await Q(G,!1);}catch(gt){throw G()&&y.cancelHistoryPageAppend(),gt}we<=0&&G()&&!s.value.hasNewer&&y.cancelHistoryPageAppend();}return b+=1,await nextTick(),await nextTick(),G()};for(;ue(n,l)&&b<H.value.maxFillPages&&y.isMeasurable();){if(!await Qe(G))return false;let ge=y.getMessageCenteringNeeds(d);if(ge===null)return false;let we=!s.value.hasOlder,ke=!s.value.hasNewer||c.actions.loadNewer===void 0,Ve=ge.older&&ge.newer&&!we&&!ke?D:ge.older&&!we?"older":ge.newer&&!ke?"newer":void 0;if(Ve===void 0)break;if(D=Ve==="older"?"newer":"older",!await me(Ve))return false}return ue(n,l)}async function _e(n,l={behavior:"auto",block:"center"}){if(!B.value||n==="")return {ok:false,reason:"cancelled"};let d=K.value,y=E.value;be(),He();let b=y||ae!==void 0||(s.value.loadingOlder??s.value.loading)||(s.value.loadingNewer??s.value.loading),D=++Z.value;E.value=true;let G=new AbortController;f=G,Ee(true),$=true,A=d,Y=Ne(Ce());let me=()=>ue(d,D);try{if(b&&c.actions.loadAround!==void 0||!fe.value.includes(n)){let we=c.actions.loadAround;if(we===void 0)return {ok:!1,reason:"anchor-unavailable"};let ke={};ae=ke;try{let Ve=await P({kind:"locate-message",messageId:n},()=>we(n,{signal:G.signal}),me,!1);if(!me())return {ok:!1,reason:"cancelled"};if(!Ve)return {ok:!1,reason:"not-visible"}}finally{ae===ke&&(ae=void 0);}}return await nextTick(),await nextTick(),!await ze(me,n)||!await Fe(d,D,n)?{ok:!1,reason:me()?"not-visible":"cancelled"}:await Xe(d,D,n,l)?{ok:!0}:{ok:!1,reason:me()?"not-visible":"cancelled"}}catch(ge){return me()?a(ge):{ok:false,reason:"cancelled"}}finally{f===G&&(f=void 0),Z.value===D&&(E.value=false);}}async function Ze(n,l){return (await _e(n,l)).ok}function qe(){W.cancel();}function Le(){if(!N.value){qe();return}let n=t.readActions;if(n===void 0&&c.actions.markVisibleMessages===void 0){qe();return}let l=Number.isFinite(se.value.visibleReadDelay)?Math.max(0,se.value.visibleReadDelay):Et.visibleReadDelay;W.schedule(()=>{if(!B.value||!Te.value)return;$e();let d=c.actions.markVisibleMessages;if(d!==void 0){let D=R;d(D).catch(G=>{t.hooks?.onError?.({kind:"visible-range",messageIds:D},G);});return}if(n===void 0)return;let y=R[R.length-1];if(y===void 0)return;let b=n.resolveTarget===void 0?y:n.resolveTarget(y);b!=null&&Promise.resolve(n.markRead(b)).catch(D=>{t.hooks?.onError?.({kind:"visible-range",messageIds:R},D);});},l);}function et(n){R=Object.freeze([...n]),oe();let l={kind:"visible-range",messageIds:R};t.hooks?.beforeAction?.(l);try{c.actions.onVisibleRange?.(R),t.hooks?.afterAction?.(l,void 0);}catch(d){throw t.hooks?.onError?.(l,d),d}N.value?Le():Ge();}function Oe(n,l){return !X&&q===l&&K.value===n&&!$&&!ie.value}function lt(n,l){Oe(n,l)&&(A=n,Y=Ne(Ce()),N.value=true,oe(),$e(),Le());}function Ce(){return s.value.entryUnreadNavigation===void 0?s.value.entryUnread:{state:"none"}}function Ne(n){return n.state!=="located"?n.state:`${n.state}:${n.firstMessageId}`}async function je(n,l,d){for(let y=0;y<60;y+=1){if(!Oe(n,l))return false;if(g.value?.scrollToMessage(d,{behavior:"auto",block:"center"})===true)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(D=>window.requestAnimationFrame(()=>D()));}return false}function Ge(){let n=K.value,l=Ne(Ce());if(n===""||s.value.loading||E.value||ie.value||s.value.error!==null&&s.value.messages.length===0||A===n&&(Y===l||Y.startsWith("located:")||$)||z===n||I!==null)return;if(!H.value.enabled){A=n,Y=l,N.value=true,Le();return}let d=++q;$=false,N.value=false;let y=(async()=>{if(await nextTick(),!Oe(n,d))return;let b=g.value;if(b===null||!b.isMeasurable())return;let D=Ce();if(D.state==="located"&&!fe.value.includes(D.firstMessageId))return;let G=D.state==="located"?await je(n,d,D.firstMessageId):false;if(D.state==="located"&&!G)return;G||b.scrollToLatest();let me=0;for(;Oe(n,d)&&me<H.value.maxFillPages&&s.value.error===null&&(s.value.hasOlder||s.value.hasNewer&&c.actions.loadNewer!==void 0)&&b.isMeasurable()&&!b.isScrollable();){if(s.value.hasNewer&&c.actions.loadNewer!==void 0&&(s.value.messages.length===0||!s.value.hasOlder)){let we=Z.value;b.prepareHistoryPageAppend();try{await te(),await nextTick();}finally{K.value===n&&Z.value===we&&(q===d||$)&&b.cancelHistoryPageAppend();}}else await x();if(!Oe(n,d)||(me+=1,await nextTick(),await nextTick(),!b.isMeasurable()))return}if(!Oe(n,d)||!b.isMeasurable())return;let ge=Ce();if(ge.state==="located"){if(!fe.value.includes(ge.firstMessageId)||!await je(n,d,ge.firstMessageId))return}else (me>0||G)&&b.scrollToLatest();await nextTick(),lt(n,d);})().catch(()=>{Oe(n,d)&&(z=n);}).finally(()=>{I===y&&(I=null);});I=y;}function Ee(n,l=false){q+=1,I=null,$=false,N.value=n,n||(A="",Y="",l||(z="")),qe();}function be(){w!==void 0&&(Z.value+=1,w.abort(),w=void 0,V=void 0,j.value=false);}function He(){!E.value&&f===void 0||(Z.value+=1,f?.abort(),f=void 0,E.value=false);}function dt(){if(oe(true),be(),He(),ie.value&&c.actions.cancelMessageLocation?.(),$=true,N.value)return;let n=K.value;q+=1,I=null,A=n,N.value=true,Le();}let tt=Object.freeze({getViewportElement:()=>g.value?.getViewportElement()??null,loadOlder:x,retryOlder:ee,loadNewer:te,retryNewer:Ae,jumpToLatest:ye,jumpToEntryUnread:at,scrollToMessage:Je,locateMessage:Ze,locateMessageDetailed:_e,focusViewport:()=>g.value?.focusViewport()});return a$1(tt),watch(Te,n=>{n&&N.value?Le():qe();}),watch([()=>s.value.activeRemoteMessageRevision??0,g,K],()=>{let n=g.value;if(n===null||!B.value)return;let l=c.actions.drainActiveRemoteMessageIds?.()??[];n.trackRemoteMessageIds(l,{isAtBottom:L.value,isHistoryWindow:s.value.isHistoryWindow,isPageVisible:Re.value})&&(L.value=false);},{flush:"post"}),watch(()=>s.value.pendingLocationMessageId??"",n=>{(n!==""||E.value)&&(He(),Z.value+=1,E.value=false),n!==""&&(be(),N.value||Ee(false));},{flush:"sync"}),watch([K,()=>s.value.loading,()=>s.value.error,()=>fe.value.length,()=>s.value.hasOlder,()=>Ne(Ce()),H,()=>s.value.hasNewer,ie],([n,l,d,y,,b],[D,,,G,,me])=>{if(n!==D&&(be(),He(),Z.value+=1,E.value=false,ae=void 0,Ee(false),S(true),g.value?.clearNewMessageBadge(),k.value=0,L.value=true,R=[],C.value=false,_.value=false,r.value=false,m.value=false,j.value=false,V=void 0,u=false,M=void 0),n!==""&&n===D&&G!==void 0&&G>0&&y===0&&(s.value.hasOlder||s.value.hasNewer)&&N.value&&Ee(false,true),n!==""&&n===D&&b!==me&&!Y.startsWith("located:")&&!$&&b.startsWith("located:")&&(A="",Y="",N.value=false),n===""){Ee(false);return}if(d!==null&&s.value.messages.length===0){N.value||Ee(false,true);return}l||Ge();},{flush:"post",immediate:true}),onBeforeUnmount(()=>{X=true,be(),He(),Z.value+=1,Ee(false),S(true);}),()=>{let n={conversation:t.conversation,state:s.value,items:Pe.value,actions:tt,initialViewportSettled:K.value!==""&&(s.value.messages.length===0?!s.value.loading&&s.value.error===null&&!s.value.hasOlder&&!s.value.hasNewer:N.value&&A===K.value)},l=[v.header?.(n),v["before-list"]?.(n)];if(!B.value)l.push(v.unsupported?.(n)??h$1("div",{"data-im-thread-unsupported":""}));else if(!s.value.ready&&s.value.loading)l.push(v.loading?.(n)??h$1("div",{"data-im-thread-loading":""}));else if(s.value.error!==null&&s.value.messages.length===0)l.push(v.error?.(n)??h$1("div",{"data-im-thread-error":""}));else if(s.value.ready&&s.value.messages.length===0&&!s.value.hasOlder&&!s.value.hasNewer)l.push(v.empty?.(n)??h$1("div",{"data-im-thread-empty":""}));else {let d=h$1(Mt,{ref:g,messageIds:fe.value,contentKey:`${t.conversation.conversationType}\0${t.conversation.conversationId}`,loadingOlder:s.value.loadingOlder??s.value.loading,hasNewer:s.value.hasNewer,loadingNewer:s.value.loadingNewer??s.value.loading,followThreshold:se.value.followThreshold,olderPrefetchThreshold:se.value.olderPrefetchThreshold,visibleMargin:se.value.visibleMargin,activeDateOffset:se.value.activeDateOffset,activeDateEnabled:v["active-date"]!==void 0,resizeFollowEnabled:N.value&&!j.value&&!E.value&&!ie.value,followNewMessages:Re.value&&!j.value&&!E.value&&!ie.value,shouldFollowAppendedMessage:y=>{let b=s.value.messages.find(D=>D.id===y);return b===void 0?false:c.shouldFollowMessage?.(b)===true},pendingSendMessageIds:De.value,onReachStart:()=>{re("older").catch(()=>{});},onReachEnd:()=>{re("newer").catch(()=>{});},onSettled:st,onUserScroll:dt,onActiveDateChange:T,onVisibleRange:et,onNewMessageCount:y=>{k.value=y;}},{default:()=>[v["viewport-before"]?.(n),h$1(wt,{items:Pe.value,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{item:v.item,"date-separator":v["date-separator"],"entry-unread":v["entry-unread"],encryption:v.encryption,system:v.system,message:v.message,"recalled-message":v["recalled-message"],"deleted-message":v["deleted-message"],"unsupported-body":v["unsupported-body"]}),v["viewport-after"]?.(n)]});l.push(h$1("div",{"data-im-thread-viewport-shell":""},[v["active-date"]?.({label:J.value,visible:pe.value&&J.value!==""}),d,v["entry-unread-navigation"]?.({...n,count:s.value.entryUnreadNavigation?.state==="none"?0:s.value.entryUnreadNavigation?.count??0,loading:j.value,visible:n.initialViewportSettled&&!C.value&&!_.value&&!s.value.isHistoryWindow&&s.value.entryUnreadNavigation!==void 0&&s.value.entryUnreadNavigation.state!=="none"&&s.value.entryUnreadNavigation.count>0&&(r.value||s.value.hasOlder)})])),s.value.error!==null&&l.push(v.error?.(n)??h$1("div",{"data-im-thread-error":""}));}return l.push(v["after-list"]?.(n),v["jump-to-latest"]?.({...n,count:k.value,visible:m.value||!L.value||s.value.isHistoryWindow}),v["context-menu"]?.(n),v.composer?.(n)),h$1("section",{"data-im-thread-surface":"","data-conversation-type":t.conversation.conversationType,"data-conversation-id":t.conversation.conversationId},l)}}});function _n(t){let a=new Map;for(let c of t){if(a.has(c.kind))throw new Error(`\u6D88\u606F renderer kind \u91CD\u590D\u6CE8\u518C\uFF1A${c.kind}`);a.set(c.kind,c.component);}let v=Object.freeze([...a.keys()]);return Object.freeze({kinds:v,resolve:c=>a.get(c)})}var zn=140,Wn=120;function mt(t,a){if(t.width<=0||t.height<=0)return 0;let v=Math.max(0,Math.min(t.right,a.right)-Math.max(t.left,a.left)),c=Math.max(0,Math.min(t.bottom,a.bottom)-Math.max(t.top,a.top));return Math.min(1,v*c/(t.width*t.height))}function Pt(t,a){return {x:t.x,y:t.top-a,top:t.top-a,bottom:t.bottom+a,left:t.left,right:t.right,width:t.width,height:t.height+a*2,toJSON:()=>({})}}function At(t){let a=Math.max(0,t.scrollIdleMs??zn),v=Math.max(0,t.visibilityDwellMs??Wn),c=Math.min(1,Math.max(0,t.minimumIntersectionRatio??.01)),g=Math.max(0,t.revealMarginPx??0),k=Math.max(0,t.preloadMarginPx??0),C=Math.max(g,k),j=Math.max(0,t.maxPreloadTargets??Number.POSITIVE_INFINITY),E=Math.max(1,t.maxSettledVisible??Number.POSITIVE_INFINITY),f=new Map,V=new Map,w=reactive(new Set),_=new Set,r=new Set,m=[],u=null,M=null,L=null,R=false,W=false,q=false,Z=false,ae=new Map,I=0,A=false;function Y(){I+=1,A=false,ae.clear();}function z(h){let S=[...h].filter(([P,x])=>f.get(P)===x);if(S.length===0)return;let T=Ie();ne(true,T,S),Re(T,S);}function $(h){if(!t.batchRegistration){z(h);return}for(let[T,P]of h)ae.set(T,P);if(A)return;A=true;let S=I;nextTick(()=>{if(q||S!==I)return;A=false;let T=[...ae];ae.clear(),z(T),H();});}let X,N;function J(){X!==void 0&&clearTimeout(X),X=void 0;}function pe(){N!==void 0&&clearTimeout(N),N=void 0;}function Ie(){let h,S=new Map;return {getRootRect(){return h===void 0&&(h=u?.getBoundingClientRect()??null),h},getElementRect(T){let P=S.get(T);return P===void 0&&(P=T.getBoundingClientRect(),S.set(T,P)),P}}}function ne(h=false,S=Ie(),T=f){if(!h&&M!==null||u===null)return;let P=S.getRootRect();if(P===null)return;let x=Pt(P,C);for(let[te,Q]of T){let re=S.getElementRect(te);Q.ratio=mt(re,P),Q.intersecting=Q.ratio>0,Q.revealIntersecting=C>0?mt(re,x)>0:Q.intersecting&&Q.ratio>=c;}}function s(h){return h.intersecting&&h.ratio>=c}function ie(h){let S=V.get(h.key);return S!==void 0&&f.get(S)===h}function Re(h=Ie(),S=f){let T=[];for(let[P,x]of S)if(!(!x.revealIntersecting||w.has(x.key))){if(C>g){if(g===0&&!s(x))continue;if(g>0){let te=h.getRootRect();if(te===null||mt(h.getElementRect(P),Pt(te,g))<=0)continue}}T.push(x);}for(let P of T)!ie(P)||w.has(P.key)||(w.add(P.key),t.onRevealed?.(P.item));}function Te(h,S=false){let T=new Set(h.map(x=>x.key));if(!(!(T.size!==r.size||[...T].some(x=>!r.has(x)))&&!S)){r.clear();for(let x of T)r.add(x);t.onSettledVisibleChange?.(h.map(x=>x.item));}}function B(h,S=false){!S&&h.length===m.length&&h.every((T,P)=>T.key===m[P]?.key&&T.item===m[P]?.item)||(m=h,t.onSettledPreloadChange?.(h.map(T=>T.item)));}function se(){if(q||R)return;let h=W;W=false;let S=I,T=u,P=()=>!q&&!R&&S===I&&u===T,x=Ie();ne(false,x);let te=x.getRootRect(),Q=te===null?0:(te.top+te.bottom)/2,re=[...f.entries()].filter(([,ee])=>s(ee)).map(([ee,de])=>({target:de,rect:x.getElementRect(ee)})).sort((ee,de)=>Math.abs((ee.rect.top+ee.rect.bottom)/2-Q)-Math.abs((de.rect.top+de.rect.bottom)/2-Q)).slice(0,E).map(({target:ee})=>ee),Ae;if(t.onSettledPreloadChange!==void 0&&te!==null){let ee=Pt(te,k);Ae=[...f.entries()].filter(([,ye])=>ye.revealIntersecting).map(([ye,oe])=>({target:oe,rect:x.getElementRect(ye)})).filter(({target:ye,rect:oe})=>s(ye)||k>0&&mt(oe,ee)>0).sort((ye,oe)=>Number(s(oe.target))-Number(s(ye.target))||Math.abs((ye.rect.top+ye.rect.bottom)/2-Q)-Math.abs((oe.rect.top+oe.rect.bottom)/2-Q)).slice(0,j).map(({target:ye})=>ye);}if(Re(x),!!P()&&(Te(re.filter(ie),h),!!P())){Ae!==void 0&&B(Ae.filter(ie),h);for(let ee of re){if(!P())return;!ie(ee)||_.has(ee.key)||(_.add(ee.key),t.onActivated?.(ee.item));}}}function H(){q||R||(pe(),N=setTimeout(()=>{N=void 0,se();},v));}function K(){q||(W=true,le(true),B([]),ne(),Re(),Te([]),pe(),J(),X=setTimeout(()=>{X=void 0,le(false),H();},a));}function le(h){R!==h&&(R=h,t.onScrollingChange?.(h));}function Pe(){u?.removeEventListener("scroll",K),M?.disconnect(),L?.disconnect(),M=null,L=null,u=null;}function fe(h=true){if(q)return;let S=t.getRoot();if(!(S===u&&u!==null)){if(B([]),Pe(),u=S,u===null){h&&!Z&&(Z=true,Promise.resolve().then(()=>{Z=false,q||(fe(false),H());}));return}if(u.addEventListener("scroll",K,{passive:true}),typeof IntersectionObserver<"u"){M=new IntersectionObserver(T=>{for(let P of T){let x=f.get(P.target);x!==void 0&&(x.intersecting=P.isIntersecting,x.ratio=P.intersectionRatio,C===0&&(x.revealIntersecting=P.isIntersecting&&P.intersectionRatio>=c));}Re(),H();},{root:u,threshold:[0,c,1]}),C>0&&(L=new IntersectionObserver(T=>{for(let P of T){let x=f.get(P.target);x!==void 0&&(x.revealIntersecting=P.isIntersecting);}Re(),H();},{root:u,rootMargin:`${C}px 0px`,threshold:0}));for(let T of f.keys())M.observe(T);for(let T of f.keys())L?.observe(T);}$(f);}}function De(h){B(m.filter(S=>S.key!==h)),w.delete(h),_.delete(h),r.delete(h);}return {register(h,S){if(q)return;let T=t.getKey(h),P=w.has(T),x=_.has(T),te=S===null?void 0:f.get(S);te!==void 0&&te.key!==T&&(V.delete(te.key),f.delete(S),De(te.key));let Q=V.get(T);if(Q!==void 0&&Q!==S&&(M?.unobserve(Q),L?.unobserve(Q),f.delete(Q),V.delete(T)),S===null){Q!==void 0&&(M?.unobserve(Q),L?.unobserve(Q),f.delete(Q),V.delete(T)),De(T);return}let re=f.get(S);if(re?.key===T&&re.item===h){let de=u;fe(),u!==de&&H();return}let Ae={item:h,key:T,intersecting:re?.key===T?re.intersecting:false,ratio:re?.key===T?re.ratio:0,revealIntersecting:re?.key===T?re.revealIntersecting:false};f.set(S,Ae),V.set(T,S);let ee=u;fe(),u===ee&&(M?.observe(S),L?.observe(S),$([[S,Ae]])),P&&t.onRevealed?.(h),x&&ie(Ae)&&t.onActivated?.(h),H();},isRevealed:h=>w.has(t.getKey(h)),isActivated:h=>_.has(t.getKey(h)),isSettledVisible:h=>r.has(t.getKey(h)),isScrolling:()=>R,notifyScroll:K,refresh(){fe(),Y(),z(f),H();},reset(){Y(),J(),pe(),le(false),W=false,Te([]),B([]),Pe(),f.clear(),V.clear(),w.clear(),_.clear();},dispose(){q||(Y(),J(),pe(),le(false),W=false,Te([]),B([]),Pe(),f.clear(),V.clear(),w.clear(),_.clear(),q=true);}}}function Yn(t){let a=new Map,v=new Map,c=shallowReactive(new Map),g=new Map,k=new Map,C=[],j=false,E=r=>{let m=a.get(r.channel);return m===void 0?r.channel:`${r.channel}\0${m.getKey(r.item)}`},f=At({getRoot:t.getRoot,batchRegistration:t.batchRegistration,getKey:r=>r.key,revealMarginPx:t.revealMarginPx,preloadMarginPx:t.preloadMarginPx,minimumIntersectionRatio:t.minimumIntersectionRatio,scrollIdleMs:t.scrollIdleMs,visibilityDwellMs:t.visibilityDwellMs,onScrollingChange:r=>{for(let m of a.values())m.onScrollingChange?.(r);},onRevealed:r=>r.targets.forEach(m=>a.get(m.channel)?.onRevealed?.(m.item)),onActivated:r=>r.targets.forEach(m=>a.get(m.channel)?.onActivated?.(m.item)),onSettledPreloadChange:r=>{let m=r.flatMap(u=>u.targets);for(let[u,M]of a){let L=m.filter(R=>R.channel===u).map(R=>R.item);M.onSettledPreloadChange?.(L.slice(0,Math.max(0,M.maxPreloadTargets??Number.POSITIVE_INFINITY)));}},onSettledVisibleChange:r=>{V(r.flatMap(m=>m.targets));}});function V(r){C=r;for(let[m,u]of a){let M=r.filter(R=>R.channel===m).map(R=>R.item),L=u.maxSettledVisible===void 0?M:M.slice(0,u.maxSettledVisible);u.onSettledVisibleChange?.(L);}}function w(r){let m=g.get(r),u=[];for(let R of a.keys()){let W=m?.get(R);W!==void 0&&u.push(W);}let M=c.get(r);if(M!==void 0&&u.length===M.targets.length&&u.every((R,W)=>R===M.targets[W]))return;if(u.length===0)M!==void 0&&(c.delete(r),k.get(M.key)===r&&(k.delete(M.key),f.register(M,null)));else {let R={key:JSON.stringify(u.map(E)),targets:u};M!==void 0&&M.key!==R.key&&k.get(M.key)===r&&k.delete(M.key),c.set(r,R),k.set(R.key,r),f.register(R,r);}let L=C.flatMap(R=>{let W=v.get(R.channel)?.get(a.get(R.channel).getKey(R.item));return W===void 0?[]:[W.target]});(L.length!==C.length||L.some((R,W)=>R!==C[W]))&&V(L);}function _(r){return m=>{if(j)throw new Error("Thread visibility target group \u5DF2\u91CA\u653E");if(a.has(r))throw new Error(`Thread visibility channel \u5DF2\u5B58\u5728: ${r}`);a.set(r,m);let u=shallowReactive(new Map);v.set(r,u);let M=new Map,L=false,R=I=>({channel:r,item:I});function W(I){M.delete(I);let A=g.get(I);A?.delete(r),A?.size===0&&g.delete(I);}function q(){let I=[...M.keys()];u.clear();for(let A of I)W(A);for(let A of I)w(A);m.onScrollingChange?.(false),m.onSettledVisibleChange?.([]),m.onSettledPreloadChange?.([]);}function Z(I,A){let Y=u.get(m.getKey(I)),z=Y===void 0?void 0:c.get(Y.element);return z!==void 0&&A(z)}return {register(I,A){if(L||j)return;let Y=m.getKey(I),z=u.get(Y);if(A===null){z!==void 0&&(u.delete(Y),W(z.element),w(z.element));return}if(z?.target.item===I&&z.element===A){let J=c.get(A);J!==void 0&&f.register(J,A);return}let $=z?.target.item===I?z.target:R(I),X=M.get(A);X!==void 0&&X!==Y&&u.delete(X),z!==void 0&&z.element!==A&&W(z.element),u.set(Y,{target:$,element:A}),M.set(A,Y);let N=g.get(A);N===void 0&&(N=new Map,g.set(A,N)),N.set(r,$),w(A),z!==void 0&&z.element!==A&&w(z.element);},isRevealed:I=>Z(I,f.isRevealed),isActivated:I=>Z(I,f.isActivated),isSettledVisible:I=>Z(I,f.isSettledVisible),isScrolling:f.isScrolling,notifyScroll:f.notifyScroll,refresh:f.refresh,reset:q,dispose(){L||(q(),L=true,a.delete(r),v.delete(r));}}}}return {createFactory:_,refresh:f.refresh,dispose(){if(!j){for(let r of c.values())f.register(r,null);c.clear(),g.clear(),k.clear();for(let r of a.values())r.onSettledPreloadChange?.([]);v.clear(),a.clear(),f.dispose(),j=true;}}}}function Jn(t){let a=ut();if(a===void 0)throw new Error("useImThreadLayoutMeasurement requires an ImThreadViewport");let v=a.registerLayoutMeasurement(t);return onBeforeUnmount(v.dispose),v}export{Tt as ImThreadBodySwitch,wt as ImThreadItems,Kn as ImThreadSurface,Mt as ImThreadViewport,Cn as createImThreadSurfaceContext,_n as createMessageRendererRegistry,Yn as createThreadVisibilityTargetGroup,At as createThreadVisibilityTargets,Nn as provideImThreadSurfaceContext,mn as useImText,Jn as useImThreadLayoutMeasurement,Rt as useImThreadSurfaceContext,hn as useOptionalImThreadReadActions};
|
package/dist/chat-kit.d.ts
CHANGED
|
@@ -112,7 +112,7 @@ type LastMessageSummary = {
|
|
|
112
112
|
} | {
|
|
113
113
|
kind: 'gift';
|
|
114
114
|
}
|
|
115
|
-
/** 直播间分享。`title`
|
|
115
|
+
/** 直播间分享。`title` 是房间标题,没有房间标题再用主播昵称。 */
|
|
116
116
|
| {
|
|
117
117
|
kind: 'liveRoom';
|
|
118
118
|
title?: string;
|
|
@@ -3224,6 +3224,8 @@ interface ImSdkErrorShape {
|
|
|
3224
3224
|
category: ImSdkErrorCategory;
|
|
3225
3225
|
operation: string;
|
|
3226
3226
|
retryable: boolean;
|
|
3227
|
+
/** 执行设施已终止;宿主可在保存草稿后提供用户主动整页刷新,不得自动重试。 */
|
|
3228
|
+
recovery?: 'reload-app';
|
|
3227
3229
|
conversation?: ConversationRef;
|
|
3228
3230
|
details?: Readonly<Record<string, unknown>>;
|
|
3229
3231
|
cause?: unknown;
|
|
@@ -4520,8 +4522,11 @@ type ConversationLastMessageSummary = {
|
|
|
4520
4522
|
kind: 'transfer';
|
|
4521
4523
|
} | {
|
|
4522
4524
|
kind: 'gift';
|
|
4523
|
-
}
|
|
4525
|
+
}
|
|
4526
|
+
/** 直播间分享。`title` 是房间标题,没有房间标题再用主播昵称。 */
|
|
4527
|
+
| {
|
|
4524
4528
|
kind: 'liveRoom';
|
|
4529
|
+
title?: string;
|
|
4525
4530
|
} | {
|
|
4526
4531
|
kind: 'redPacket';
|
|
4527
4532
|
} | {
|
|
@@ -5020,7 +5025,7 @@ interface ForwardMessagesResult {
|
|
|
5020
5025
|
* 只有 `sendText` 消费文本草稿;媒体、语音、文件、GIF 与名片拥有独立选择态,不清理 Composer 文本。
|
|
5021
5026
|
*/
|
|
5022
5027
|
interface ConversationMessageApi {
|
|
5023
|
-
/**
|
|
5028
|
+
/** 发送文本;单聊新文本固定加密,mention 与其他会话的加密方式由各自 sibling 决定。 */
|
|
5024
5029
|
sendText: (text: string, options?: TextMessageOptions) => Promise<SendMessageResult>;
|
|
5025
5030
|
/** 分享个人、普通群或社群名片;发送目标仍由当前 handle 的精确会话身份决定。 */
|
|
5026
5031
|
sendContact: (contact: ContactCardInput, options?: ContactMessageOptions) => Promise<SendMessageResult>;
|
|
@@ -5588,6 +5593,18 @@ interface ImMediaTasksApi {
|
|
|
5588
5593
|
file: Blob;
|
|
5589
5594
|
signal?: AbortSignal;
|
|
5590
5595
|
}) => Promise<Blob | null>;
|
|
5596
|
+
/**
|
|
5597
|
+
* 为本地图片生成仅供胶片条/相册格显示的缩略图,不上传、不写缓存、不改变发送文件与元信息。
|
|
5598
|
+
* JPEG 按文件签名识别,最长边最多 256px 且不放大,与发送预读共用账号的图片解码预算。
|
|
5599
|
+
* 其它格式直接返回原 Blob,保留透明与动画;宿主负责返回 Blob 的 object URL 生命周期。
|
|
5600
|
+
* 生成失败返回 null 并记录诊断;取消、账号失效和未装配能力保持明确错误。
|
|
5601
|
+
* @param input.file 原始本地图片;返回的显示资源不得代替它传入发送命令。
|
|
5602
|
+
* @param input.signal 删除文件、关闭预览或切换账号时取消请求。
|
|
5603
|
+
*/
|
|
5604
|
+
prepareLocalImageThumbnail: (input: {
|
|
5605
|
+
file: Blob;
|
|
5606
|
+
signal?: AbortSignal;
|
|
5607
|
+
}) => Promise<Blob | null>;
|
|
5591
5608
|
}
|
|
5592
5609
|
|
|
5593
5610
|
/**
|
package/dist/chat-kit.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{q as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,p as DEFAULT_LOADING_SHOW_DELAY_MS,x as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,w as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,e as MINI_PROGRAM_LANG_NUMBERS,S as SPIKE_STEP,N as calculateMediaBox,E as canCopyMessageImage,t as canPromoteMediaPresentationSource,B as captureRuntimeClientOperation,A as captureRuntimeOperation,n as channelMiniProgramRelKey,z as createConversationPrefetchController,r as createDelayedLoadingIndicator,L as createLinkMatcher,F as createMessageImageCopySource,f as csvIncludes,d as decideChannelMiniProgramRelOpen,P as formatFileSize,O as formatMediaDuration,Q as getFileExtension,D as getMessageCopyImageUrl,C as getMessageCopyText,K as hasLinkCandidate,u as highlightSegments,a as isMiniProgramShowTypeOpenable,G as mediaService,J as normalizeLinkHref,V as placeholderWaveform,H as readService,U as resampleWaveform,s as resolveBestMediaPresentationSource,h as resolveChannelMiniProgramRelIcon,g as resolveChannelMiniProgramRelName,j as resolveChannelMiniProgramRelOpenSurface,i as resolveChannelMiniProgramRelUrl,k as resolveChannelPinnedGameCopy,o as resolveConversationListPresentation,M as resolveMediaPresentation,R as resolveMediaTransferPresentation,v as resolveMessageSearchPreview,c as resolveMiniProgramFloatLinkUrl,y as resolveMiniProgramGamePreviewLayout,b as resolveMiniProgramOpenUrl,I as resolveQuotedMessagePresentation,m as resolveVisibleChannelMiniProgramRels,l as sortChannelMiniProgramFloatingItems,T as spikeCountForDuration}from'./chunk-
|
|
1
|
+
export{q as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,p as DEFAULT_LOADING_SHOW_DELAY_MS,x as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,w as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,e as MINI_PROGRAM_LANG_NUMBERS,S as SPIKE_STEP,N as calculateMediaBox,E as canCopyMessageImage,t as canPromoteMediaPresentationSource,B as captureRuntimeClientOperation,A as captureRuntimeOperation,n as channelMiniProgramRelKey,z as createConversationPrefetchController,r as createDelayedLoadingIndicator,L as createLinkMatcher,F as createMessageImageCopySource,f as csvIncludes,d as decideChannelMiniProgramRelOpen,P as formatFileSize,O as formatMediaDuration,Q as getFileExtension,D as getMessageCopyImageUrl,C as getMessageCopyText,K as hasLinkCandidate,u as highlightSegments,a as isMiniProgramShowTypeOpenable,G as mediaService,J as normalizeLinkHref,V as placeholderWaveform,H as readService,U as resampleWaveform,s as resolveBestMediaPresentationSource,h as resolveChannelMiniProgramRelIcon,g as resolveChannelMiniProgramRelName,j as resolveChannelMiniProgramRelOpenSurface,i as resolveChannelMiniProgramRelUrl,k as resolveChannelPinnedGameCopy,o as resolveConversationListPresentation,M as resolveMediaPresentation,R as resolveMediaTransferPresentation,v as resolveMessageSearchPreview,c as resolveMiniProgramFloatLinkUrl,y as resolveMiniProgramGamePreviewLayout,b as resolveMiniProgramOpenUrl,I as resolveQuotedMessagePresentation,m as resolveVisibleChannelMiniProgramRels,l as sortChannelMiniProgramFloatingItems,T as spikeCountForDuration}from'./chunk-YJV5ZN3V.js';export{j as DEFAULT_EMOJI_ASSET_BASE,i as EMOJI_CATALOG,c as EMOJI_GAME_DICE_STABLE_KEY,b as EMOJI_GAME_RPS_STABLE_KEY,m as EMOJI_TOKEN_RE,P as MAX_BATCH_FILES,a as MAX_RECENT_EMOJI_COUNT,g as UNICODE_EMOJI_CATALOG,O as blockReasonForChannelSession,N as blockReasonForChannelState,V as blockReasonForGroupState,Y as blockReasonForSession,I as canEditMessage,w as canPinChannelMessage,v as canPinGroupMessage,x as canPinMessage,H as canRecallMessage,fa as cancelMediaUpload,T as classifyGifFile,S as classifyMediaFile,s as countUnreadConversations,u as createChatRuntime,p as createEmojiMatcher,K as decideConversationAction,M as decideMemberTargetAction,L as decideMessageAction,l as emojiAssetUrl,n as emojiUrlByCode,Fa as fetchConversationFileBatch,Ga as fetchConversationImageBatch,Da as fetchConversationMessageBatch,Ha as fetchConversationVideoBatch,Ia as fetchConversationVoiceBatch,Ja as fetchNextConversationSearchBatch,r as formatConversationUnreadBadge,ia as forwardService,o as hasEmojiCandidate,U as isGifFile,y as isPinnedMessageProtected,aa as isVoiceStorageConfigured,Q as mediaBatchBudgetBytes,na as messageService,e as parseUnicodeEmojiCode,sa as pinnedMessageService,d as prependRecentEmoji,Ca as profileService,$ as replaceInterruptedMediaFile,W as requiresConversationEncryption,D as resolveChannelMemberAvatarUrl,C as resolveChannelMemberDisplayName,k as resolveEmojiToken,G as resolveFriendDisplayName,ta as resolveImProfileAccessDestination,A as resolveMemberDisplayName,t as resolveMessageNotificationDecision,F as resolvePublicNickname,E as resolveSenderAvatarUrl,q as resolveStandaloneEmojiMessage,h as resolveUnicodeEmoji,ga as retryMessage,R as runMediaSendBatch,ea as sendAsFilesBatch,J as sendBlockReasonForDecision,ca as sendMediaAlbum,_ as sendMediaFile,da as sendMediaFilesBatch,Z as sendText,ba as sendVoice,X as supportsConversationMention,f as unicodeEmojiTextFromCode}from'./chunk-JXCG3DYB.js';export{C as createNewMessageBadgeController,i as createThreadItems,f as formatChatDateSeparator,e as formatConversationDisplayTime,c as getLocalDayKey,l as isMessageLocateScrollProtected,v as isMessageTailChangeFromOlderWindowTrim,k as isMessageViewportMeasurable,B as isMessageVisibleForNewMessageBadge,x as loadOlderUntilBoundary,p as refreshPrependMessageAnchorPosition,j as resolveCenteredMessageScrollTop,a as resolveDisplayTimestamp,g as resolveImThreadActiveDate,h as resolveMessageBodyKind,b as resolveMessageTimelineTimestamp,n as resolvePrependMessageAnchor,q as resolvePrependMessageAnchorAdjustment,o as resolvePrependMessageAnchorPosition,s as resolveSurvivingMessageAnchorAdjustment,r as resolveVisibleMessageAnchorPositions,t as shouldCompleteInitialViewport,y as shouldFillInitialHistoryViewport,u as shouldFollowIncomingMessage,z as shouldLoadNewerHistoryPage,m as shouldPrefetchOlderHistory,w as shouldRestoreMessageViewportFocus,d as shouldShowChatDateSeparator,A as shouldTrackRemoteMessageForBadge}from'./chunk-HJYSLPY4.js';import'./chunk-2R4KVYRU.js';import'./chunk-OUXI5ZYL.js';import'./chunk-KV7I2SAC.js';export{Ra as canTransmit,Pa as canTransmitByType,Qa as canTransmitContent,Oa as requiresForwardTypeConfirmation}from'./chunk-Q6TFPZMF.js';import'./chunk-WOT6VMZA.js';
|