k2-im 0.1.24 → 0.1.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +1 -1
- package/dist/chat-kit-pinia.d.ts +3 -3
- package/dist/chat-kit-pinia.js +1 -1
- package/dist/chat-kit-vue.d.ts +2 -2
- package/dist/chat-kit-vue.js +1 -1
- package/dist/chat-kit.d.ts +6 -7
- package/dist/chat-kit.js +1 -1
- package/dist/{chunk-HNSTHP6F.js → chunk-F5GJAS6A.js} +1 -1
- package/dist/chunk-GMVR64GN.js +7 -0
- package/dist/chunk-LX7YEO5G.js +2 -0
- package/dist/chunk-SVJGRV4M.js +2 -0
- package/dist/chunk-UNGWXAYA.js +1 -0
- package/dist/{chunk-FUEAUHMC.js → chunk-V7ULSSTZ.js} +1 -1
- package/dist/chunk-VMKTMZ3K.js +1 -0
- package/dist/i18n.d.ts +2 -2
- package/dist/i18n.js +1 -1
- package/dist/index.d.ts +10 -11
- package/dist/index.js +1 -1
- package/dist/sdk.d.ts +7 -7
- package/dist/sdk.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-EM4YNWX4.js +0 -2
- package/dist/chunk-HQ7FTY2C.js +0 -1
- package/dist/chunk-MO2EU56Q.js +0 -7
- package/dist/chunk-W5SQGPRQ.js +0 -2
- package/dist/chunk-YQSRQ25X.js +0 -1
package/dist/chat-kit-vue.d.ts
CHANGED
|
@@ -572,12 +572,12 @@ interface ImMessage {
|
|
|
572
572
|
body: ImMessageBody;
|
|
573
573
|
/** P0 统一毫秒 number(本地创建时间,乐观渲染用)。 */
|
|
574
574
|
createdAt: number;
|
|
575
|
-
/**
|
|
575
|
+
/** SDK 内部排序键;有效服务端时间优先,ACK 后可以更新。宿主不解析它,消息身份始终使用 id。 */
|
|
576
576
|
sortKey: string;
|
|
577
577
|
status: MessageSendStatus;
|
|
578
578
|
/** 失败原因(status==='failed' 时)。 */
|
|
579
579
|
failure?: ImMessageFailure;
|
|
580
|
-
/**
|
|
580
|
+
/** 服务端回传的 epoch 毫秒时间;有效时用于正式排序与展示,createdAt 仍保留创建记录。 */
|
|
581
581
|
serverTime?: number;
|
|
582
582
|
/** P0 默认 'unread'。 */
|
|
583
583
|
receipt: MessageReceipt;
|
package/dist/chat-kit-vue.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {h,C,p,i,q,m,z,B,o,j,g}from'./chunk-YQSRQ25X.js';import {f,h as h$2,i as i$1,g as g$1}from'./chunk-HQ7FTY2C.js';import'./chunk-EM4YNWX4.js';import'./chunk-MO2EU56Q.js';import'./chunk-W5SQGPRQ.js';import'./chunk-WOT6VMZA.js';import {defineComponent,h as h$1,ref,provide,watch,nextTick,onMounted,onBeforeUnmount,computed,inject,isVNode,cloneVNode,Fragment,reactive}from'vue';function Ut(t){let a=0,v=0;for(let f of t)f.kind==="video"?v+=1:a+=1;return {imageCount:a,videoCount:v}}function qt(t){return {systemMessage:a=>a.body.system!==void 0?g$1(a.body.system,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):"",mediaPlaceholder:a=>i$1(a.contentType,{locale:t.locale(),durationMs:a.body.voice?.durationMs,stickerImageType:a.body.sticker?.imageType,gameType:a.body.game?.gameType,callKind:a.body.call?.callKind,...a.body.mediaAlbum===void 0?{}:{mediaAlbum:Ut(a.body.mediaAlbum.items)}}),lastMessage:a=>a.lastMessageSummary!==void 0?h$2(a.lastMessageSummary,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):a.lastMessagePreview,failureText:a=>a.failure?.displayCode!==void 0?f(a.failure.displayCode,{locale:t.locale(),mediaKind:a.failure.mediaKind,params:a.failure.params}):a.failure?.message??""}}var St=Symbol("ImThreadReadActions");function Pt(t){provide(St,t);}function zt(){return inject(St,void 0)}var qe=defineComponent({name:"ImThreadBodySwitch",inheritAttrs:false,props:{message:{type:Object,required:true},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup(t,{attrs:a,slots:v}){return Pt(t.readActions),()=>{let f=h(t.message),m=t.rendererRegistry.resolve(f);return m!==void 0?h$1(m,{...a,message:t.message,presentation:t.presentation}):v["unsupported-body"]!==void 0?v["unsupported-body"]({kind:f,message:t.message}):h$1("span",{"data-im-thread-unsupported-body":f,"aria-hidden":"true"})}}});var Ge=Symbol("ImThreadViewportRegistration");function At(){return inject(Ge,void 0)}var We=defineComponent({name:"ImThreadItems",props:{items:{type:Array,required:true},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup(t,{slots:a}){let v=At();function f(o,d){let I=Array.isArray(d)?d:[d];return I.length===1&&isVNode(I[0])?cloneVNode(I[0],{key:o}):h$1(Fragment,{key:o},I)}function m(o){return d=>{v?.registerMessageNode(o,d instanceof HTMLElement?d:null);}}function k(o,d){return I=>{v?.registerDateNode(o,d,I instanceof HTMLElement?I:null);}}function M(o){return a.encryption?.({item:o})??h$1("div",{"data-im-thread-encryption":o.key})}function p(o){let d=k(o.key,o.label);return a["date-separator"]?.({item:o,setElement:d})??h$1("div",{ref:d,"data-im-thread-date-separator":o.key},o.label)}function w(o){return a["entry-unread"]?.({item:o})??h$1("div",{"data-im-thread-entry-unread":o.key,...o.count===void 0?{}:{"data-count":String(o.count)}})}function R(o){let d=m(o.message.id);return a.item!==void 0?a.item({item:o,setElement:d}):a.message!==void 0?a.message({item:o,setElement:d}):o.message.deletedForEveryone!==void 0?a["deleted-message"]?.({item:o,setElement:d})??h$1("article",{ref:d,"data-im-thread-message-id":o.message.id,"data-im-thread-message-terminal":"deleted-for-everyone"},[h$1("span",{"data-im-thread-anchor-point":""})]):o.message.recalled!==void 0?a["recalled-message"]?.({item:o,setElement:d})??h$1("article",{ref:d,"data-im-thread-message-id":o.message.id,"data-im-thread-message-terminal":"recalled"},[h$1("span",{"data-im-thread-anchor-point":""})]):o.kind==="system"&&a.system!==void 0?a.system({item:o,setElement:d}):h$1("article",{ref:d,"data-im-thread-message-id":o.message.id,"data-first-of-run":o.kind==="message"?String(o.firstOfRun):void 0},[h$1("span",{"data-im-thread-anchor-point":""}),h$1(qe,{message:o.message,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{"unsupported-body":a["unsupported-body"]===void 0?void 0:I=>a["unsupported-body"]?.(I)})])}return ()=>h$1("div",{"data-im-thread-items":""},t.items.map(o=>{switch(o.kind){case "encryption":return a.item!==void 0?f(o.key,a.item({item:o})):f(o.key,M(o));case "date-separator":return a.item!==void 0?f(o.key,a.item({item:o,setElement:k(o.key,o.label)})):f(o.key,p(o));case "entry-unread":return a.item!==void 0?f(o.key,a.item({item:o})):f(o.key,w(o));case "system":case "message":return f(o.key,R(o))}return o}))}});var Vt=120,ir=500,le=.5,ar=8,ze=defineComponent({name:"ImThreadViewport",props:{messageIds:{type:Array,required:true},contentKey:{type:String,default:""},loadingOlder:{type:Boolean,default:false},hasNewer:{type:Boolean,default:false},loadingNewer:{type:Boolean,default:false},followThreshold:{type:Number,default:120},olderPrefetchThreshold:{type:Number,default:120},followNewMessages:{type:Boolean,default:true},shouldFollowAppendedMessage:{type:Function,default:void 0},visibleMargin:{type:Number,default:8},resizeFollowEnabled:{type:Boolean,default:true},activeDateOffset:{type:Number,default:16},activeDateEnabled:{type:Boolean,default:false}},emits:{"reach-start":()=>true,"reach-end":()=>true,"visible-range":t=>true,settled:t=>true,"new-message-count":t=>true,"user-scroll":()=>true,"active-date-change":t=>true},setup(t,{emit:a,expose:v,slots:f}){let m$1=ref(null),k=ref(null),M=new Map,p$1=new Map,w=new Set,R=new Map,o$1=0,d=[],I,H,O,N,X=false,x,U=new Set,Y=false,L,G="",s=1,F=false,J=false,_=true,D=false,Q=false,j$1=false,$=0,Z=-1,ie=-1,u,S,h,c,P,B$1=ref(true),q$1=ref(0),W=C(e=>{q$1.value=e,a("new-message-count",e);});function ye(e){let n=Number.isFinite(t.followThreshold)?Math.max(0,t.followThreshold):0;return e.scrollHeight-e.clientHeight-e.scrollTop<=n}function fe(e=t.messageIds){return e.flatMap(n=>{let i=M.get(n);if(i===void 0)return [];let T=i.getBoundingClientRect(),y=i.querySelector("[data-im-thread-anchor-point]");return [{id:n,top:T.top,bottom:T.bottom,anchorTop:y?.getBoundingClientRect().top??T.top}]})}function Se(e="",n=1){let i=Math.min(1,Math.max(0,n));G!==""&&G!==e&&R.get(G)?.element.style.removeProperty("opacity"),G=e,s=i,e!==""&&R.get(e)?.element.style.setProperty("opacity",String(i));}function ae(){Se();}function Pe(){let e=m$1.value;if(Y||e===null||!t.activeDateEnabled)return;let n=[...R.entries()].filter(([,A])=>e.contains(A.element)).map(([A,C])=>{let z=C.element.getBoundingClientRect();return {key:A,label:C.label,top:z.top,height:z.height}}).sort((A,C)=>A.top-C.top),i=e.getBoundingClientRect(),T=n.find(A=>A.height>0)?.height??28,y=g({markers:n,viewportTop:i.top,overlayTop:Number.isFinite(t.activeDateOffset)?Math.max(0,t.activeDateOffset):0,overlayHeight:T});if(y===null){ae(),a("active-date-change",null);return}Se(y.inlineDateKey,y.inlineOpacity),a("active-date-change",y);}function Ve(e){H={scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,width:e.clientWidth,height:e.clientHeight};}function Ee(e){let n=H;if(n===void 0)return false;let i=Math.max(0,e.scrollHeight-e.clientHeight);return i<n.scrollHeight-n.height&&n.scrollTop>i&&Math.abs(e.scrollTop-i)<=le}function Ae(e){return Ee(e)||L!==void 0&&(L.behavior==="smooth"||Math.abs(e.scrollTop-L.targetTop)<=le)?0:e.scrollTop-o$1}function me(e,n){n!==0&&(o$1=e.scrollTop-n,L=void 0,g$1());}function je(e,n){let i=Ae(e);if(c!==void 0)return c.expectedOffset-=i,se(),me(e,i),D||oe(),false;let T=H;if(T===void 0)return false;let y=I,A=y===void 0?void 0:fe([y.id])[0],C=e.scrollTop-T.scrollTop,z=Ee(e)?0:C,we=y===void 0||A===void 0?0:(A.anchorTop??A.top)-n.top-y.offset+C;return T.scrollHeight!==e.scrollHeight||T.width!==e.clientWidth||T.height!==e.clientHeight||Math.abs(we)>le?(H=void 0,!F&&!t.loadingNewer&&t.resizeFollowEnabled&&B$1.value&&Math.abs(z)<=le?(Ke(),true):(y!==void 0&&ke({...y,offset:y.offset-z}),me(e,i),false)):false}function ee(){let e=m$1.value;if(Y||e===null)return;let n=e.getBoundingClientRect();if(je(e,n))return;let i=N!==void 0&&X?t.messageIds.filter(C=>w.has(C)):t.messageIds,T=fe(i);if(N!==void 0&&X&&T.length===0){B$1.value=ye(e);return}let y=T.filter(C=>B({viewportTop:n.top,viewportBottom:n.bottom,messageTop:C.top,messageBottom:C.bottom,margin:t.visibleMargin})).map(C=>C.id),A=y.length!==d.length||y.some((C,z)=>d[z]!==C);d=Object.freeze(y),I=o(T,{top:n.top,bottom:n.bottom}),Ve(e),W.acknowledgeVisible(y),B$1.value=ye(e),A&&a("visible-range",d),a("settled",{visibleMessageIds:d,...d.length===0?{}:{newestVisibleMessageId:d[d.length-1]},isAtBottom:B$1.value,newMessageCount:q$1.value});}function ge(e){if(U.add(e),x!==void 0)return;let n=()=>{x=void 0;let i=[...U];U.clear(),i.forEach(T=>T());};typeof globalThis.requestAnimationFrame=="function"?x=globalThis.requestAnimationFrame(n):x=globalThis.setTimeout(n,0);}function Oe(){x!==void 0&&(typeof x=="number"&&typeof globalThis.cancelAnimationFrame=="function"?globalThis.cancelAnimationFrame(x):globalThis.clearTimeout(x),x=void 0,U.clear());}function re(){ge(ee);}function be(){let e=m$1.value;if(e===null)return;let n=e.getBoundingClientRect(),i=o(fe(),{top:n.top,bottom:n.bottom});i!==void 0&&(I=i,Ve(e));}function ve(){return _&&c===void 0&&!J&&!t.loadingOlder}function Ce(){be(),_=false,Z=$,J=true,a("reach-start"),ge(()=>{t.loadingOlder||(J=false);});}function xe(e){return t.hasNewer&&!F&&!t.loadingOlder&&!t.loadingNewer&&ye(e)}function r(){F=true,B$1.value=false,ie=$,a("reach-end"),ge(()=>{t.loadingNewer||(F=false);});}function l(){let e=m$1.value;e===null||$===ie||!xe(e)||r();}function g$1(){let e=m$1.value;if(Y||e===null)return;let n=e.scrollTop,i=Ee(e),T=L,y=false;if(T!==void 0){let C=Math.abs(n-T.targetTop)<=le;y=T.behavior==="smooth"||C,(T.behavior!=="smooth"||C)&&(L=void 0);}!y&&!i&&!D&&c===void 0&&n!==o$1&&(D=true,Q=true,$+=1);let A=D&&!y&&!i&&n!==o$1;if(A&&(a("user-scroll"),ge(Pe)),D&&!j$1&&Te(),!_&&Q&&$!==Z&&n<o$1&&n>Ze()&&(_=true),c!==void 0&&!y)if(D){let C=K();C!==void 0&&(c.expectedOffset=C);}else se(),oe();ve()&&A&&n>=0&&m({previousScrollTop:o$1,currentScrollTop:n,topThreshold:t.olderPrefetchThreshold})&&Ce(),A&&xe(e)&&z({previousScrollTop:o$1,currentScrollTop:n,isAtBottom:ye(e),isHistoryWindow:t.hasNewer,isPageSettling:y})&&r(),o$1=n,re();}function b(e,n="auto"){L={targetTop:e,behavior:n};}function V(e){let n=c,i=k.value;if(!(n===void 0||i===null)){if(n.visualOffset=Math.abs(e)<=le?0:e,n.visualOffset===0){i.style.removeProperty("transform"),i.style.removeProperty("will-change");return}i.style.setProperty("transform",`translate3d(0, ${n.visualOffset}px, 0)`),i.style.setProperty("will-change","transform");}}function E(){P!==void 0&&(clearTimeout(P),P=void 0),c!==void 0&&c.visualOffset!==0&&(I=void 0,H=void 0);let e=k.value;e?.style.removeProperty("transform"),e?.style.removeProperty("will-change"),c=void 0,L=void 0;}function K(){let e=m$1.value,n=c;if(e===null||n===void 0)return;let i=fe().find(T=>T.id===n.anchor.id);if(i!==void 0)return (i.anchorTop??i.top)-e.getBoundingClientRect().top}function se(){let e=c,n=K();if(e===void 0||n===void 0)return;let i=e.expectedOffset-n;Math.abs(i)<=le||(V(e.visualOffset+i),e.committed=false,e.attempts=0);}function ne(){P!==void 0&&clearTimeout(P),P=setTimeout(()=>{P=void 0,!(D||c?.committed!==true)&&E();},ir);}function he(){let e=m$1.value,n=c;if(Y||e===null||n===void 0||D)return;let i=n.visualOffset;if(Math.abs(i)<=le){n.committed=true,ne();return}let T=Math.max(0,e.scrollHeight-e.clientHeight),y=Math.min(T,Math.max(0,e.scrollTop-i));if(b(y),e.scrollTop=y,Math.abs(e.scrollTop-y)>le){L=void 0,n.committed=false,n.attempts+=1,n.attempts<ar?oe():(E(),L=void 0,o$1=e.scrollTop);return}V(0),o$1=e.scrollTop,n.expectedOffset=K()??n.expectedOffset,n.committed=true,n.attempts=0,ne();}function oe(){P!==void 0&&clearTimeout(P),P=setTimeout(()=>{P=void 0,he();},Vt);}function Ie(e){e!==void 0&&(c===void 0&&(c={anchor:e,expectedOffset:e.offset,visualOffset:0,committed:false,attempts:0}),se(),!D&&he());}function ke(e){let n=m$1.value;if(n===null||e===void 0)return;let i=n.getBoundingClientRect(),T=q(e,fe(),{top:i.top,bottom:i.bottom});if(T!==void 0){let y=Math.max(0,n.scrollHeight-n.clientHeight),A=Math.min(y,Math.max(0,n.scrollTop+T));b(A),n.scrollTop=A,o$1=n.scrollTop,H=void 0;}}function Ze(){return Number.isFinite(t.olderPrefetchThreshold)?Math.max(0,t.olderPrefetchThreshold):0}function De(){L?.behavior==="smooth"&&(L=void 0),Q=false,D||(D=true,$+=1),u!==void 0&&(clearTimeout(u),u=void 0);}function Ne(){let e=m$1.value;e===null||$===Z||(c!==void 0&&E(),_=true,e.scrollTop<=Ze()&&ve()&&Ce());}function et(){I=void 0,H=void 0,u!==void 0&&(clearTimeout(u),u=void 0),E(),D=false,Q=false,j$1=false,S=void 0,h=void 0,$+=1,Z=-1,ie=-1,_=true,J=false,F=false,L=void 0;}function tt(){j$1||(u!==void 0&&(clearTimeout(u),u=void 0),D=false,Q=false,c!==void 0&&(c.attempts=0),he());}function Te(){j$1||(u!==void 0&&clearTimeout(u),u=setTimeout(()=>{u=void 0,tt();},Vt));}function rt(){L=void 0,tt();}function nt(e){j$1=true,De(),S=e.touches?.[0]?.clientY;}function ot(e){let n=e.touches?.[0]?.clientY;n!==void 0&&(S!==void 0&&n>S?Ne():S!==void 0&&n<S&&l(),S=n);}function Le(){j$1=false,S=void 0,Te();}function it(e){De(),e.deltaY<0?Ne():e.deltaY>0&&l(),Te();}function at(e){e.pointerType!=="touch"&&(De(),h=e.clientY,Te());}function st(e){e.pointerType==="touch"||!D||h===void 0||(e.clientY<h?Ne():e.clientY>h&&l(),h=e.clientY,Te());}function He(e){e.pointerType!=="touch"&&(h=void 0,Te());}function lt(e){["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(e.key)&&(De(),e.key==="ArrowUp"||e.key==="PageUp"||e.key==="Home"||e.key===" "&&e.shiftKey?Ne():l(),Te());}function Ke(e="auto"){let n=m$1.value;if(n===null)return;H=void 0,E();let i=Math.max(0,n.scrollHeight-n.clientHeight);b(i,e),n.scrollTo?.({top:i,behavior:e}),n.scrollTop!==i&&(n.scrollTop=i),o$1=n.scrollTop,W.clear(),ee();}function dt(){let e=m$1.value;return e!==null&&e.clientWidth>0&&e.clientHeight>0}function Dt(){let e=m$1.value;return dt()&&e!==null&&e.scrollHeight>e.clientHeight+1}function Nt(e,n={}){let i=m$1.value,T=M.get(e);if(i===null||T===void 0||!i.contains(T)||i.clientHeight<=0)return false;E();let y=i.getBoundingClientRect(),A=T.getBoundingClientRect(),C=n.block??"center",z;C==="start"?z=i.scrollTop+A.top-y.top:C==="end"?z=i.scrollTop+A.bottom-y.bottom:C==="nearest"?A.top>=y.top&&A.bottom<=y.bottom?z=i.scrollTop:A.top<y.top?z=i.scrollTop+A.top-y.top:z=i.scrollTop+A.bottom-y.bottom:z=j({currentScrollTop:i.scrollTop,scrollHeight:i.scrollHeight,targetHeight:A.height,targetTop:A.top,viewportHeight:i.clientHeight,viewportTop:y.top});let we=Math.max(0,i.scrollHeight-i.clientHeight),pe=Math.min(we,Math.max(0,z));H=void 0;let Me=n.behavior??"auto";return b(pe,Me),i.scrollTo?.({top:pe,behavior:Me}),i.scrollTop!==pe&&(i.scrollTop=pe),o$1=i.scrollTop,ee(),true}function Lt(){W.clear();}function Ht(){F=true,B$1.value=false;}function Bt(){F=false,re();}function Ft(e,n){let i=M.get(e);if(i!==void 0&&i!==n&&(N?.unobserve(i),O?.unobserve?.(i),p$1.delete(i),w.delete(e)),n===null){M.delete(e),w.delete(e);return}M.set(e,n),p$1.set(n,e),N?.observe(n),O?.observe(n),re();}function _t(e,n,i){let T=R.get(e);if(i===null){R.delete(e);return}R.set(e,{element:i,label:n}),G===e&&i.style.setProperty("opacity",String(s)),T?.element!==i&&(i.dataset.imThreadDateSeparator=e);}return provide(Ge,{registerMessageNode:Ft,registerDateNode:_t}),watch(()=>t.contentKey,(e,n)=>{if(e===n)return;et();let i=m$1.value;i!==null&&(o$1=i.scrollTop);},{flush:"sync"}),watch(()=>t.messageIds,async(e,n)=>{let i=m$1.value;if(i===null)return;let T=new Set(n);n.length>0&&e.length>0&&!e.some(Be=>T.has(Be))&&et();let A=i.getBoundingClientRect(),C=p(I,fe(),{top:A.top,bottom:A.bottom}),z=B$1.value,we=n[n.length-1],pe=we===void 0?-1:e.indexOf(we),Me=pe<0?[]:e.slice(pe+1).filter(Be=>!T.has(Be)),jt=F||t.loadingNewer;if(await nextTick(),Y)return;let ut=n[0];if(ut!==void 0&&e.indexOf(ut)>0&&(J=false,Ie(C)),Me.length>0){if(jt){F=false,c===void 0&&ke(C),B$1.value=false,re();return}(z||Me.some(Kt=>t.shouldFollowAppendedMessage?.(Kt)===true))&&t.followNewMessages?Ke():W.add(Me);}re();},{flush:"pre"}),watch(()=>t.loadingNewer,(e,n)=>{e||!n||!F||ge(()=>{t.loadingNewer||(F=false);});},{flush:"pre"}),watch(()=>t.loadingOlder,(e,n)=>{e||!n||!J||ge(()=>{t.loadingOlder||(J=false);});},{flush:"pre"}),onMounted(()=>{let e=m$1.value;if(e!==null){if(o$1=e.scrollTop,e.addEventListener("scroll",g$1,{passive:true}),e.addEventListener("scrollend",rt,{passive:true}),e.addEventListener("touchstart",nt,{passive:true}),e.addEventListener("touchmove",ot,{passive:true}),e.addEventListener("touchend",Le,{passive:true}),e.addEventListener("touchcancel",Le,{passive:true}),e.addEventListener("wheel",it,{passive:true}),e.addEventListener("pointerdown",at,{passive:true}),e.addEventListener("pointermove",st,{passive:true}),e.addEventListener("pointerup",He,{passive:true}),e.addEventListener("pointercancel",He,{passive:true}),e.addEventListener("keydown",lt),typeof globalThis.ResizeObserver=="function"){O=new globalThis.ResizeObserver(()=>{Y||m$1.value===null||ee();}),O.observe(e),k.value!==null&&O.observe(k.value);for(let n of M.values())O.observe(n);}if(typeof globalThis.IntersectionObserver=="function"){N=new globalThis.IntersectionObserver(n=>{for(let i of n){let T=p$1.get(i.target);T!==void 0&&(i.isIntersecting?w.add(T):w.delete(T));}X=true,re();},{root:e,rootMargin:`${Number.isFinite(t.visibleMargin)?Math.max(0,t.visibleMargin):0}px 0px`});for(let n of M.values())N.observe(n);}re();}}),onBeforeUnmount(()=>{Y=true;let e=m$1.value;e!==null&&e.removeEventListener("scroll",g$1),e!==null&&(e.removeEventListener("scrollend",rt),e.removeEventListener("touchstart",nt),e.removeEventListener("touchmove",ot),e.removeEventListener("touchend",Le),e.removeEventListener("touchcancel",Le),e.removeEventListener("wheel",it),e.removeEventListener("pointerdown",at),e.removeEventListener("pointermove",st),e.removeEventListener("pointerup",He),e.removeEventListener("pointercancel",He),e.removeEventListener("keydown",lt)),u!==void 0&&clearTimeout(u),E(),Oe(),O?.disconnect(),N?.disconnect(),ae(),M.clear(),p$1.clear(),w.clear(),R.clear(),W.clear();}),v({getViewportElement:()=>m$1.value,clearNewMessageBadge:Lt,clearActiveDate:ae,isAtBottom:computed(()=>B$1.value),isMeasurable:dt,isScrollable:Dt,newMessageCount:computed(()=>q$1.value),prepareHistoryPageAppend:Ht,cancelHistoryPageAppend:Bt,trackRemoteMessageIds:(e,n)=>W.trackRemote(e,n),scrollToLatest:Ke,scrollToMessage:Nt,focusViewport:()=>m$1.value?.focus({preventScroll:true})}),()=>h$1("div",{ref:m$1,"data-im-thread-viewport":"",role:"log",tabindex:-1},[h$1("div",{ref:k,"data-im-thread-viewport-content":""},f.default?.())])}});var Ct=Symbol("ImThreadSurfaceContext");function dr(t){if(typeof t.getState!="function")throw new TypeError("ImThreadSurfaceContext.getState \u5FC5\u987B\u662F\u51FD\u6570");if(typeof t.actions?.loadOlder!="function")throw new TypeError("ImThreadSurfaceContext.actions.loadOlder \u5FC5\u987B\u662F\u51FD\u6570");if(typeof t.formatDate!="function")throw new TypeError("ImThreadSurfaceContext.formatDate \u5FC5\u987B\u662F\u51FD\u6570");return Object.freeze({...t,actions:Object.freeze({...t.actions})})}function ur(t){provide(Ct,t);}function Ye(){let t=inject(Ct);if(t===void 0)throw new Error("ImThreadSurface \u9700\u8981\u663E\u5F0F context prop \u6216 provideImThreadSurfaceContext");return t}var Xe=Object.freeze({followThreshold:120,olderPrefetchThreshold:120,visibleReadDelay:300,visibleMargin:8,activeDateOffset:16,activeDateIdleDelay:1500}),Je=Object.freeze({enabled:true,maxFillPages:8}),mr=8,gr=160;function pr(t,a){return t?.conversationType===a.conversationType&&t.conversationId===a.conversationId}var vr=defineComponent({name:"ImThreadSurface",props:{conversation:{type:Object,required:true},context:{type:Object,default:void 0},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0},viewportOptions:{type:Object,default:()=>({})},initialViewportOptions:{type:Object,default:()=>({})},hooks:{type:Object,default:void 0}},setup(t,{expose:a,slots:v}){let f=t.context??Ye(),m=ref(null),k=ref(0),M=ref(true),p=[],w,R=0,o=0,d=null,I="",H="",O="",N=false,X=false,x=ref(false),U=ref(""),Y=ref(false),L,G,s=computed(()=>f.getState()),F=computed(()=>s.value.pageVisible??f.isPageVisible?.()??true),J=computed(()=>s.value.pageEngaged??f.isPageEngaged?.()??true),_=computed(()=>pr(s.value.activeConversation,t.conversation)),D=computed(()=>({...Xe,...t.viewportOptions})),Q=computed(()=>{let r=t.initialViewportOptions.maxFillPages??Je.maxFillPages;return {enabled:t.initialViewportOptions.enabled??Je.enabled,maxFillPages:Number.isFinite(r)?Math.max(0,Math.floor(r)):Je.maxFillPages}}),j=computed(()=>!_.value||!s.value.ready?"":`${t.conversation.conversationType}\0${t.conversation.conversationId}`),$=computed(()=>_.value?i({messages:s.value.messages,entryUnread:s.value.entryUnread,formatDate:f.formatDate,leadingItems:f.leadingItems?.(),beforeMessageItems:f.beforeMessageItems}):[]),Z=computed(()=>$.value.flatMap(r=>r.kind==="message"||r.kind==="system"?[r.message.id]:[]));function ie(){L!==void 0&&(clearTimeout(L),L=void 0),G!==void 0&&(clearTimeout(G),G=void 0);}function u(r=false){if(ie(),Y.value=false,r){m.value?.clearActiveDate(),U.value="";return}G=setTimeout(()=>{G=void 0,!Y.value&&(m.value?.clearActiveDate(),U.value="");},gr);}function S(r){if(r===null){u();return}ie(),U.value=r.label,Y.value=true;let l=D.value.activeDateIdleDelay,g=Number.isFinite(l)?Math.max(0,l):Xe.activeDateIdleDelay;L=setTimeout(()=>{L=void 0,u();},g);}async function h(r,l){t.hooks?.beforeAction?.(r);try{let g=await l();return t.hooks?.afterAction?.(r,g),g}catch(g){throw t.hooks?.onError?.(r,g),g}}function c(r="automatic"){return !_.value||s.value.loading||!s.value.hasOlder?Promise.resolve(0):h({kind:"load-older",source:r},()=>f.actions.loadOlder())}function P(){let r=f.actions.loadNewer,l=s.value.loadingNewer??s.value.loading;return !_.value||l||!s.value.hasNewer||r===void 0?Promise.resolve(0):h({kind:"load-newer"},()=>r())}async function B(r){for(let l=0;l<mr;l+=1){if(!_.value)return;let g=r==="older"?s.value.hasOlder:s.value.hasNewer,b=r==="older"?s.value.olderError:s.value.newerError;if(!g||b!==null||(r==="older"?await c("user-scroll"):await P())>0)return;let E=r==="older"?s.value.hasOlder:s.value.hasNewer,K=r==="older"?s.value.olderError:s.value.newerError;if(!E||K!==null)return}}async function q(){return !_.value||f.actions.loadNewer===void 0?0:h({kind:"load-newer"},()=>f.actions.retryNewer?.()??f.actions.loadNewer?.({force:!0})??Promise.resolve(0))}async function W(){if(!_.value)return 0;let r=j.value,l=++R;d=null,O="";let g;try{g=await h({kind:"retry-older"},()=>f.actions.retryOlder?.()??f.actions.loadOlder({force:!0}));}catch(b){throw ee(r,l)&&(O=r),b}return ee(r,l)&&!x.value&&(d=null,be()),g}async function ye(){if(!_.value)return false;let r=await h({kind:"jump-to-latest"},()=>f.actions.jumpToLatest?.()??Promise.resolve(!s.value.isHistoryWindow));return r&&(await nextTick(),m.value?.scrollToLatest()),r}function fe(r){M.value=r.isAtBottom,k.value=r.newMessageCount,be();}function Se(r,l){return m.value?.scrollToMessage(r,l)??false}function ae(r,l){return !X&&o===l&&j.value===r&&_.value}async function Pe(r,l,g,b){for(let V=0;V<60;V+=1){if(!ae(r,l))return false;if(Se(g,b))return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(E=>window.requestAnimationFrame(()=>E()));}return false}async function Ve(r,l,g){let b=m.value;if(b===null||!b.isMeasurable()||b.isScrollable())return true;let V=0,E=!s.value.hasOlder,K=!s.value.hasNewer||f.actions.loadNewer===void 0,se=async()=>(await nextTick(),await nextTick(),Pe(r,l,g,{behavior:"auto",block:"center"})),ne=async oe=>{if(!ae(r,l)||V>=Q.value.maxFillPages)return false;let Ie=0;if(oe==="older"){if(E||!s.value.hasOlder)return false;Ie=await c(),E=!s.value.hasOlder;}else {if(K||!s.value.hasNewer)return false;b.prepareHistoryPageAppend();try{Ie=await P();}catch(ke){throw b.cancelHistoryPageAppend(),ke}Ie<=0&&!s.value.hasNewer&&b.cancelHistoryPageAppend(),K=!s.value.hasNewer;}return V+=1,Ie>0?se():!(oe==="older"?E:K)};!E&&!await ne("older")&&(E=true),!K&&!await ne("newer")&&(K=true);let he="older";for(;ae(r,l)&&V<Q.value.maxFillPages&&b.isMeasurable()&&!b.isScrollable()&&(!E||!K);){let oe=he==="older"?E?"newer":"older":K?"older":"newer";he=oe==="older"?"newer":"older",await ne(oe)||(oe==="older"?E=true:K=true);}return ae(r,l)}async function Ee(r,l={behavior:"auto",block:"center"}){if(!_.value||r==="")return false;let g=j.value,b=++o;if(!Z.value.includes(r)){let K=f.actions.loadAround;if(K===void 0||!await h({kind:"locate-message",messageId:r},()=>K(r))||!ae(g,b))return false}return !await Pe(g,b,r,{...l,behavior:"auto"})||!await Ve(g,b,r)?false:Pe(g,b,r,l)}function Ae(){w!==void 0&&(clearTimeout(w),w=void 0);}function me(){if(Ae(),!x.value)return;let r=t.readActions;if(r===void 0||p.length===0)return;let l=Number.isFinite(D.value.visibleReadDelay)?Math.max(0,D.value.visibleReadDelay):Xe.visibleReadDelay;w=setTimeout(()=>{if(w=void 0,!_.value||!J.value)return;let g=p[p.length-1];if(g===void 0)return;let b=r.resolveTarget===void 0?g:r.resolveTarget(g);b!=null&&Promise.resolve(r.markRead(b)).catch(V=>{t.hooks?.onError?.({kind:"visible-range",messageIds:p},V);});},l);}function je(r){p=Object.freeze([...r]);let l={kind:"visible-range",messageIds:p};t.hooks?.beforeAction?.(l);try{f.actions.onVisibleRange?.(p),t.hooks?.afterAction?.(l,void 0);}catch(g){throw t.hooks?.onError?.(l,g),g}x.value?me():be();}function ee(r,l){return !X&&R===l&&j.value===r&&!N}function ge(r,l){ee(r,l)&&(I=r,H=Oe(s.value.entryUnread),x.value=true,me());}function Oe(r){return r.state!=="located"?r.state:`${r.state}:${r.firstMessageId}`}async function re(r,l,g){for(let b=0;b<60;b+=1){if(!ee(r,l))return false;if(m.value?.scrollToMessage(g,{behavior:"auto",block:"center"})===true)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(E=>window.requestAnimationFrame(()=>E()));}return false}function be(){let r=j.value,l=Oe(s.value.entryUnread);if(r===""||s.value.loading||s.value.error!==null&&s.value.messages.length===0||I===r&&(H===l||N)||O===r||d!==null)return;if(!Q.value.enabled){I=r,H=l,x.value=true,me();return}let g=++R;N=false,x.value=false;let b=(async()=>{if(await nextTick(),!ee(r,g))return;let V=m.value;if(V===null||!V.isMeasurable())return;let E=s.value.entryUnread;if(E.state==="located"&&!Z.value.includes(E.firstMessageId))return;let K=E.state==="located"?await re(r,g,E.firstMessageId):false;if(E.state==="located"&&!K)return;K||V.scrollToLatest();let se=0;for(;ee(r,g)&&se<Q.value.maxFillPages&&s.value.error===null&&s.value.hasOlder&&V.isMeasurable()&&!V.isScrollable();)if(await c(),!ee(r,g)||(se+=1,await nextTick(),await nextTick(),!V.isMeasurable()))return;if(!ee(r,g)||!V.isMeasurable())return;let ne=s.value.entryUnread;if(ne.state==="located"){if(!Z.value.includes(ne.firstMessageId)||!await re(r,g,ne.firstMessageId))return}else V.scrollToLatest();await nextTick(),ge(r,g);})().catch(()=>{ee(r,g)&&(O=r);}).finally(()=>{d===b&&(d=null);});d=b;}function ve(r,l=false){R+=1,d=null,N=false,x.value=r,(I="",H="",l||(O="")),Ae();}function Ce(){if(x.value)return;let r=j.value;N=true,R+=1,d=null,I=r,x.value=true,me();}let xe=Object.freeze({getViewportElement:()=>m.value?.getViewportElement()??null,loadOlder:c,retryOlder:W,loadNewer:P,retryNewer:q,jumpToLatest:ye,scrollToMessage:Se,locateMessage:Ee,focusViewport:()=>m.value?.focusViewport()});return a(xe),watch(J,r=>{r&&x.value?me():Ae();}),watch([()=>s.value.activeRemoteMessageRevision??0,m,j],()=>{let r=m.value;if(r===null||!_.value)return;let l=f.actions.drainActiveRemoteMessageIds?.()??[];r.trackRemoteMessageIds(l,{isAtBottom:M.value,isHistoryWindow:s.value.isHistoryWindow,isPageVisible:F.value})&&(M.value=false);},{flush:"post"}),watch([j,()=>s.value.loading,()=>s.value.error,()=>Z.value.length,()=>s.value.hasOlder,()=>Oe(s.value.entryUnread),Q],([r,l,g,,,b],[V,,,,,E])=>{if(r!==V&&(o+=1,ve(false),u(true),m.value?.clearNewMessageBadge(),k.value=0,M.value=true),r!==""&&r===V&&b!==E&&!N&&b.startsWith("located:")&&(I="",H="",x.value=false),r===""){ve(false);return}if(g!==null&&s.value.messages.length===0){x.value||ve(false,true);return}l||be();},{flush:"post",immediate:true}),onBeforeUnmount(()=>{X=true,o+=1,ve(false),u(true);}),()=>{let r={conversation:t.conversation,state:s.value,items:$.value,actions:xe},l=[v.header?.(r),v["before-list"]?.(r)];if(!_.value)l.push(v.unsupported?.(r)??h$1("div",{"data-im-thread-unsupported":""}));else if(!s.value.ready&&s.value.loading)l.push(v.loading?.(r)??h$1("div",{"data-im-thread-loading":""}));else if(s.value.error!==null&&s.value.messages.length===0)l.push(v.error?.(r)??h$1("div",{"data-im-thread-error":""}));else if(s.value.ready&&s.value.messages.length===0&&!s.value.hasOlder)l.push(v.empty?.(r)??h$1("div",{"data-im-thread-empty":""}));else {let g=h$1(ze,{ref:m,messageIds:Z.value,contentKey:`${t.conversation.conversationType}\0${t.conversation.conversationId}`,loadingOlder:s.value.loadingOlder??s.value.loading,hasNewer:s.value.hasNewer,loadingNewer:s.value.loadingNewer??s.value.loading,followThreshold:D.value.followThreshold,olderPrefetchThreshold:D.value.olderPrefetchThreshold,visibleMargin:D.value.visibleMargin,activeDateOffset:D.value.activeDateOffset,activeDateEnabled:v["active-date"]!==void 0,resizeFollowEnabled:x.value,followNewMessages:F.value,shouldFollowAppendedMessage:b=>{let V=s.value.messages.find(E=>E.id===b);return V===void 0?false:f.shouldFollowMessage?.(V)===true},onReachStart:()=>{B("older").catch(()=>{});},onReachEnd:()=>{B("newer").catch(()=>{});},onSettled:fe,onUserScroll:Ce,onActiveDateChange:S,onVisibleRange:je,onNewMessageCount:b=>{k.value=b;}},{default:()=>[v["viewport-before"]?.(r),h$1(We,{items:$.value,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{item:v.item,"date-separator":v["date-separator"],"entry-unread":v["entry-unread"],encryption:v.encryption,system:v.system,message:v.message,"recalled-message":v["recalled-message"],"deleted-message":v["deleted-message"],"unsupported-body":v["unsupported-body"]}),v["viewport-after"]?.(r)]});l.push(h$1("div",{"data-im-thread-viewport-shell":""},[v["active-date"]?.({label:U.value,visible:Y.value&&U.value!==""}),g])),s.value.error!==null&&l.push(v.error?.(r)??h$1("div",{"data-im-thread-error":""}));}return l.push(v["after-list"]?.(r),v["jump-to-latest"]?.({...r,count:k.value,visible:!M.value||s.value.isHistoryWindow}),v["context-menu"]?.(r),v.composer?.(r)),h$1("section",{"data-im-thread-surface":"","data-conversation-type":t.conversation.conversationType,"data-conversation-id":t.conversation.conversationId},l)}}});function hr(t){let a=new Map;for(let f of t){if(a.has(f.kind))throw new Error(`\u6D88\u606F renderer kind \u91CD\u590D\u6CE8\u518C\uFF1A${f.kind}`);a.set(f.kind,f.component);}let v=Object.freeze([...a.keys()]);return Object.freeze({kinds:v,resolve:f=>a.get(f)})}var yr=140,br=120;function kt(t,a){if(t.width<=0||t.height<=0)return 0;let v=Math.max(0,Math.min(t.right,a.right)-Math.max(t.left,a.left)),f=Math.max(0,Math.min(t.bottom,a.bottom)-Math.max(t.top,a.top));return Math.min(1,v*f/(t.width*t.height))}function Ir(t,a){return {x:t.x,y:t.top-a,top:t.top-a,bottom:t.bottom+a,left:t.left,right:t.right,width:t.width,height:t.height+a*2,toJSON:()=>({})}}function Qe(t){let a=Math.max(0,t.scrollIdleMs??yr),v=Math.max(0,t.visibilityDwellMs??br),f=Math.min(1,Math.max(0,t.minimumIntersectionRatio??.01)),m=Math.max(0,t.revealMarginPx??0),k=Math.max(1,t.maxSettledVisible??Number.POSITIVE_INFINITY),M=new Map,p=new Map,w=reactive(new Set),R=new Set,o=new Set,d=null,I=null,H=null,O=false,N=false,X=false,x,U;function Y(){x!==void 0&&clearTimeout(x),x=void 0;}function L(){U!==void 0&&clearTimeout(U),U=void 0;}function G(u=false){if(!u&&I!==null||d===null)return;let S=d.getBoundingClientRect(),h=Ir(S,m);for(let[c,P]of M){let B=c.getBoundingClientRect();P.ratio=kt(B,S),P.intersecting=P.ratio>0,P.revealIntersecting=m>0?kt(B,h)>0:P.intersecting&&P.ratio>=f;}}function s(u){return u.intersecting&&u.ratio>=f}function F(){for(let u of M.values())!u.revealIntersecting||w.has(u.key)||(w.add(u.key),t.onRevealed?.(u.item));}function J(u){let S=new Set(u.map(c=>c.key));if(S.size!==o.size||[...S].some(c=>!o.has(c))){o.clear();for(let c of S)o.add(c);t.onSettledVisibleChange?.(u.map(c=>c.item));}}function _(){if(N||O)return;G(),F();let u=d?.getBoundingClientRect(),S=u===void 0?0:(u.top+u.bottom)/2,h=[...M.entries()].filter(([,c])=>s(c)).sort(([c],[P])=>{let B=c.getBoundingClientRect(),q=P.getBoundingClientRect();return Math.abs((B.top+B.bottom)/2-S)-Math.abs((q.top+q.bottom)/2-S)}).slice(0,k).map(([,c])=>c);J(h);for(let c of h)R.has(c.key)||(R.add(c.key),t.onActivated?.(c.item));}function D(){N||O||(L(),U=setTimeout(()=>{U=void 0,_();},v));}function Q(){N||(j(true),G(),F(),J([]),L(),Y(),x=setTimeout(()=>{x=void 0,j(false),D();},a));}function j(u){O!==u&&(O=u,t.onScrollingChange?.(u));}function $(){d?.removeEventListener("scroll",Q),I?.disconnect(),H?.disconnect(),I=null,H=null,d=null;}function Z(u=true){if(N)return;let S=t.getRoot();if(!(S===d&&d!==null)){if($(),d=S,d===null){u&&!X&&(X=true,Promise.resolve().then(()=>{X=false,N||(Z(false),D());}));return}if(d.addEventListener("scroll",Q,{passive:true}),typeof IntersectionObserver<"u"){I=new IntersectionObserver(h=>{for(let c of h){let P=M.get(c.target);P!==void 0&&(P.intersecting=c.isIntersecting,P.ratio=c.intersectionRatio,m===0&&(P.revealIntersecting=c.isIntersecting&&c.intersectionRatio>=f));}F(),D();},{root:d,threshold:[0,f,1]}),m>0&&(H=new IntersectionObserver(h=>{for(let c of h){let P=M.get(c.target);P!==void 0&&(P.revealIntersecting=c.isIntersecting);}F();},{root:d,rootMargin:`${m}px 0px`,threshold:0}));for(let h of M.keys())I.observe(h);for(let h of M.keys())H?.observe(h);}else G(),F();}}function ie(u){w.delete(u),R.delete(u),o.delete(u);}return {register(u,S){if(N)return;let h=t.getKey(u),c=w.has(h),P=R.has(h),B=S===null?void 0:M.get(S);B!==void 0&&B.key!==h&&(p.delete(B.key),M.delete(S),ie(B.key));let q=p.get(h);if(q!==void 0&&q!==S&&(I?.unobserve(q),H?.unobserve(q),M.delete(q),p.delete(h)),S===null){q!==void 0&&(I?.unobserve(q),H?.unobserve(q),M.delete(q),p.delete(h)),ie(h);return}let W=M.get(S);if(W?.key===h&&W.item===u){Z();return}M.set(S,{item:u,key:h,intersecting:W?.key===h?W.intersecting:false,ratio:W?.key===h?W.ratio:0,revealIntersecting:W?.key===h?W.revealIntersecting:false}),p.set(h,S),Z(),I?.observe(S),H?.observe(S),G(true),F(),c&&t.onRevealed?.(u),P?t.onActivated?.(u):D();},isRevealed:u=>w.has(t.getKey(u)),isActivated:u=>R.has(t.getKey(u)),isSettledVisible:u=>o.has(t.getKey(u)),isScrolling:()=>O,notifyScroll:Q,refresh(){Z(),G(true),F(),D();},reset(){Y(),L(),j(false),J([]),$(),M.clear(),p.clear(),w.clear(),R.clear();},dispose(){N||(Y(),L(),j(false),J([]),$(),M.clear(),p.clear(),w.clear(),R.clear(),N=true);}}}function wr(t){let a=new Map,v=new Map,f=false,m=p=>{let w=a.get(p.channel);return w===void 0?p.channel:`${p.channel}\0${w.getKey(p.item)}`},k=Qe({getRoot:t.getRoot,getKey:m,revealMarginPx:t.revealMarginPx,minimumIntersectionRatio:t.minimumIntersectionRatio,scrollIdleMs:t.scrollIdleMs,visibilityDwellMs:t.visibilityDwellMs,onScrollingChange:p=>{for(let w of a.values())w.onScrollingChange?.(p);},onRevealed:p=>a.get(p.channel)?.onRevealed?.(p.item),onActivated:p=>a.get(p.channel)?.onActivated?.(p.item),onSettledVisibleChange:p=>{for(let[w,R]of a){let o=p.filter(I=>I.channel===w).map(I=>I.item),d=R.maxSettledVisible===void 0?o:o.slice(0,R.maxSettledVisible);R.onSettledVisibleChange?.(d);}}});function M(p){return w=>{if(f)throw new Error("Thread visibility target group \u5DF2\u91CA\u653E");if(a.has(p))throw new Error(`Thread visibility channel \u5DF2\u5B58\u5728: ${p}`);a.set(p,w);let R=new Map;v.set(p,R);let o=false,d=O=>({channel:p,item:O});function I(){for(let O of R.values())k.register(O.target,null);R.clear(),w.onScrollingChange?.(false),w.onSettledVisibleChange?.([]);}return {register(O,N){if(o||f)return;let X=w.getKey(O),x=R.get(X);if(N===null){x!==void 0&&(k.register(x.target,null),R.delete(X));return}let U=d(O);R.set(X,{target:U,element:N}),k.register(U,N);},isRevealed:O=>k.isRevealed(d(O)),isActivated:O=>k.isActivated(d(O)),isSettledVisible:O=>k.isSettledVisible(d(O)),isScrolling:k.isScrolling,notifyScroll:k.notifyScroll,refresh:k.refresh,reset:I,dispose(){o||(I(),o=true,a.delete(p),v.delete(p));}}}}return {createFactory:M,refresh:k.refresh,dispose(){if(!f){for(let p of v.values())for(let w of p.values())k.register(w.target,null);v.clear(),a.clear(),k.dispose(),f=true;}}}}export{qe as ImThreadBodySwitch,We as ImThreadItems,vr as ImThreadSurface,ze as ImThreadViewport,dr as createImThreadSurfaceContext,hr as createMessageRendererRegistry,wr as createThreadVisibilityTargetGroup,Qe as createThreadVisibilityTargets,ur as provideImThreadSurfaceContext,qt as useImText,Ye as useImThreadSurfaceContext,zt as useOptionalImThreadReadActions};
|
|
1
|
+
import {h,C,p,i,q,m,z,B,o,j,g}from'./chunk-UNGWXAYA.js';import {f,h as h$2,i as i$1,g as g$1}from'./chunk-VMKTMZ3K.js';import'./chunk-SVJGRV4M.js';import'./chunk-GMVR64GN.js';import'./chunk-LX7YEO5G.js';import'./chunk-WOT6VMZA.js';import {defineComponent,h as h$1,ref,provide,watch,nextTick,onMounted,onBeforeUnmount,computed,inject,isVNode,cloneVNode,Fragment,reactive}from'vue';function qt(t){let a=0,v=0;for(let f of t)f.kind==="video"?v+=1:a+=1;return {imageCount:a,videoCount:v}}function Gt(t){return {systemMessage:a=>a.body.system!==void 0?g$1(a.body.system,{locale:t.locale(),resolveName:t.resolveName,selfId:t.selfId()}):"",mediaPlaceholder:a=>i$1(a.contentType,{locale:t.locale(),durationMs:a.body.voice?.durationMs,stickerImageType:a.body.sticker?.imageType,gameType:a.body.game?.gameType,callKind:a.body.call?.callKind,...a.body.mediaAlbum===void 0?{}:{mediaAlbum:qt(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 Et=Symbol("ImThreadReadActions");function At(t){provide(Et,t);}function Yt(){return inject(Et,void 0)}var Ge=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 At(t.readActions),()=>{let f=h(t.message),m=t.rendererRegistry.resolve(f);return m!==void 0?h$1(m,{...a,message:t.message,presentation:t.presentation}):v["unsupported-body"]!==void 0?v["unsupported-body"]({kind:f,message:t.message}):h$1("span",{"data-im-thread-unsupported-body":f,"aria-hidden":"true"})}}});var We=Symbol("ImThreadViewportRegistration");function xt(){return inject(We,void 0)}var ze=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=xt();function f(o,d){let I=Array.isArray(d)?d:[d];return I.length===1&&isVNode(I[0])?cloneVNode(I[0],{key:o}):h$1(Fragment,{key:o},I)}function m(o){return d=>{v?.registerMessageNode(o,d instanceof HTMLElement?d:null);}}function k(o,d){return I=>{v?.registerDateNode(o,d,I instanceof HTMLElement?I:null);}}function M(o){return a.encryption?.({item:o})??h$1("div",{"data-im-thread-encryption":o.key})}function p(o){let d=k(o.key,o.label);return a["date-separator"]?.({item:o,setElement:d})??h$1("div",{ref:d,"data-im-thread-date-separator":o.key},o.label)}function w(o){return a["entry-unread"]?.({item:o})??h$1("div",{"data-im-thread-entry-unread":o.key,...o.count===void 0?{}:{"data-count":String(o.count)}})}function R(o){let d=m(o.message.id);return a.item!==void 0?a.item({item:o,setElement:d}):a.message!==void 0?a.message({item:o,setElement:d}):o.message.deletedForEveryone!==void 0?a["deleted-message"]?.({item:o,setElement:d})??h$1("article",{ref:d,"data-im-thread-message-id":o.message.id,"data-im-thread-message-terminal":"deleted-for-everyone"},[h$1("span",{"data-im-thread-anchor-point":""})]):o.message.recalled!==void 0?a["recalled-message"]?.({item:o,setElement:d})??h$1("article",{ref:d,"data-im-thread-message-id":o.message.id,"data-im-thread-message-terminal":"recalled"},[h$1("span",{"data-im-thread-anchor-point":""})]):o.kind==="system"&&a.system!==void 0?a.system({item:o,setElement:d}):h$1("article",{ref:d,"data-im-thread-message-id":o.message.id,"data-first-of-run":o.kind==="message"?String(o.firstOfRun):void 0},[h$1("span",{"data-im-thread-anchor-point":""}),h$1(Ge,{message:o.message,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{"unsupported-body":a["unsupported-body"]===void 0?void 0:I=>a["unsupported-body"]?.(I)})])}return ()=>h$1("div",{"data-im-thread-items":""},t.items.map(o=>{switch(o.kind){case "encryption":return a.item!==void 0?f(o.key,a.item({item:o})):f(o.key,M(o));case "date-separator":return a.item!==void 0?f(o.key,a.item({item:o,setElement:k(o.key,o.label)})):f(o.key,p(o));case "entry-unread":return a.item!==void 0?f(o.key,a.item({item:o})):f(o.key,w(o));case "system":case "message":return f(o.key,R(o))}return o}))}});var kt=120,ar=500,le=.5,sr=8,Ye=defineComponent({name:"ImThreadViewport",props:{messageIds:{type:Array,required:true},contentKey:{type:String,default:""},loadingOlder:{type:Boolean,default:false},hasNewer:{type:Boolean,default:false},loadingNewer:{type:Boolean,default:false},followThreshold:{type:Number,default:120},olderPrefetchThreshold:{type:Number,default:120},followNewMessages:{type:Boolean,default:true},shouldFollowAppendedMessage:{type:Function,default:void 0},visibleMargin:{type:Number,default:8},resizeFollowEnabled:{type:Boolean,default:true},activeDateOffset:{type:Number,default:16},activeDateEnabled:{type:Boolean,default:false}},emits:{"reach-start":()=>true,"reach-end":()=>true,"visible-range":t=>true,settled:t=>true,"new-message-count":t=>true,"user-scroll":()=>true,"active-date-change":t=>true},setup(t,{emit:a,expose:v,slots:f}){let m$1=ref(null),k=ref(null),M=new Map,p$1=new Map,w=new Set,R=new Map,o$1=0,d=[],I,H,O,D,X=false,x,U=new Set,Y=false,L,W="",s=1,F=false,J=false,_=true,N=false,Q=false,j$1=false,$=0,Z=-1,ie=-1,u,S,T,c,P,B$1=ref(true),q$1=ref(0),z$1=C(e=>{q$1.value=e,a("new-message-count",e);});function be(e){let n=Number.isFinite(t.followThreshold)?Math.max(0,t.followThreshold):0;return e.scrollHeight-e.clientHeight-e.scrollTop<=n}function fe(e=t.messageIds){return e.flatMap(n=>{let i=M.get(n);if(i===void 0)return [];let h=i.getBoundingClientRect(),y=i.querySelector("[data-im-thread-anchor-point]");return [{id:n,top:h.top,bottom:h.bottom,anchorTop:y?.getBoundingClientRect().top??h.top}]})}function Pe(e="",n=1){let i=Math.min(1,Math.max(0,n));W!==""&&W!==e&&R.get(W)?.element.style.removeProperty("opacity"),W=e,s=i,e!==""&&R.get(e)?.element.style.setProperty("opacity",String(i));}function ae(){Pe();}function Ee(){let e=m$1.value;if(Y||e===null||!t.activeDateEnabled)return;let n=[...R.entries()].filter(([,A])=>e.contains(A.element)).map(([A,C])=>{let G=C.element.getBoundingClientRect();return {key:A,label:C.label,top:G.top,height:G.height}}).sort((A,C)=>A.top-C.top),i=e.getBoundingClientRect(),h=n.find(A=>A.height>0)?.height??28,y=g({markers:n,viewportTop:i.top,overlayTop:Number.isFinite(t.activeDateOffset)?Math.max(0,t.activeDateOffset):0,overlayHeight:h});if(y===null){ae(),a("active-date-change",null);return}Pe(y.inlineDateKey,y.inlineOpacity),a("active-date-change",y);}function Ce(e){H={scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,width:e.clientWidth,height:e.clientHeight};}function Ae(e){let n=H;if(n===void 0)return false;let i=Math.max(0,e.scrollHeight-e.clientHeight);return i<n.scrollHeight-n.height&&n.scrollTop>i&&Math.abs(e.scrollTop-i)<=le}function Oe(e){return Ae(e)||L!==void 0&&(L.behavior==="smooth"||Math.abs(e.scrollTop-L.targetTop)<=le)?0:e.scrollTop-o$1}function me(e,n){n!==0&&(o$1=e.scrollTop-n,L=void 0,g$1());}function Ke(e,n){let i=Oe(e);if(c!==void 0)return c.expectedOffset-=i,se(),me(e,i),N||oe(),false;let h=H;if(h===void 0)return false;let y=I,A=y===void 0?void 0:fe([y.id])[0],C=e.scrollTop-h.scrollTop,G=Ae(e)?0:C,Me=y===void 0||A===void 0?0:(A.anchorTop??A.top)-n.top-y.offset+C;return h.scrollHeight!==e.scrollHeight||h.width!==e.clientWidth||h.height!==e.clientHeight||Math.abs(Me)>le?(H=void 0,!F&&!t.loadingNewer&&t.resizeFollowEnabled&&B$1.value&&Math.abs(G)<=le?(Fe(),true):(y!==void 0&&Ne({...y,offset:y.offset-G}),me(e,i),false)):false}function ee(){let e=m$1.value;if(Y||e===null)return;let n=e.getBoundingClientRect();if(Ke(e,n))return;let i=D!==void 0&&X?t.messageIds.filter(C=>w.has(C)):t.messageIds,h=fe(i);if(D!==void 0&&X&&h.length===0){B$1.value=be(e);return}let y=h.filter(C=>B({viewportTop:n.top,viewportBottom:n.bottom,messageTop:C.top,messageBottom:C.bottom,margin:t.visibleMargin})).map(C=>C.id),A=y.length!==d.length||y.some((C,G)=>d[G]!==C);d=Object.freeze(y),I=o(h,{top:n.top,bottom:n.bottom}),Ce(e),z$1.acknowledgeVisible(y),B$1.value=be(e),A&&a("visible-range",d),a("settled",{visibleMessageIds:d,...d.length===0?{}:{newestVisibleMessageId:d[d.length-1]},isAtBottom:B$1.value,newMessageCount:q$1.value});}function ge(e){if(U.add(e),x!==void 0)return;let n=()=>{x=void 0;let i=[...U];U.clear(),i.forEach(h=>h());};typeof globalThis.requestAnimationFrame=="function"?x=globalThis.requestAnimationFrame(n):x=globalThis.setTimeout(n,0);}function xe(){x!==void 0&&(typeof x=="number"&&typeof globalThis.cancelAnimationFrame=="function"?globalThis.cancelAnimationFrame(x):globalThis.clearTimeout(x),x=void 0,U.clear());}function re(){ge(ee);}function Ie(){let e=m$1.value;if(e===null)return;let n=e.getBoundingClientRect(),i=o(fe(),{top:n.top,bottom:n.bottom});i!==void 0&&(I=i,Ce(e));}function he(){return _&&c===void 0&&!J&&!t.loadingOlder}function ke(){Ie(),_=false,Z=$,J=true,a("reach-start"),ge(()=>{t.loadingOlder||(J=false);});}function Ve(e){return t.hasNewer&&!F&&!t.loadingOlder&&!t.loadingNewer&&be(e)}function r(){F=true,B$1.value=false,ie=$,a("reach-end"),ge(()=>{t.loadingNewer||(F=false);});}function l(){let e=m$1.value;e===null||$===ie||!Ve(e)||r();}function g$1(){let e=m$1.value;if(Y||e===null)return;let n=e.scrollTop,i=Ae(e),h=L,y=false;if(h!==void 0){let C=Math.abs(n-h.targetTop)<=le;y=h.behavior==="smooth"||C,(h.behavior!=="smooth"||C)&&(L=void 0);}!y&&!i&&!N&&c===void 0&&n!==o$1&&(N=true,Q=true,$+=1);let A=N&&!y&&!i&&n!==o$1;if(A&&(a("user-scroll"),ge(Ee)),N&&!j$1&&ye(),!_&&Q&&$!==Z&&n<o$1&&n>et()&&(_=true),c!==void 0&&!y)if(N){let C=K();C!==void 0&&(c.expectedOffset=C);}else se(),oe();he()&&A&&n>=0&&m({previousScrollTop:o$1,currentScrollTop:n,topThreshold:t.olderPrefetchThreshold})&&ke(),A&&Ve(e)&&z({previousScrollTop:o$1,currentScrollTop:n,isAtBottom:be(e),isHistoryWindow:t.hasNewer,isPageSettling:y})&&r(),o$1=n,re();}function b(e,n="auto"){L={targetTop:e,behavior:n};}function V(e){let n=c,i=k.value;if(!(n===void 0||i===null)){if(n.visualOffset=Math.abs(e)<=le?0:e,n.visualOffset===0){i.style.removeProperty("transform"),i.style.removeProperty("will-change");return}i.style.setProperty("transform",`translate3d(0, ${n.visualOffset}px, 0)`),i.style.setProperty("will-change","transform");}}function E(){P!==void 0&&(clearTimeout(P),P=void 0),c!==void 0&&c.visualOffset!==0&&(I=void 0,H=void 0);let e=k.value;e?.style.removeProperty("transform"),e?.style.removeProperty("will-change"),c=void 0,L=void 0;}function K(){let e=m$1.value,n=c;if(e===null||n===void 0)return;let i=fe().find(h=>h.id===n.anchor.id);if(i!==void 0)return (i.anchorTop??i.top)-e.getBoundingClientRect().top}function se(){let e=c,n=K();if(e===void 0||n===void 0)return;let i=e.expectedOffset-n;Math.abs(i)<=le||(V(e.visualOffset+i),e.committed=false,e.attempts=0);}function ne(){P!==void 0&&clearTimeout(P),P=setTimeout(()=>{P=void 0,!(N||c?.committed!==true)&&E();},ar);}function Te(){let e=m$1.value,n=c;if(Y||e===null||n===void 0||N)return;let i=n.visualOffset;if(Math.abs(i)<=le){n.committed=true,ne();return}let h=Math.max(0,e.scrollHeight-e.clientHeight),y=Math.min(h,Math.max(0,e.scrollTop-i));if(b(y),e.scrollTop=y,Math.abs(e.scrollTop-y)>le){L=void 0,n.committed=false,n.attempts+=1,n.attempts<sr?oe():(E(),L=void 0,o$1=e.scrollTop);return}V(0),o$1=e.scrollTop,n.expectedOffset=K()??n.expectedOffset,n.committed=true,n.attempts=0,ne();}function oe(){P!==void 0&&clearTimeout(P),P=setTimeout(()=>{P=void 0,Te();},kt);}function we(e){e!==void 0&&(c===void 0&&(c={anchor:e,expectedOffset:e.offset,visualOffset:0,committed:false,attempts:0}),se(),!N&&Te());}function Ne(e){let n=m$1.value;if(n===null||e===void 0)return;let i=n.getBoundingClientRect(),h=q(e,fe(),{top:i.top,bottom:i.bottom});if(h!==void 0){let y=Math.max(0,n.scrollHeight-n.clientHeight),A=Math.min(y,Math.max(0,n.scrollTop+h));b(A),n.scrollTop=A,o$1=n.scrollTop,H=void 0;}}function et(){return Number.isFinite(t.olderPrefetchThreshold)?Math.max(0,t.olderPrefetchThreshold):0}function De(){L?.behavior==="smooth"&&(L=void 0),Q=false,N||(N=true,$+=1),u!==void 0&&(clearTimeout(u),u=void 0);}function Le(){let e=m$1.value;e===null||$===Z||(c!==void 0&&E(),_=true,e.scrollTop<=et()&&he()&&ke());}function tt(){I=void 0,H=void 0,u!==void 0&&(clearTimeout(u),u=void 0),E(),N=false,Q=false,j$1=false,S=void 0,T=void 0,$+=1,Z=-1,ie=-1,_=true,J=false,F=false,L=void 0;}function rt(){j$1||(u!==void 0&&(clearTimeout(u),u=void 0),N=false,Q=false,c!==void 0&&(c.attempts=0),Te());}function ye(){j$1||(u!==void 0&&clearTimeout(u),u=setTimeout(()=>{u=void 0,rt();},kt));}function nt(){L=void 0,rt();}function ot(e){j$1=true,De(),S=e.touches?.[0]?.clientY;}function it(e){let n=e.touches?.[0]?.clientY;n!==void 0&&(S!==void 0&&n>S?Le():S!==void 0&&n<S&&l(),S=n);}function He(){j$1=false,S=void 0,ye();}function at(e){De(),e.deltaY<0?Le():e.deltaY>0&&l(),ye();}function st(e){e.pointerType!=="touch"&&(De(),T=e.clientY,ye());}function lt(e){e.pointerType==="touch"||!N||T===void 0||(e.clientY<T?Le():e.clientY>T&&l(),T=e.clientY,ye());}function Be(e){e.pointerType!=="touch"&&(T=void 0,ye());}function dt(e){["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(e.key)&&(De(),e.key==="ArrowUp"||e.key==="PageUp"||e.key==="Home"||e.key===" "&&e.shiftKey?Le():l(),ye());}function Fe(e="auto"){let n=m$1.value;if(n===null)return;H=void 0,E();let i=Math.max(0,n.scrollHeight-n.clientHeight);b(i,e),n.scrollTo?.({top:i,behavior:e}),n.scrollTop!==i&&(n.scrollTop=i),o$1=n.scrollTop,z$1.clear(),ee();}function ut(){let e=m$1.value;return e!==null&&e.clientWidth>0&&e.clientHeight>0}function Lt(){let e=m$1.value;return ut()&&e!==null&&e.scrollHeight>e.clientHeight+1}function Ht(e,n={}){let i=m$1.value,h=M.get(e);if(i===null||h===void 0||!i.contains(h)||i.clientHeight<=0)return false;E();let y=i.getBoundingClientRect(),A=h.getBoundingClientRect(),C=n.block??"center",G;C==="start"?G=i.scrollTop+A.top-y.top:C==="end"?G=i.scrollTop+A.bottom-y.bottom:C==="nearest"?A.top>=y.top&&A.bottom<=y.bottom?G=i.scrollTop:A.top<y.top?G=i.scrollTop+A.top-y.top:G=i.scrollTop+A.bottom-y.bottom:G=j({currentScrollTop:i.scrollTop,scrollHeight:i.scrollHeight,targetHeight:A.height,targetTop:A.top,viewportHeight:i.clientHeight,viewportTop:y.top});let Me=Math.max(0,i.scrollHeight-i.clientHeight),pe=Math.min(Me,Math.max(0,G));H=void 0;let Re=n.behavior??"auto";return b(pe,Re),i.scrollTo?.({top:pe,behavior:Re}),i.scrollTop!==pe&&(i.scrollTop=pe),o$1=i.scrollTop,ee(),true}function Bt(){z$1.clear();}function Ft(){F=true,B$1.value=false;}function _t(){F=false,re();}function jt(e,n){let i=M.get(e);if(i!==void 0&&i!==n&&(D?.unobserve(i),O?.unobserve?.(i),p$1.delete(i),w.delete(e)),n===null){M.delete(e),w.delete(e);return}M.set(e,n),p$1.set(n,e),D?.observe(n),O?.observe(n),re();}function Kt(e,n,i){let h=R.get(e);if(i===null){R.delete(e);return}R.set(e,{element:i,label:n}),W===e&&i.style.setProperty("opacity",String(s)),h?.element!==i&&(i.dataset.imThreadDateSeparator=e);}return provide(We,{registerMessageNode:jt,registerDateNode:Kt}),watch(()=>t.contentKey,(e,n)=>{if(e===n)return;tt();let i=m$1.value;i!==null&&(o$1=i.scrollTop);},{flush:"sync"}),watch(()=>t.messageIds,async(e,n)=>{let i=m$1.value;if(i===null)return;let h=new Set(n);n.length>0&&e.length>0&&!e.some(ve=>h.has(ve))&&tt();let A=i.getBoundingClientRect(),C=p(I,fe(),{top:A.top,bottom:A.bottom}),G=B$1.value,Me=n[n.length-1],pe=Me===void 0?-1:e.indexOf(Me),Re=pe<0?[]:e.slice(pe+1).filter(ve=>!h.has(ve)),ct=F||t.loadingNewer,Ut=e.length===n.length&&e.every(ve=>h.has(ve))&&e.some((ve,Ue)=>ve!==n[Ue]);if(await nextTick(),Y)return;if(Ut&&G&&t.followNewMessages&&t.resizeFollowEnabled&&!t.hasNewer&&!ct){Fe();return}let ft=n[0];if(ft!==void 0&&e.indexOf(ft)>0&&(J=false,we(C)),Re.length>0){if(ct){F=false,c===void 0&&Ne(C),B$1.value=false,re();return}(G||Re.some(Ue=>t.shouldFollowAppendedMessage?.(Ue)===true))&&t.followNewMessages?Fe():z$1.add(Re);}re();},{flush:"pre"}),watch(()=>t.loadingNewer,(e,n)=>{e||!n||!F||ge(()=>{t.loadingNewer||(F=false);});},{flush:"pre"}),watch(()=>t.loadingOlder,(e,n)=>{e||!n||!J||ge(()=>{t.loadingOlder||(J=false);});},{flush:"pre"}),onMounted(()=>{let e=m$1.value;if(e!==null){if(o$1=e.scrollTop,e.addEventListener("scroll",g$1,{passive:true}),e.addEventListener("scrollend",nt,{passive:true}),e.addEventListener("touchstart",ot,{passive:true}),e.addEventListener("touchmove",it,{passive:true}),e.addEventListener("touchend",He,{passive:true}),e.addEventListener("touchcancel",He,{passive:true}),e.addEventListener("wheel",at,{passive:true}),e.addEventListener("pointerdown",st,{passive:true}),e.addEventListener("pointermove",lt,{passive:true}),e.addEventListener("pointerup",Be,{passive:true}),e.addEventListener("pointercancel",Be,{passive:true}),e.addEventListener("keydown",dt),typeof globalThis.ResizeObserver=="function"){O=new globalThis.ResizeObserver(()=>{Y||m$1.value===null||ee();}),O.observe(e),k.value!==null&&O.observe(k.value);for(let n of M.values())O.observe(n);}if(typeof globalThis.IntersectionObserver=="function"){D=new globalThis.IntersectionObserver(n=>{for(let i of n){let h=p$1.get(i.target);h!==void 0&&(i.isIntersecting?w.add(h):w.delete(h));}X=true,re();},{root:e,rootMargin:`${Number.isFinite(t.visibleMargin)?Math.max(0,t.visibleMargin):0}px 0px`});for(let n of M.values())D.observe(n);}re();}}),onBeforeUnmount(()=>{Y=true;let e=m$1.value;e!==null&&e.removeEventListener("scroll",g$1),e!==null&&(e.removeEventListener("scrollend",nt),e.removeEventListener("touchstart",ot),e.removeEventListener("touchmove",it),e.removeEventListener("touchend",He),e.removeEventListener("touchcancel",He),e.removeEventListener("wheel",at),e.removeEventListener("pointerdown",st),e.removeEventListener("pointermove",lt),e.removeEventListener("pointerup",Be),e.removeEventListener("pointercancel",Be),e.removeEventListener("keydown",dt)),u!==void 0&&clearTimeout(u),E(),xe(),O?.disconnect(),D?.disconnect(),ae(),M.clear(),p$1.clear(),w.clear(),R.clear(),z$1.clear();}),v({getViewportElement:()=>m$1.value,clearNewMessageBadge:Bt,clearActiveDate:ae,isAtBottom:computed(()=>B$1.value),isMeasurable:ut,isScrollable:Lt,newMessageCount:computed(()=>q$1.value),prepareHistoryPageAppend:Ft,cancelHistoryPageAppend:_t,trackRemoteMessageIds:(e,n)=>z$1.trackRemote(e,n),scrollToLatest:Fe,scrollToMessage:Ht,focusViewport:()=>m$1.value?.focus({preventScroll:true})}),()=>h$1("div",{ref:m$1,"data-im-thread-viewport":"",role:"log",tabindex:-1},[h$1("div",{ref:k,"data-im-thread-viewport-content":""},f.default?.())])}});var Nt=Symbol("ImThreadSurfaceContext");function ur(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 cr(t){provide(Nt,t);}function $e(){let t=inject(Nt);if(t===void 0)throw new Error("ImThreadSurface \u9700\u8981\u663E\u5F0F context prop \u6216 provideImThreadSurfaceContext");return t}var Je=Object.freeze({followThreshold:120,olderPrefetchThreshold:120,visibleReadDelay:300,visibleMargin:8,activeDateOffset:16,activeDateIdleDelay:1500}),Qe=Object.freeze({enabled:true,maxFillPages:8}),gr=8,pr=160;function vr(t,a){return t?.conversationType===a.conversationType&&t.conversationId===a.conversationId}var hr=defineComponent({name:"ImThreadSurface",props:{conversation:{type:Object,required:true},context:{type:Object,default:void 0},rendererRegistry:{type:Object,required:true},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0},viewportOptions:{type:Object,default:()=>({})},initialViewportOptions:{type:Object,default:()=>({})},hooks:{type:Object,default:void 0}},setup(t,{expose:a,slots:v}){let f=t.context??$e(),m=ref(null),k=ref(0),M=ref(true),p=[],w,R=0,o=0,d=null,I="",H="",O="",D=false,X=false,x=ref(false),U=ref(""),Y=ref(false),L,W,s=computed(()=>f.getState()),F=computed(()=>s.value.pageVisible??f.isPageVisible?.()??true),J=computed(()=>s.value.pageEngaged??f.isPageEngaged?.()??true),_=computed(()=>vr(s.value.activeConversation,t.conversation)),N=computed(()=>({...Je,...t.viewportOptions})),Q=computed(()=>{let r=t.initialViewportOptions.maxFillPages??Qe.maxFillPages;return {enabled:t.initialViewportOptions.enabled??Qe.enabled,maxFillPages:Number.isFinite(r)?Math.max(0,Math.floor(r)):Qe.maxFillPages}}),j=computed(()=>!_.value||!s.value.ready?"":`${t.conversation.conversationType}\0${t.conversation.conversationId}`),$=computed(()=>_.value?i({messages:s.value.messages,entryUnread:s.value.entryUnread,formatDate:f.formatDate,leadingItems:f.leadingItems?.(),beforeMessageItems:f.beforeMessageItems}):[]),Z=computed(()=>$.value.flatMap(r=>r.kind==="message"||r.kind==="system"?[r.message.id]:[]));function ie(){L!==void 0&&(clearTimeout(L),L=void 0),W!==void 0&&(clearTimeout(W),W=void 0);}function u(r=false){if(ie(),Y.value=false,r){m.value?.clearActiveDate(),U.value="";return}W=setTimeout(()=>{W=void 0,!Y.value&&(m.value?.clearActiveDate(),U.value="");},pr);}function S(r){if(r===null){u();return}ie(),U.value=r.label,Y.value=true;let l=N.value.activeDateIdleDelay,g=Number.isFinite(l)?Math.max(0,l):Je.activeDateIdleDelay;L=setTimeout(()=>{L=void 0,u();},g);}async function T(r,l){t.hooks?.beforeAction?.(r);try{let g=await l();return t.hooks?.afterAction?.(r,g),g}catch(g){throw t.hooks?.onError?.(r,g),g}}function c(r="automatic"){return !_.value||s.value.loading||!s.value.hasOlder?Promise.resolve(0):T({kind:"load-older",source:r},()=>f.actions.loadOlder())}function P(){let r=f.actions.loadNewer,l=s.value.loadingNewer??s.value.loading;return !_.value||l||!s.value.hasNewer||r===void 0?Promise.resolve(0):T({kind:"load-newer"},()=>r())}async function B(r){for(let l=0;l<gr;l+=1){if(!_.value)return;let g=r==="older"?s.value.hasOlder:s.value.hasNewer,b=r==="older"?s.value.olderError:s.value.newerError;if(!g||b!==null||(r==="older"?await c("user-scroll"):await P())>0)return;let E=r==="older"?s.value.hasOlder:s.value.hasNewer,K=r==="older"?s.value.olderError:s.value.newerError;if(!E||K!==null)return}}async function q(){return !_.value||f.actions.loadNewer===void 0?0:T({kind:"load-newer"},()=>f.actions.retryNewer?.()??f.actions.loadNewer?.({force:!0})??Promise.resolve(0))}async function z(){if(!_.value)return 0;let r=j.value,l=++R;d=null,O="";let g;try{g=await T({kind:"retry-older"},()=>f.actions.retryOlder?.()??f.actions.loadOlder({force:!0}));}catch(b){throw ee(r,l)&&(O=r),b}return ee(r,l)&&!x.value&&(d=null,Ie()),g}async function be(){if(!_.value)return false;let r=await T({kind:"jump-to-latest"},()=>f.actions.jumpToLatest?.()??Promise.resolve(!s.value.isHistoryWindow));return r&&(await nextTick(),m.value?.scrollToLatest()),r}function fe(r){M.value=r.isAtBottom,k.value=r.newMessageCount,Ie();}function Pe(r,l){return m.value?.scrollToMessage(r,l)??false}function ae(r,l){return !X&&o===l&&j.value===r&&_.value}async function Ee(r,l,g,b){for(let V=0;V<60;V+=1){if(!ae(r,l))return false;if(Pe(g,b))return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(E=>window.requestAnimationFrame(()=>E()));}return false}async function Ce(r,l,g){let b=m.value;if(b===null||!b.isMeasurable()||b.isScrollable())return true;let V=0,E=!s.value.hasOlder,K=!s.value.hasNewer||f.actions.loadNewer===void 0,se=async()=>(await nextTick(),await nextTick(),Ee(r,l,g,{behavior:"auto",block:"center"})),ne=async oe=>{if(!ae(r,l)||V>=Q.value.maxFillPages)return false;let we=0;if(oe==="older"){if(E||!s.value.hasOlder)return false;we=await c(),E=!s.value.hasOlder;}else {if(K||!s.value.hasNewer)return false;b.prepareHistoryPageAppend();try{we=await P();}catch(Ne){throw b.cancelHistoryPageAppend(),Ne}we<=0&&!s.value.hasNewer&&b.cancelHistoryPageAppend(),K=!s.value.hasNewer;}return V+=1,we>0?se():!(oe==="older"?E:K)};!E&&!await ne("older")&&(E=true),!K&&!await ne("newer")&&(K=true);let Te="older";for(;ae(r,l)&&V<Q.value.maxFillPages&&b.isMeasurable()&&!b.isScrollable()&&(!E||!K);){let oe=Te==="older"?E?"newer":"older":K?"older":"newer";Te=oe==="older"?"newer":"older",await ne(oe)||(oe==="older"?E=true:K=true);}return ae(r,l)}async function Ae(r,l={behavior:"auto",block:"center"}){if(!_.value||r==="")return false;let g=j.value,b=++o;if(!Z.value.includes(r)){let K=f.actions.loadAround;if(K===void 0||!await T({kind:"locate-message",messageId:r},()=>K(r))||!ae(g,b))return false}return !await Ee(g,b,r,{...l,behavior:"auto"})||!await Ce(g,b,r)?false:Ee(g,b,r,l)}function Oe(){w!==void 0&&(clearTimeout(w),w=void 0);}function me(){if(Oe(),!x.value)return;let r=t.readActions;if(r===void 0||p.length===0)return;let l=Number.isFinite(N.value.visibleReadDelay)?Math.max(0,N.value.visibleReadDelay):Je.visibleReadDelay;w=setTimeout(()=>{if(w=void 0,!_.value||!J.value)return;let g=p[p.length-1];if(g===void 0)return;let b=r.resolveTarget===void 0?g:r.resolveTarget(g);b!=null&&Promise.resolve(r.markRead(b)).catch(V=>{t.hooks?.onError?.({kind:"visible-range",messageIds:p},V);});},l);}function Ke(r){p=Object.freeze([...r]);let l={kind:"visible-range",messageIds:p};t.hooks?.beforeAction?.(l);try{f.actions.onVisibleRange?.(p),t.hooks?.afterAction?.(l,void 0);}catch(g){throw t.hooks?.onError?.(l,g),g}x.value?me():Ie();}function ee(r,l){return !X&&R===l&&j.value===r&&!D}function ge(r,l){ee(r,l)&&(I=r,H=xe(s.value.entryUnread),x.value=true,me());}function xe(r){return r.state!=="located"?r.state:`${r.state}:${r.firstMessageId}`}async function re(r,l,g){for(let b=0;b<60;b+=1){if(!ee(r,l))return false;if(m.value?.scrollToMessage(g,{behavior:"auto",block:"center"})===true)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(E=>window.requestAnimationFrame(()=>E()));}return false}function Ie(){let r=j.value,l=xe(s.value.entryUnread);if(r===""||s.value.loading||s.value.error!==null&&s.value.messages.length===0||I===r&&(H===l||D)||O===r||d!==null)return;if(!Q.value.enabled){I=r,H=l,x.value=true,me();return}let g=++R;D=false,x.value=false;let b=(async()=>{if(await nextTick(),!ee(r,g))return;let V=m.value;if(V===null||!V.isMeasurable())return;let E=s.value.entryUnread;if(E.state==="located"&&!Z.value.includes(E.firstMessageId))return;let K=E.state==="located"?await re(r,g,E.firstMessageId):false;if(E.state==="located"&&!K)return;K||V.scrollToLatest();let se=0;for(;ee(r,g)&&se<Q.value.maxFillPages&&s.value.error===null&&s.value.hasOlder&&V.isMeasurable()&&!V.isScrollable();)if(await c(),!ee(r,g)||(se+=1,await nextTick(),await nextTick(),!V.isMeasurable()))return;if(!ee(r,g)||!V.isMeasurable())return;let ne=s.value.entryUnread;if(ne.state==="located"){if(!Z.value.includes(ne.firstMessageId)||!await re(r,g,ne.firstMessageId))return}else V.scrollToLatest();await nextTick(),ge(r,g);})().catch(()=>{ee(r,g)&&(O=r);}).finally(()=>{d===b&&(d=null);});d=b;}function he(r,l=false){R+=1,d=null,D=false,x.value=r,(I="",H="",l||(O="")),Oe();}function ke(){if(x.value)return;let r=j.value;D=true,R+=1,d=null,I=r,x.value=true,me();}let Ve=Object.freeze({getViewportElement:()=>m.value?.getViewportElement()??null,loadOlder:c,retryOlder:z,loadNewer:P,retryNewer:q,jumpToLatest:be,scrollToMessage:Pe,locateMessage:Ae,focusViewport:()=>m.value?.focusViewport()});return a(Ve),watch(J,r=>{r&&x.value?me():Oe();}),watch([()=>s.value.activeRemoteMessageRevision??0,m,j],()=>{let r=m.value;if(r===null||!_.value)return;let l=f.actions.drainActiveRemoteMessageIds?.()??[];r.trackRemoteMessageIds(l,{isAtBottom:M.value,isHistoryWindow:s.value.isHistoryWindow,isPageVisible:F.value})&&(M.value=false);},{flush:"post"}),watch([j,()=>s.value.loading,()=>s.value.error,()=>Z.value.length,()=>s.value.hasOlder,()=>xe(s.value.entryUnread),Q],([r,l,g,,,b],[V,,,,,E])=>{if(r!==V&&(o+=1,he(false),u(true),m.value?.clearNewMessageBadge(),k.value=0,M.value=true),r!==""&&r===V&&b!==E&&!D&&b.startsWith("located:")&&(I="",H="",x.value=false),r===""){he(false);return}if(g!==null&&s.value.messages.length===0){x.value||he(false,true);return}l||Ie();},{flush:"post",immediate:true}),onBeforeUnmount(()=>{X=true,o+=1,he(false),u(true);}),()=>{let r={conversation:t.conversation,state:s.value,items:$.value,actions:Ve},l=[v.header?.(r),v["before-list"]?.(r)];if(!_.value)l.push(v.unsupported?.(r)??h$1("div",{"data-im-thread-unsupported":""}));else if(!s.value.ready&&s.value.loading)l.push(v.loading?.(r)??h$1("div",{"data-im-thread-loading":""}));else if(s.value.error!==null&&s.value.messages.length===0)l.push(v.error?.(r)??h$1("div",{"data-im-thread-error":""}));else if(s.value.ready&&s.value.messages.length===0&&!s.value.hasOlder)l.push(v.empty?.(r)??h$1("div",{"data-im-thread-empty":""}));else {let g=h$1(Ye,{ref:m,messageIds:Z.value,contentKey:`${t.conversation.conversationType}\0${t.conversation.conversationId}`,loadingOlder:s.value.loadingOlder??s.value.loading,hasNewer:s.value.hasNewer,loadingNewer:s.value.loadingNewer??s.value.loading,followThreshold:N.value.followThreshold,olderPrefetchThreshold:N.value.olderPrefetchThreshold,visibleMargin:N.value.visibleMargin,activeDateOffset:N.value.activeDateOffset,activeDateEnabled:v["active-date"]!==void 0,resizeFollowEnabled:x.value,followNewMessages:F.value,shouldFollowAppendedMessage:b=>{let V=s.value.messages.find(E=>E.id===b);return V===void 0?false:f.shouldFollowMessage?.(V)===true},onReachStart:()=>{B("older").catch(()=>{});},onReachEnd:()=>{B("newer").catch(()=>{});},onSettled:fe,onUserScroll:ke,onActiveDateChange:S,onVisibleRange:Ke,onNewMessageCount:b=>{k.value=b;}},{default:()=>[v["viewport-before"]?.(r),h$1(ze,{items:$.value,rendererRegistry:t.rendererRegistry,presentation:t.presentation,readActions:t.readActions},{item:v.item,"date-separator":v["date-separator"],"entry-unread":v["entry-unread"],encryption:v.encryption,system:v.system,message:v.message,"recalled-message":v["recalled-message"],"deleted-message":v["deleted-message"],"unsupported-body":v["unsupported-body"]}),v["viewport-after"]?.(r)]});l.push(h$1("div",{"data-im-thread-viewport-shell":""},[v["active-date"]?.({label:U.value,visible:Y.value&&U.value!==""}),g])),s.value.error!==null&&l.push(v.error?.(r)??h$1("div",{"data-im-thread-error":""}));}return l.push(v["after-list"]?.(r),v["jump-to-latest"]?.({...r,count:k.value,visible:!M.value||s.value.isHistoryWindow}),v["context-menu"]?.(r),v.composer?.(r)),h$1("section",{"data-im-thread-surface":"","data-conversation-type":t.conversation.conversationType,"data-conversation-id":t.conversation.conversationId},l)}}});function Tr(t){let a=new Map;for(let f of t){if(a.has(f.kind))throw new Error(`\u6D88\u606F renderer kind \u91CD\u590D\u6CE8\u518C\uFF1A${f.kind}`);a.set(f.kind,f.component);}let v=Object.freeze([...a.keys()]);return Object.freeze({kinds:v,resolve:f=>a.get(f)})}var br=140,Ir=120;function Dt(t,a){if(t.width<=0||t.height<=0)return 0;let v=Math.max(0,Math.min(t.right,a.right)-Math.max(t.left,a.left)),f=Math.max(0,Math.min(t.bottom,a.bottom)-Math.max(t.top,a.top));return Math.min(1,v*f/(t.width*t.height))}function wr(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 Ze(t){let a=Math.max(0,t.scrollIdleMs??br),v=Math.max(0,t.visibilityDwellMs??Ir),f=Math.min(1,Math.max(0,t.minimumIntersectionRatio??.01)),m=Math.max(0,t.revealMarginPx??0),k=Math.max(1,t.maxSettledVisible??Number.POSITIVE_INFINITY),M=new Map,p=new Map,w=reactive(new Set),R=new Set,o=new Set,d=null,I=null,H=null,O=false,D=false,X=false,x,U;function Y(){x!==void 0&&clearTimeout(x),x=void 0;}function L(){U!==void 0&&clearTimeout(U),U=void 0;}function W(u=false){if(!u&&I!==null||d===null)return;let S=d.getBoundingClientRect(),T=wr(S,m);for(let[c,P]of M){let B=c.getBoundingClientRect();P.ratio=Dt(B,S),P.intersecting=P.ratio>0,P.revealIntersecting=m>0?Dt(B,T)>0:P.intersecting&&P.ratio>=f;}}function s(u){return u.intersecting&&u.ratio>=f}function F(){for(let u of M.values())!u.revealIntersecting||w.has(u.key)||(w.add(u.key),t.onRevealed?.(u.item));}function J(u){let S=new Set(u.map(c=>c.key));if(S.size!==o.size||[...S].some(c=>!o.has(c))){o.clear();for(let c of S)o.add(c);t.onSettledVisibleChange?.(u.map(c=>c.item));}}function _(){if(D||O)return;W(),F();let u=d?.getBoundingClientRect(),S=u===void 0?0:(u.top+u.bottom)/2,T=[...M.entries()].filter(([,c])=>s(c)).sort(([c],[P])=>{let B=c.getBoundingClientRect(),q=P.getBoundingClientRect();return Math.abs((B.top+B.bottom)/2-S)-Math.abs((q.top+q.bottom)/2-S)}).slice(0,k).map(([,c])=>c);J(T);for(let c of T)R.has(c.key)||(R.add(c.key),t.onActivated?.(c.item));}function N(){D||O||(L(),U=setTimeout(()=>{U=void 0,_();},v));}function Q(){D||(j(true),W(),F(),J([]),L(),Y(),x=setTimeout(()=>{x=void 0,j(false),N();},a));}function j(u){O!==u&&(O=u,t.onScrollingChange?.(u));}function $(){d?.removeEventListener("scroll",Q),I?.disconnect(),H?.disconnect(),I=null,H=null,d=null;}function Z(u=true){if(D)return;let S=t.getRoot();if(!(S===d&&d!==null)){if($(),d=S,d===null){u&&!X&&(X=true,Promise.resolve().then(()=>{X=false,D||(Z(false),N());}));return}if(d.addEventListener("scroll",Q,{passive:true}),typeof IntersectionObserver<"u"){I=new IntersectionObserver(T=>{for(let c of T){let P=M.get(c.target);P!==void 0&&(P.intersecting=c.isIntersecting,P.ratio=c.intersectionRatio,m===0&&(P.revealIntersecting=c.isIntersecting&&c.intersectionRatio>=f));}F(),N();},{root:d,threshold:[0,f,1]}),m>0&&(H=new IntersectionObserver(T=>{for(let c of T){let P=M.get(c.target);P!==void 0&&(P.revealIntersecting=c.isIntersecting);}F();},{root:d,rootMargin:`${m}px 0px`,threshold:0}));for(let T of M.keys())I.observe(T);for(let T of M.keys())H?.observe(T);}else W(),F();}}function ie(u){w.delete(u),R.delete(u),o.delete(u);}return {register(u,S){if(D)return;let T=t.getKey(u),c=w.has(T),P=R.has(T),B=S===null?void 0:M.get(S);B!==void 0&&B.key!==T&&(p.delete(B.key),M.delete(S),ie(B.key));let q=p.get(T);if(q!==void 0&&q!==S&&(I?.unobserve(q),H?.unobserve(q),M.delete(q),p.delete(T)),S===null){q!==void 0&&(I?.unobserve(q),H?.unobserve(q),M.delete(q),p.delete(T)),ie(T);return}let z=M.get(S);if(z?.key===T&&z.item===u){Z();return}M.set(S,{item:u,key:T,intersecting:z?.key===T?z.intersecting:false,ratio:z?.key===T?z.ratio:0,revealIntersecting:z?.key===T?z.revealIntersecting:false}),p.set(T,S),Z(),I?.observe(S),H?.observe(S),W(true),F(),c&&t.onRevealed?.(u),P?t.onActivated?.(u):N();},isRevealed:u=>w.has(t.getKey(u)),isActivated:u=>R.has(t.getKey(u)),isSettledVisible:u=>o.has(t.getKey(u)),isScrolling:()=>O,notifyScroll:Q,refresh(){Z(),W(true),F(),N();},reset(){Y(),L(),j(false),J([]),$(),M.clear(),p.clear(),w.clear(),R.clear();},dispose(){D||(Y(),L(),j(false),J([]),$(),M.clear(),p.clear(),w.clear(),R.clear(),D=true);}}}function Mr(t){let a=new Map,v=new Map,f=false,m=p=>{let w=a.get(p.channel);return w===void 0?p.channel:`${p.channel}\0${w.getKey(p.item)}`},k=Ze({getRoot:t.getRoot,getKey:m,revealMarginPx:t.revealMarginPx,minimumIntersectionRatio:t.minimumIntersectionRatio,scrollIdleMs:t.scrollIdleMs,visibilityDwellMs:t.visibilityDwellMs,onScrollingChange:p=>{for(let w of a.values())w.onScrollingChange?.(p);},onRevealed:p=>a.get(p.channel)?.onRevealed?.(p.item),onActivated:p=>a.get(p.channel)?.onActivated?.(p.item),onSettledVisibleChange:p=>{for(let[w,R]of a){let o=p.filter(I=>I.channel===w).map(I=>I.item),d=R.maxSettledVisible===void 0?o:o.slice(0,R.maxSettledVisible);R.onSettledVisibleChange?.(d);}}});function M(p){return w=>{if(f)throw new Error("Thread visibility target group \u5DF2\u91CA\u653E");if(a.has(p))throw new Error(`Thread visibility channel \u5DF2\u5B58\u5728: ${p}`);a.set(p,w);let R=new Map;v.set(p,R);let o=false,d=O=>({channel:p,item:O});function I(){for(let O of R.values())k.register(O.target,null);R.clear(),w.onScrollingChange?.(false),w.onSettledVisibleChange?.([]);}return {register(O,D){if(o||f)return;let X=w.getKey(O),x=R.get(X);if(D===null){x!==void 0&&(k.register(x.target,null),R.delete(X));return}let U=d(O);R.set(X,{target:U,element:D}),k.register(U,D);},isRevealed:O=>k.isRevealed(d(O)),isActivated:O=>k.isActivated(d(O)),isSettledVisible:O=>k.isSettledVisible(d(O)),isScrolling:k.isScrolling,notifyScroll:k.notifyScroll,refresh:k.refresh,reset:I,dispose(){o||(I(),o=true,a.delete(p),v.delete(p));}}}}return {createFactory:M,refresh:k.refresh,dispose(){if(!f){for(let p of v.values())for(let w of p.values())k.register(w.target,null);v.clear(),a.clear(),k.dispose(),f=true;}}}}export{Ge as ImThreadBodySwitch,ze as ImThreadItems,hr as ImThreadSurface,Ye as ImThreadViewport,ur as createImThreadSurfaceContext,Tr as createMessageRendererRegistry,Mr as createThreadVisibilityTargetGroup,Ze as createThreadVisibilityTargets,cr as provideImThreadSurfaceContext,Gt as useImText,$e as useImThreadSurfaceContext,Yt as useOptionalImThreadReadActions};
|
package/dist/chat-kit.d.ts
CHANGED
|
@@ -613,12 +613,12 @@ interface ImMessage {
|
|
|
613
613
|
body: ImMessageBody;
|
|
614
614
|
/** P0 统一毫秒 number(本地创建时间,乐观渲染用)。 */
|
|
615
615
|
createdAt: number;
|
|
616
|
-
/**
|
|
616
|
+
/** SDK 内部排序键;有效服务端时间优先,ACK 后可以更新。宿主不解析它,消息身份始终使用 id。 */
|
|
617
617
|
sortKey: string;
|
|
618
618
|
status: MessageSendStatus;
|
|
619
619
|
/** 失败原因(status==='failed' 时)。 */
|
|
620
620
|
failure?: ImMessageFailure;
|
|
621
|
-
/**
|
|
621
|
+
/** 服务端回传的 epoch 毫秒时间;有效时用于正式排序与展示,createdAt 仍保留创建记录。 */
|
|
622
622
|
serverTime?: number;
|
|
623
623
|
/** P0 默认 'unread'。 */
|
|
624
624
|
receipt: MessageReceipt;
|
|
@@ -5509,7 +5509,7 @@ interface ConversationSearchPage<TType extends ProductHandleConversationType = P
|
|
|
5509
5509
|
/**
|
|
5510
5510
|
* 产品消息搜索结果;只暴露稳定定位身份和搜索面板所需的展示字段。
|
|
5511
5511
|
*
|
|
5512
|
-
* @remarks `
|
|
5512
|
+
* @remarks `createdAt` 是搜索面板展示时间,与线程一致优先使用服务端时间;结果不携带 sortKey 或 history cursor。
|
|
5513
5513
|
*/
|
|
5514
5514
|
interface ProductMessageSearchResult<TContent extends MessageContentType = MessageContentType> {
|
|
5515
5515
|
ref: ConversationRef<ProductHandleConversationType>;
|
|
@@ -8513,11 +8513,10 @@ interface FormatTimeDisplayContext {
|
|
|
8513
8513
|
*/
|
|
8514
8514
|
declare function resolveDisplayTimestamp(primary: number | null | undefined, fallback: number | null | undefined): number | undefined;
|
|
8515
8515
|
/**
|
|
8516
|
-
*
|
|
8516
|
+
* 解析气泡和日期条共用的消息时间,与 SDK 时间线排序来源保持一致。
|
|
8517
8517
|
*
|
|
8518
|
-
*
|
|
8519
|
-
*
|
|
8520
|
-
* 入站或旧数据缺少有效 `createdAt` 时才回退服务端时间。
|
|
8518
|
+
* 收到有效 `serverTime` 后采用服务端时间,避免设备时钟快慢导致气泡时间、日期条与正式顺序不一致。
|
|
8519
|
+
* 尚未确认的乐观消息或缺少有效服务端时间的旧数据保留 `createdAt`;不修改原始发送意图时间。
|
|
8521
8520
|
*/
|
|
8522
8521
|
declare function resolveMessageTimelineTimestamp(createdAt: number | null | undefined, serverTime: number | null | undefined): number | undefined;
|
|
8523
8522
|
/**
|
package/dist/chat-kit.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{c as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,b as DEFAULT_LOADING_SHOW_DELAY_MS,u as SPIKE_STEP,q as calculateMediaBox,f as canPromoteMediaPresentationSource,h as captureRuntimeClientOperation,g as captureRuntimeOperation,d as createDelayedLoadingIndicator,o as createLinkMatcher,s as formatFileSize,r as formatMediaDuration,t as getFileExtension,n as hasLinkCandidate,l as highlightSegments,i as mediaService,m as normalizeLinkHref,x as placeholderWaveform,j as readService,w as resampleWaveform,e as resolveBestMediaPresentationSource,a as resolveConversationListPresentation,p as resolveMediaPresentation,k as resolveQuotedMessagePresentation,v as spikeCountForDuration}from'./chunk-
|
|
1
|
+
export{c as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,b as DEFAULT_LOADING_SHOW_DELAY_MS,u as SPIKE_STEP,q as calculateMediaBox,f as canPromoteMediaPresentationSource,h as captureRuntimeClientOperation,g as captureRuntimeOperation,d as createDelayedLoadingIndicator,o as createLinkMatcher,s as formatFileSize,r as formatMediaDuration,t as getFileExtension,n as hasLinkCandidate,l as highlightSegments,i as mediaService,m as normalizeLinkHref,x as placeholderWaveform,j as readService,w as resampleWaveform,e as resolveBestMediaPresentationSource,a as resolveConversationListPresentation,p as resolveMediaPresentation,k as resolveQuotedMessagePresentation,v as spikeCountForDuration}from'./chunk-F5GJAS6A.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,L as MAX_BATCH_FILES,a as MAX_RECENT_EMOJI_COUNT,g as UNICODE_EMOJI_CATALOG,K as blockReasonForChannelSession,J as blockReasonForChannelState,Q as blockReasonForGroupState,T as blockReasonForSession,E as canEditMessage,u as canPinChannelMessage,t as canPinGroupMessage,v as canPinMessage,D as canRecallMessage,aa as cancelMediaUpload,O as classifyGifFile,s as createChatRuntime,p as createEmojiMatcher,G as decideConversationAction,I as decideMemberTargetAction,H as decideMessageAction,l as emojiAssetUrl,n as emojiUrlByCode,Aa as fetchConversationFileBatch,Ba as fetchConversationImageBatch,ya as fetchConversationMessageBatch,Ca as fetchConversationVideoBatch,Da as fetchConversationVoiceBatch,Ea as fetchNextConversationSearchBatch,da as forwardService,o as hasEmojiCandidate,P as isGifFile,w as isPinnedMessageProtected,X as isVoiceStorageConfigured,M as mediaBatchBudgetBytes,ia as messageService,e as parseUnicodeEmojiCode,na as pinnedMessageService,d as prependRecentEmoji,xa as profileService,W as replaceInterruptedMediaFile,R as requiresConversationEncryption,z as resolveChannelMemberAvatarUrl,y as resolveChannelMemberDisplayName,k as resolveEmojiToken,C as resolveFriendDisplayName,oa as resolveImProfileAccessDestination,x as resolveMemberDisplayName,r as resolveMessageNotificationDecision,B as resolvePublicNickname,A as resolveSenderAvatarUrl,q as resolveStandaloneEmojiMessage,h as resolveUnicodeEmoji,ba as retryMessage,N as runMediaSendBatch,$ as sendAsFilesBatch,F as sendBlockReasonForDecision,Z as sendMediaAlbum,V as sendMediaFile,_ as sendMediaFilesBatch,U as sendText,Y as sendVoice,S as supportsConversationMention,f as unicodeEmojiTextFromCode}from'./chunk-V7ULSSTZ.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-UNGWXAYA.js';import'./chunk-VMKTMZ3K.js';import'./chunk-SVJGRV4M.js';import'./chunk-GMVR64GN.js';export{ra as canTransmit,pa as canTransmitByType,qa as canTransmitContent,oa as requiresForwardTypeConfirmation}from'./chunk-LX7YEO5G.js';import'./chunk-WOT6VMZA.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {p}from'./chunk-FUEAUHMC.js';import {e,a as a$1}from'./chunk-YQSRQ25X.js';import {j,h}from'./chunk-HQ7FTY2C.js';import {fa}from'./chunk-W5SQGPRQ.js';import {a}from'./chunk-WOT6VMZA.js';var O=p();function G(e$1,n){let t=n.suppressDraft===true?null:e$1.draft,r=t?.text.trim()??"",i,o="",s="";return t!==null?i=r===""?[]:W(e$1,r,n.locale):$(e$1)?i=y(z(e$1,n)):e$1.lastMessageSummary?.kind==="channel-moderation-deleted"||e$1.lastMessageDeletedForEveryone!==void 0?i=y(x(e$1,e$1.lastMessageSummary?.kind==="channel-moderation-deleted"?e$1.lastMessageSummary:{kind:"channel-moderation-deleted",by:e$1.lastMessageDeletedForEveryone?.by??""},n)):e$1.lastMessageSummary?.kind==="recalled"||e$1.lastMessageRecalled!==void 0?i=y(x(e$1,e$1.lastMessageSummary?.kind==="recalled"?e$1.lastMessageSummary:{kind:"recalled",by:e$1.lastMessageRecalled?.by??""},n)):(o=Q(e$1,n),s=e$1.mentionUnreadCount>0?n.labels.mentionBadge:"",i=K(e$1,n)),{preview:`${s}${o}${i.map(d=>d.text).join("")}`||(t===null?n.labels.emptyPreview:""),previewSegments:i,...H(e$1,t!==null),senderPrefix:o,mentionBadge:s,time:e(a$1(t?.updatedAt,e$1.timestamp),{locale:n.locale,...n.now===void 0?{}:{now:n.now}}),hasDraft:t!==null}}function y(e){return [{kind:"text",text:e}]}function H(e,n){let t=e.lastMessageSummary;if(n||e.lastMessageDeletedForEveryone!==void 0||e.lastMessageRecalled!==void 0||e.lastMessageSystemEvent!==void 0||t===void 0)return {};if(t.kind==="mediaAlbum"){let{imageCount:r,videoCount:i,caption:o,firstItemKind:s}=t;return r<=0&&i<=0?{}:o!==void 0&&o!==""&&s!==void 0?{previewMediaKind:s}:r>0&&i>0?{previewMediaKind:"mediaAlbum"}:{previewMediaKind:i>0?"video":"image"}}return t.kind==="image"||t.kind==="video"||t.kind==="gif"||t.kind==="sticker"?{previewMediaKind:t.kind}:{}}function D(e){return e.map(n=>n.kind==="emoji"?{kind:"emoji",text:n.text,code:n.code}:{kind:n.kind,text:n.text})}function W(e,n,t){let r=e.draft?.mentions??[],i=[],o={},s=false;for(let d of r){if(d.userId==="0"){s=true;continue}i.includes(d.userId)||i.push(d.userId),d.displayName.trim()!==""&&(o[d.userId]=d.displayName);}let a=s||i.length>0?{atAll:s,atUserIds:i,...Object.keys(o).length===0?{}:{atUsersName:o}}:void 0;return D(fa(n,{mention:a,resolveName:d=>o[d]??d,atAllDisplay:j(t),matchers:[O]}))}function K(e,n){let t=e.lastMessageSummary;if(t!==void 0&&t.kind!=="text")return y(x(e,t,n));let r=(t?.kind==="text"?t.text:e.lastMessagePreview).trim();if(r==="")return y(n.labels.emptyPreview);let i=e.lastMessageMention?.atUsersName;return D(fa(r,{mention:e.lastMessageMention===void 0?void 0:{...e.lastMessageMention,atUserIds:[...e.lastMessageMention.atUserIds]},resolveName:o=>n.resolveName(e.ref,o,i?.[o]),selfId:n.accountId,atAllDisplay:j(n.locale),matchers:[O]}))}function x(e,n,t){return h(q(n),{locale:t.locale,selfId:t.accountId,resolveName:r=>t.resolveName(e.ref,r)})}function $(e){return e.lastMessageSummary?.kind==="system"||e.lastMessageSenderId==="system"||e.lastMessageSystemEvent!==void 0}function z(e,n){return e.lastMessageSummary?.kind==="system"?x(e,e.lastMessageSummary,n):e.lastMessageSystemEvent===void 0?e.lastMessagePreview.trim()||n.labels.emptyPreview:x(e,{kind:"system",system:{eventType:e.lastMessageSystemEvent,...e.lastMessageSystemTargetsSelf===true?{targetUserIds:[n.accountId]}:{},...e.lastMessagePreview.trim()===""?{}:{fallbackText:e.lastMessagePreview.trim()}}},n)}function Q(e,n){let t=e.lastMessageSenderId;return e.ref.conversationType!=="group"&&e.ref.conversationType!=="channel"||t===void 0||t===""||t==="system"?"":`${t===n.accountId?n.labels.selfSender:n.resolveName(e.ref,t)}: `}function q(e){return e.kind!=="system"?e:{kind:"system",system:{eventType:e.system.eventType,...e.system.operatorId===void 0?{}:{operatorId:e.system.operatorId},...e.system.targetUserIds===void 0?{}:{targetUserIds:[...e.system.targetUserIds]},...e.system.fallbackText===void 0?{}:{fallbackText:e.system.fallbackText}}}}var J=160,Y=220;function X(e){let n=Math.max(0,e.showDelayMs??160),t=Math.max(0,e.minimumVisibleMs??220),r=e.now??Date.now,i=e.setTimer??((c,M)=>setTimeout(c,M)),o=e.clearTimer??(c=>clearTimeout(c)),s="",a=false,d=false,l=0,u,f,p=false;function h(){u!==void 0&&o(u),u=void 0;}function m(){f!==void 0&&o(f),f=void 0;}function v(c){d!==c&&(d=c,l=c?r():0,e.onVisibleChange(c));}function C(c){h(),u=i(()=>{u=void 0,!(p||!a||s!==c)&&v(true);},n);}function j(){if(h(),!d)return;let c=t-Math.max(0,r()-l);if(c<=0){v(false);return}m(),f=i(()=>{f=void 0,!(p||a)&&v(false);},c);}return {update(c,M){if(p)return;if(s!==M){s=M,a=c,h(),m(),v(false),c&&C(M);return}if(a=c,c){m(),!d&&u===void 0&&C(M);return}j();},dispose(){p||(p=true,a=false,h(),m(),v(false));}}}var S={placeholder:0,thumbnail:1,local:2,original:3};function Z(e){let n;for(let t of e)t.value!==void 0&&(n===void 0||S[t.quality]>S[n.quality])&&(n=t);return n}function ee(e,n){return S[n]>=S[e]}function te(e){let n=e.getGeneration();return Object.freeze({isCurrent:()=>e.getGeneration()===n})}function E(e){let n=e.getClient();if(n===null)return null;let t=e.getGeneration();return Object.freeze({client:n,isCurrent:()=>e.getGeneration()===t&&e.getClient()===n})}var _={};a(_,{acquireMediaBlob:()=>re,detectImageMime:()=>U,detectVideoMime:()=>F,loadCachedImageObjectUrl:()=>ue,loadCachedMediaAlbumItemObjectUrl:()=>le,loadCachedVideoObjectUrl:()=>se,loadFileObjectUrl:()=>me,loadImageObjectUrl:()=>ce,loadMediaAlbumItemObjectUrl:()=>de,loadVideoObjectUrl:()=>ae,loadVoiceBytes:()=>oe,prepareLocalMediaPreview:()=>ie});function b(e,n){if(e.conversationType!=="supergroup")return {conversation:{conversationType:e.conversationType,conversationId:e.conversationId},messageId:e.id,...n===void 0?{}:{itemIndex:n}}}async function I(e,n,t,r){let i=e.getClient(),o=b(n,r);if(i===null||o===void 0)throw new Error("media download unavailable");let s=t===void 0?void 0:i.media.subscribe(a=>{let d=a.find(l=>l.direction==="download"&&l.messageId===o.messageId&&l.itemIndex===r&&l.ref.conversationType===o.conversation.conversationType&&l.ref.conversationId===o.conversation.conversationId);d!==void 0&&t(d.percent);});try{return await i.media.download(o)}finally{s?.();}}function ne(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="IM_SDK_MEDIA_DOWNLOAD_CANCELED"}async function ie(e,n){let t=e.getClient();if(t===null)return null;let r=e.getGeneration(),i=await t.media.prepareLocalPreview(n);return i===null||e.getGeneration()!==r?null:i}function U(e){return e.length>=3&&e[0]===255&&e[1]===216&&e[2]===255?"image/jpeg":e.length>=8&&e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71?"image/png":e.length>=6&&e[0]===71&&e[1]===73&&e[2]===70?"image/gif":e.length>=12&&e[8]===87&&e[9]===69&&e[10]===66&&e[11]===80?"image/webp":null}async function w(e){let n=new Uint8Array(await e.slice(0,12).arrayBuffer()),t=U(n);return t===null?null:URL.createObjectURL(e.type===t?e:e.slice(0,e.size,t))}function F(e){return e.length>=4&&e[0]===26&&e[1]===69&&e[2]===223&&e[3]===163?"video/webm":(e.length>=8&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112,"video/mp4")}function re(e,n,t){return e.acquireMediaBlob({conversationType:n.conversationType,conversationId:n.conversationId,messageId:n.id,...t===void 0?{}:{itemIndex:t}})}async function oe(e,n,t){let r=e.getClient(),i=n.body.voice;if(r===null||i===void 0)return null;let o=e.getSelfVoiceBytes(n.id);if(o!==void 0)return o;let s=e.getGeneration();try{let a=new Uint8Array(await(await I(e,n)).arrayBuffer());return a.length===0?(e.getGeneration()===s&&t.setNote(t.t("media.voiceLoadEmpty")),null):a}catch(a){return e.getGeneration()===s&&t.setNote(t.t("media.voiceLoadFailed",{reason:a instanceof Error?a.message:String(a)})),null}}async function ae(e,n,t,r){let i=e.getClient(),o=n.body.video;if(i===null||o===void 0)return null;let s=e.getGeneration();try{let a=await I(e,n,r);if(a.size===0)return e.getGeneration()===s&&t.setNote(t.t("media.videoOpenEmpty")),null;let d=URL.createObjectURL(a);return e.getGeneration()!==s?(URL.revokeObjectURL(d),null):d}catch(a){return e.getGeneration()===s&&t.setNote(t.t("media.videoLoadFailed",{reason:a instanceof Error?a.message:String(a)})),null}}async function se(e,n){let t=e.getClient(),r=b(n);if(t===null||r===void 0||n.body.video===void 0)return null;let i=e.getGeneration();try{let o=await t.media.getCached(r);if(o===null||o.size===0||e.getGeneration()!==i)return null;let s=new Uint8Array(await o.slice(0,12).arrayBuffer()),a=o.type||F(s);return e.getGeneration()!==i?null:URL.createObjectURL(o.type===a?o:o.slice(0,o.size,a))}catch{return null}}async function de(e,n,t,r,i){let o=e.getClient(),s=n.body.mediaAlbum?.items[t];if(o===null||s===void 0)return null;let a=s.kind==="video",d=e.getGeneration();try{let l=await I(e,n,i,t);if(a&&l.size===0)return e.getGeneration()===d&&r.setNote(r.t("media.videoOpenEmpty")),null;let u=a?URL.createObjectURL(l):await w(l);return u===null?(e.getGeneration()===d&&r.setNote(r.t("media.imageInvalid",{size:l.size})),null):e.getGeneration()!==d?(URL.revokeObjectURL(u),null):u}catch(l){return e.getGeneration()===d&&!ne(l)&&r.setNote(r.t(a?"media.videoLoadFailed":"media.imageLoadFailed",{reason:l instanceof Error?l.message:String(l)})),null}}async function le(e,n,t){let r=e.getClient(),i=n.body.mediaAlbum?.items[t],o=b(n,t);if(r===null||o===void 0||i===void 0||!/^https?:\/\//i.test(i.url))return null;let s=e.getGeneration();try{let a=await r.media.getCached(o);if(a===null||a.size===0||e.getGeneration()!==s)return null;let d=i.kind==="video"?URL.createObjectURL(a):await w(a);return d===null?null:e.getGeneration()!==s?(URL.revokeObjectURL(d),null):d}catch{return null}}async function ce(e,n,t){let r=e.getClient(),i=n.body.image;if(r===null||i===void 0)return null;let o=e.getGeneration();try{let s=await I(e,n),a=await w(s);return a===null?(e.getGeneration()===o&&t.setNote(t.t("media.imageInvalid",{size:s.size})),null):e.getGeneration()!==o?(URL.revokeObjectURL(a),null):a}catch(s){return e.getGeneration()===o&&t.setNote(t.t("media.imageLoadFailed",{reason:s instanceof Error?s.message:String(s)})),null}}async function ue(e,n){let t=e.getClient(),r=b(n);if(t===null||r===void 0||n.body.image===void 0)return null;let i=e.getGeneration();try{let o=await t.media.getCached(r);if(o===null||o.size===0||e.getGeneration()!==i)return null;let s=await w(o);return s===null?null:e.getGeneration()!==i?(URL.revokeObjectURL(s),null):s}catch{return null}}async function me(e,n,t,r){let i=e.getClient(),o=n.body.file;if(i===null||o===void 0)return null;let s=e.getGeneration();try{let a=await I(e,n,r);if(a.size===0)return e.getGeneration()===s&&t.setNote(t.t("media.fileDownloadEmpty")),null;let d=URL.createObjectURL(a);return e.getGeneration()!==s?(URL.revokeObjectURL(d),null):d}catch(a){return e.getGeneration()===s&&t.setNote(t.t("media.fileDownloadFailed",{reason:a instanceof Error?a.message:String(a)})),null}}var B={};a(B,{markReadUpTo:()=>fe});function fe(e,n,t,r){let i=E(e);if(i===null||n.conversationId===""||t==="")return;let o=i.client.conversations.list().find(a=>a.id===n.conversationId&&a.type===n.conversationType);if(o?.manuallyUnread===true&&o.unreadCount<=0){i.client.conversations.markConversationRead(n).catch(a=>{i.isCurrent()&&e.getDiagnostics().record("warn","chat-kit","conversation","clear-manual-unread-skipped",()=>({conversation:n,error:{message:"\u6E05\u9664\u624B\u5DE5\u672A\u8BFB\u63D0\u9192\u5931\u8D25",data:a}}));});return}if(o?.type==="group"&&o.unreadCount<=0)return;let s=r.getConversationHandle();s===void 0||s.ref.conversationId!==n.conversationId||s.ref.conversationType!==n.conversationType||s.markRead(t).catch(a=>{i.isCurrent()&&r.getConversationHandle()===s&&e.getDiagnostics().record("warn","chat-kit","message","mark-read-skipped",()=>({conversation:n,data:{messageId:t},error:{message:"markRead \u8DF3\u8FC7",data:a}}));});}function pe(e){return e.deletedForEveryone!==void 0?"hidden":e.recalled!==void 0?"recalled":"content"}function ge(e,n){if(n.length===0)return [{text:e,hit:false}];let t=[],r=0;for(let[i,o]of n)i>r&&t.push({text:e.slice(r,i),hit:false}),t.push({text:e.slice(i,o),hit:true}),r=o;return r<e.length&&t.push({text:e.slice(r),hit:false}),t}var he=/\b(?:https?:\/\/|www\.)[^\s<>"')】]+/gi,ve=/\b(?:https?:\/\/|www\.)/i,Me=/[),.!?;:,。!?;:、)】]+$/u;function V(e){let n=/^www\./i.test(e)?`https://${e}`:e;try{let t=new URL(n);return t.protocol==="http:"||t.protocol==="https:"?t.href:void 0}catch{return}}function ye(e){return ve.test(e)}function xe(){return e=>{let n=[];for(let t of e.matchAll(he)){if(t.index===void 0)continue;let r=t[0].replace(Me,"");if(r==="")continue;let i=V(r);i!==void 0&&n.push({start:t.index,end:t.index+r.length-1,segment:{kind:"link",text:r,href:i}});}return n}}function g(e,n){if(!Number.isFinite(e)||e<=0)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${n} \u5FC5\u987B\u662F\u5927\u4E8E 0 \u7684\u6709\u9650\u6570`)}function Ie(e){if(g(e.fallbackAspectRatio,"fallbackAspectRatio"),!Array.isArray(e.rules)||e.rules.length===0)throw new Error("\u5A92\u4F53\u5C55\u793A\u7B56\u7565 rules \u4E0D\u80FD\u4E3A\u7A7A");let n=new Set;e.rules.forEach((t,r)=>{let i=`rules[${r}]`;if(t.id.trim()==="")throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${i}.id \u4E0D\u80FD\u4E3A\u7A7A`);if(n.has(t.id))throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565\u89C4\u5219 id \u91CD\u590D\uFF1A${t.id}`);if(n.add(t.id),t.minAspectRatio!==void 0&&(!Number.isFinite(t.minAspectRatio)||t.minAspectRatio<0))throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${i}.minAspectRatio \u5FC5\u987B\u662F\u5927\u4E8E\u7B49\u4E8E 0 \u7684\u6709\u9650\u6570`);if(t.maxAspectRatio!==void 0&&g(t.maxAspectRatio,`${i}.maxAspectRatio`),t.minAspectRatio!==void 0&&t.maxAspectRatio!==void 0&&t.minAspectRatio>=t.maxAspectRatio)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${i} \u7684\u5BBD\u9AD8\u6BD4\u4E0B\u754C\u5FC5\u987B\u5C0F\u4E8E\u4E0A\u754C`);if(g(t.preferredWidth,`${i}.preferredWidth`),g(t.minWidth,`${i}.minWidth`),g(t.maxWidth,`${i}.maxWidth`),g(t.minHeight,`${i}.minHeight`),g(t.maxHeight,`${i}.maxHeight`),t.minWidth>t.preferredWidth||t.preferredWidth>t.maxWidth)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${i}.preferredWidth \u5FC5\u987B\u4F4D\u4E8E minWidth \u548C maxWidth \u4E4B\u95F4`);if(t.minHeight>t.maxHeight)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${i}.minHeight \u4E0D\u80FD\u5927\u4E8E maxHeight`);if(typeof t.allowUpscale!="boolean")throw new TypeError(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${i}.allowUpscale \u5FC5\u987B\u662F boolean`);if(t.fit!=="cover"&&t.fit!=="contain")throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${i}.fit \u53EA\u652F\u6301 cover \u6216 contain`)});}function Ce(e){let{intrinsicWidth:n,intrinsicHeight:t,availableWidth:r,policy:i}=e;g(r,"availableWidth"),Ie(i);let o=Number.isFinite(n)&&Number.isFinite(t)&&n>0&&t>0,s=o?n/t:i.fallbackAspectRatio,a=i.rules.find(m=>{let v=m.minAspectRatio===void 0||s>=m.minAspectRatio,C=m.maxAspectRatio===void 0||s<m.maxAspectRatio;return v&&C});if(a===void 0)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565\u6CA1\u6709\u5339\u914D\u5BBD\u9AD8\u6BD4 ${s}`);let d=!a.allowUpscale&&o?Math.min(a.preferredWidth,n):a.preferredWidth,l=Math.min(r,a.maxWidth,Math.max(a.minWidth,d)),u=Math.max(1,Math.round(l)),f=u/s,p=Math.min(a.maxHeight,Math.max(a.minHeight,f)),h=Math.max(1,Math.round(p));return {width:u,height:h,aspectRatio:u/h,sourceAspectRatio:s,ruleId:a.id,fit:a.fit,aspectClamped:p!==f}}function Se(e,n,t,r){if(!Number.isFinite(e)||!Number.isFinite(n)||e<=0||n<=0)return null;let i=Math.min(t/e,r/n,1);return {width:`${Math.max(1,Math.round(e*i))}px`,aspectRatio:`${e} / ${n}`}}function be(e){if(!Number.isFinite(e)||e<=0)return "0:00";let n=Math.floor(e),t=Math.floor(n/3600),r=Math.floor(n%3600/60),i=n%60,o=s=>s.toString().padStart(2,"0");return t>0?`${t}:${o(r)}:${o(i)}`:`${r}:${o(i)}`}function we(e){if(!Number.isFinite(e)||e<=0)return "0 B";let n=["B","KB","MB","GB","TB"],t=Math.min(n.length-1,Math.floor(Math.log(e)/Math.log(1024))),r=e/1024**t;return `${t===0?r:Math.round(r*10)/10} ${n[t]}`}function Pe(e){let n=e.lastIndexOf(".");return n>-1&&n<e.length-1?e.slice(n+1).toLowerCase():""}var Re=4;function Le(e){let n=Math.min(Math.max(e/1e3,0)/10,1);return Math.round(22+24*n)}function Ae(e,n){if(e.length===0)return Array.from({length:n},()=>0);let t=[],r=(e.length-1)/Math.max(1,n-1);for(let i=0;i<n;i+=1){let o=i*r,s=Math.round(o),a=e[Math.max(0,s-1)]??0,d=e[Math.min(e.length-1,s)]??0,l=e[Math.min(e.length-1,s+1)]??0;t.push((a+d+l)/3);}return t}function Te(e,n){let t=2166136261;for(let i=0;i<e.length;i+=1)t^=e.charCodeAt(i),t=Math.imul(t,16777619);let r=[];for(let i=0;i<n;i+=1)t=Math.imul(t^t>>>15,2246822519)>>>0,r.push(90+t%111);return r}
|
|
1
|
+
import {p}from'./chunk-V7ULSSTZ.js';import {e,a as a$1}from'./chunk-UNGWXAYA.js';import {j,h}from'./chunk-VMKTMZ3K.js';import {ha}from'./chunk-LX7YEO5G.js';import {a}from'./chunk-WOT6VMZA.js';var O=p();function G(e$1,n){let t=n.suppressDraft===true?null:e$1.draft,r=t?.text.trim()??"",i,o="",s="";return t!==null?i=r===""?[]:W(e$1,r,n.locale):$(e$1)?i=y(z(e$1,n)):e$1.lastMessageSummary?.kind==="channel-moderation-deleted"||e$1.lastMessageDeletedForEveryone!==void 0?i=y(x(e$1,e$1.lastMessageSummary?.kind==="channel-moderation-deleted"?e$1.lastMessageSummary:{kind:"channel-moderation-deleted",by:e$1.lastMessageDeletedForEveryone?.by??""},n)):e$1.lastMessageSummary?.kind==="recalled"||e$1.lastMessageRecalled!==void 0?i=y(x(e$1,e$1.lastMessageSummary?.kind==="recalled"?e$1.lastMessageSummary:{kind:"recalled",by:e$1.lastMessageRecalled?.by??""},n)):(o=Q(e$1,n),s=e$1.mentionUnreadCount>0?n.labels.mentionBadge:"",i=K(e$1,n)),{preview:`${s}${o}${i.map(d=>d.text).join("")}`||(t===null?n.labels.emptyPreview:""),previewSegments:i,...H(e$1,t!==null),senderPrefix:o,mentionBadge:s,time:e(a$1(t?.updatedAt,e$1.timestamp),{locale:n.locale,...n.now===void 0?{}:{now:n.now}}),hasDraft:t!==null}}function y(e){return [{kind:"text",text:e}]}function H(e,n){let t=e.lastMessageSummary;if(n||e.lastMessageDeletedForEveryone!==void 0||e.lastMessageRecalled!==void 0||e.lastMessageSystemEvent!==void 0||t===void 0)return {};if(t.kind==="mediaAlbum"){let{imageCount:r,videoCount:i,caption:o,firstItemKind:s}=t;return r<=0&&i<=0?{}:o!==void 0&&o!==""&&s!==void 0?{previewMediaKind:s}:r>0&&i>0?{previewMediaKind:"mediaAlbum"}:{previewMediaKind:i>0?"video":"image"}}return t.kind==="image"||t.kind==="video"||t.kind==="gif"||t.kind==="sticker"?{previewMediaKind:t.kind}:{}}function D(e){return e.map(n=>n.kind==="emoji"?{kind:"emoji",text:n.text,code:n.code}:{kind:n.kind,text:n.text})}function W(e,n,t){let r=e.draft?.mentions??[],i=[],o={},s=false;for(let d of r){if(d.userId==="0"){s=true;continue}i.includes(d.userId)||i.push(d.userId),d.displayName.trim()!==""&&(o[d.userId]=d.displayName);}let a=s||i.length>0?{atAll:s,atUserIds:i,...Object.keys(o).length===0?{}:{atUsersName:o}}:void 0;return D(ha(n,{mention:a,resolveName:d=>o[d]??d,atAllDisplay:j(t),matchers:[O]}))}function K(e,n){let t=e.lastMessageSummary;if(t!==void 0&&t.kind!=="text")return y(x(e,t,n));let r=(t?.kind==="text"?t.text:e.lastMessagePreview).trim();if(r==="")return y(n.labels.emptyPreview);let i=e.lastMessageMention?.atUsersName;return D(ha(r,{mention:e.lastMessageMention===void 0?void 0:{...e.lastMessageMention,atUserIds:[...e.lastMessageMention.atUserIds]},resolveName:o=>n.resolveName(e.ref,o,i?.[o]),selfId:n.accountId,atAllDisplay:j(n.locale),matchers:[O]}))}function x(e,n,t){return h(q(n),{locale:t.locale,selfId:t.accountId,resolveName:r=>t.resolveName(e.ref,r)})}function $(e){return e.lastMessageSummary?.kind==="system"||e.lastMessageSenderId==="system"||e.lastMessageSystemEvent!==void 0}function z(e,n){return e.lastMessageSummary?.kind==="system"?x(e,e.lastMessageSummary,n):e.lastMessageSystemEvent===void 0?e.lastMessagePreview.trim()||n.labels.emptyPreview:x(e,{kind:"system",system:{eventType:e.lastMessageSystemEvent,...e.lastMessageSystemTargetsSelf===true?{targetUserIds:[n.accountId]}:{},...e.lastMessagePreview.trim()===""?{}:{fallbackText:e.lastMessagePreview.trim()}}},n)}function Q(e,n){let t=e.lastMessageSenderId;return e.ref.conversationType!=="group"&&e.ref.conversationType!=="channel"||t===void 0||t===""||t==="system"?"":`${t===n.accountId?n.labels.selfSender:n.resolveName(e.ref,t)}: `}function q(e){return e.kind!=="system"?e:{kind:"system",system:{eventType:e.system.eventType,...e.system.operatorId===void 0?{}:{operatorId:e.system.operatorId},...e.system.targetUserIds===void 0?{}:{targetUserIds:[...e.system.targetUserIds]},...e.system.fallbackText===void 0?{}:{fallbackText:e.system.fallbackText}}}}var J=160,Y=220;function X(e){let n=Math.max(0,e.showDelayMs??160),t=Math.max(0,e.minimumVisibleMs??220),r=e.now??Date.now,i=e.setTimer??((c,M)=>setTimeout(c,M)),o=e.clearTimer??(c=>clearTimeout(c)),s="",a=false,d=false,l=0,u,f,p=false;function h(){u!==void 0&&o(u),u=void 0;}function m(){f!==void 0&&o(f),f=void 0;}function v(c){d!==c&&(d=c,l=c?r():0,e.onVisibleChange(c));}function C(c){h(),u=i(()=>{u=void 0,!(p||!a||s!==c)&&v(true);},n);}function j(){if(h(),!d)return;let c=t-Math.max(0,r()-l);if(c<=0){v(false);return}m(),f=i(()=>{f=void 0,!(p||a)&&v(false);},c);}return {update(c,M){if(p)return;if(s!==M){s=M,a=c,h(),m(),v(false),c&&C(M);return}if(a=c,c){m(),!d&&u===void 0&&C(M);return}j();},dispose(){p||(p=true,a=false,h(),m(),v(false));}}}var S={placeholder:0,thumbnail:1,local:2,original:3};function Z(e){let n;for(let t of e)t.value!==void 0&&(n===void 0||S[t.quality]>S[n.quality])&&(n=t);return n}function ee(e,n){return S[n]>=S[e]}function te(e){let n=e.getGeneration();return Object.freeze({isCurrent:()=>e.getGeneration()===n})}function E(e){let n=e.getClient();if(n===null)return null;let t=e.getGeneration();return Object.freeze({client:n,isCurrent:()=>e.getGeneration()===t&&e.getClient()===n})}var _={};a(_,{acquireMediaBlob:()=>re,detectImageMime:()=>U,detectVideoMime:()=>F,loadCachedImageObjectUrl:()=>ue,loadCachedMediaAlbumItemObjectUrl:()=>le,loadCachedVideoObjectUrl:()=>se,loadFileObjectUrl:()=>me,loadImageObjectUrl:()=>ce,loadMediaAlbumItemObjectUrl:()=>de,loadVideoObjectUrl:()=>ae,loadVoiceBytes:()=>oe,prepareLocalMediaPreview:()=>ie});function b(e,n){if(e.conversationType!=="supergroup")return {conversation:{conversationType:e.conversationType,conversationId:e.conversationId},messageId:e.id,...n===void 0?{}:{itemIndex:n}}}async function I(e,n,t,r){let i=e.getClient(),o=b(n,r);if(i===null||o===void 0)throw new Error("media download unavailable");let s=t===void 0?void 0:i.media.subscribe(a=>{let d=a.find(l=>l.direction==="download"&&l.messageId===o.messageId&&l.itemIndex===r&&l.ref.conversationType===o.conversation.conversationType&&l.ref.conversationId===o.conversation.conversationId);d!==void 0&&t(d.percent);});try{return await i.media.download(o)}finally{s?.();}}function ne(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="IM_SDK_MEDIA_DOWNLOAD_CANCELED"}async function ie(e,n){let t=e.getClient();if(t===null)return null;let r=e.getGeneration(),i=await t.media.prepareLocalPreview(n);return i===null||e.getGeneration()!==r?null:i}function U(e){return e.length>=3&&e[0]===255&&e[1]===216&&e[2]===255?"image/jpeg":e.length>=8&&e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71?"image/png":e.length>=6&&e[0]===71&&e[1]===73&&e[2]===70?"image/gif":e.length>=12&&e[8]===87&&e[9]===69&&e[10]===66&&e[11]===80?"image/webp":null}async function w(e){let n=new Uint8Array(await e.slice(0,12).arrayBuffer()),t=U(n);return t===null?null:URL.createObjectURL(e.type===t?e:e.slice(0,e.size,t))}function F(e){return e.length>=4&&e[0]===26&&e[1]===69&&e[2]===223&&e[3]===163?"video/webm":(e.length>=8&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112,"video/mp4")}function re(e,n,t){return e.acquireMediaBlob({conversationType:n.conversationType,conversationId:n.conversationId,messageId:n.id,...t===void 0?{}:{itemIndex:t}})}async function oe(e,n,t){let r=e.getClient(),i=n.body.voice;if(r===null||i===void 0)return null;let o=e.getSelfVoiceBytes(n.id);if(o!==void 0)return o;let s=e.getGeneration();try{let a=new Uint8Array(await(await I(e,n)).arrayBuffer());return a.length===0?(e.getGeneration()===s&&t.setNote(t.t("media.voiceLoadEmpty")),null):a}catch(a){return e.getGeneration()===s&&t.setNote(t.t("media.voiceLoadFailed",{reason:a instanceof Error?a.message:String(a)})),null}}async function ae(e,n,t,r){let i=e.getClient(),o=n.body.video;if(i===null||o===void 0)return null;let s=e.getGeneration();try{let a=await I(e,n,r);if(a.size===0)return e.getGeneration()===s&&t.setNote(t.t("media.videoOpenEmpty")),null;let d=URL.createObjectURL(a);return e.getGeneration()!==s?(URL.revokeObjectURL(d),null):d}catch(a){return e.getGeneration()===s&&t.setNote(t.t("media.videoLoadFailed",{reason:a instanceof Error?a.message:String(a)})),null}}async function se(e,n){let t=e.getClient(),r=b(n);if(t===null||r===void 0||n.body.video===void 0)return null;let i=e.getGeneration();try{let o=await t.media.getCached(r);if(o===null||o.size===0||e.getGeneration()!==i)return null;let s=new Uint8Array(await o.slice(0,12).arrayBuffer()),a=o.type||F(s);return e.getGeneration()!==i?null:URL.createObjectURL(o.type===a?o:o.slice(0,o.size,a))}catch{return null}}async function de(e,n,t,r,i){let o=e.getClient(),s=n.body.mediaAlbum?.items[t];if(o===null||s===void 0)return null;let a=s.kind==="video",d=e.getGeneration();try{let l=await I(e,n,i,t);if(a&&l.size===0)return e.getGeneration()===d&&r.setNote(r.t("media.videoOpenEmpty")),null;let u=a?URL.createObjectURL(l):await w(l);return u===null?(e.getGeneration()===d&&r.setNote(r.t("media.imageInvalid",{size:l.size})),null):e.getGeneration()!==d?(URL.revokeObjectURL(u),null):u}catch(l){return e.getGeneration()===d&&!ne(l)&&r.setNote(r.t(a?"media.videoLoadFailed":"media.imageLoadFailed",{reason:l instanceof Error?l.message:String(l)})),null}}async function le(e,n,t){let r=e.getClient(),i=n.body.mediaAlbum?.items[t],o=b(n,t);if(r===null||o===void 0||i===void 0||!/^https?:\/\//i.test(i.url))return null;let s=e.getGeneration();try{let a=await r.media.getCached(o);if(a===null||a.size===0||e.getGeneration()!==s)return null;let d=i.kind==="video"?URL.createObjectURL(a):await w(a);return d===null?null:e.getGeneration()!==s?(URL.revokeObjectURL(d),null):d}catch{return null}}async function ce(e,n,t){let r=e.getClient(),i=n.body.image;if(r===null||i===void 0)return null;let o=e.getGeneration();try{let s=await I(e,n),a=await w(s);return a===null?(e.getGeneration()===o&&t.setNote(t.t("media.imageInvalid",{size:s.size})),null):e.getGeneration()!==o?(URL.revokeObjectURL(a),null):a}catch(s){return e.getGeneration()===o&&t.setNote(t.t("media.imageLoadFailed",{reason:s instanceof Error?s.message:String(s)})),null}}async function ue(e,n){let t=e.getClient(),r=b(n);if(t===null||r===void 0||n.body.image===void 0)return null;let i=e.getGeneration();try{let o=await t.media.getCached(r);if(o===null||o.size===0||e.getGeneration()!==i)return null;let s=await w(o);return s===null?null:e.getGeneration()!==i?(URL.revokeObjectURL(s),null):s}catch{return null}}async function me(e,n,t,r){let i=e.getClient(),o=n.body.file;if(i===null||o===void 0)return null;let s=e.getGeneration();try{let a=await I(e,n,r);if(a.size===0)return e.getGeneration()===s&&t.setNote(t.t("media.fileDownloadEmpty")),null;let d=URL.createObjectURL(a);return e.getGeneration()!==s?(URL.revokeObjectURL(d),null):d}catch(a){return e.getGeneration()===s&&t.setNote(t.t("media.fileDownloadFailed",{reason:a instanceof Error?a.message:String(a)})),null}}var B={};a(B,{markReadUpTo:()=>fe});function fe(e,n,t,r){let i=E(e);if(i===null||n.conversationId===""||t==="")return;let o=i.client.conversations.list().find(a=>a.id===n.conversationId&&a.type===n.conversationType);if(o?.manuallyUnread===true&&o.unreadCount<=0){i.client.conversations.markConversationRead(n).catch(a=>{i.isCurrent()&&e.getDiagnostics().record("warn","chat-kit","conversation","clear-manual-unread-skipped",()=>({conversation:n,error:{message:"\u6E05\u9664\u624B\u5DE5\u672A\u8BFB\u63D0\u9192\u5931\u8D25",data:a}}));});return}if(o?.type==="group"&&o.unreadCount<=0)return;let s=r.getConversationHandle();s===void 0||s.ref.conversationId!==n.conversationId||s.ref.conversationType!==n.conversationType||s.markRead(t).catch(a=>{i.isCurrent()&&r.getConversationHandle()===s&&e.getDiagnostics().record("warn","chat-kit","message","mark-read-skipped",()=>({conversation:n,data:{messageId:t},error:{message:"markRead \u8DF3\u8FC7",data:a}}));});}function pe(e){return e.deletedForEveryone!==void 0?"hidden":e.recalled!==void 0?"recalled":"content"}function ge(e,n){if(n.length===0)return [{text:e,hit:false}];let t=[],r=0;for(let[i,o]of n)i>r&&t.push({text:e.slice(r,i),hit:false}),t.push({text:e.slice(i,o),hit:true}),r=o;return r<e.length&&t.push({text:e.slice(r),hit:false}),t}var he=/\b(?:https?:\/\/|www\.)[^\s<>"')】]+/gi,ve=/\b(?:https?:\/\/|www\.)/i,Me=/[),.!?;:,。!?;:、)】]+$/u;function V(e){let n=/^www\./i.test(e)?`https://${e}`:e;try{let t=new URL(n);return t.protocol==="http:"||t.protocol==="https:"?t.href:void 0}catch{return}}function ye(e){return ve.test(e)}function xe(){return e=>{let n=[];for(let t of e.matchAll(he)){if(t.index===void 0)continue;let r=t[0].replace(Me,"");if(r==="")continue;let i=V(r);i!==void 0&&n.push({start:t.index,end:t.index+r.length-1,segment:{kind:"link",text:r,href:i}});}return n}}function g(e,n){if(!Number.isFinite(e)||e<=0)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${n} \u5FC5\u987B\u662F\u5927\u4E8E 0 \u7684\u6709\u9650\u6570`)}function Ie(e){if(g(e.fallbackAspectRatio,"fallbackAspectRatio"),!Array.isArray(e.rules)||e.rules.length===0)throw new Error("\u5A92\u4F53\u5C55\u793A\u7B56\u7565 rules \u4E0D\u80FD\u4E3A\u7A7A");let n=new Set;e.rules.forEach((t,r)=>{let i=`rules[${r}]`;if(t.id.trim()==="")throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${i}.id \u4E0D\u80FD\u4E3A\u7A7A`);if(n.has(t.id))throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565\u89C4\u5219 id \u91CD\u590D\uFF1A${t.id}`);if(n.add(t.id),t.minAspectRatio!==void 0&&(!Number.isFinite(t.minAspectRatio)||t.minAspectRatio<0))throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${i}.minAspectRatio \u5FC5\u987B\u662F\u5927\u4E8E\u7B49\u4E8E 0 \u7684\u6709\u9650\u6570`);if(t.maxAspectRatio!==void 0&&g(t.maxAspectRatio,`${i}.maxAspectRatio`),t.minAspectRatio!==void 0&&t.maxAspectRatio!==void 0&&t.minAspectRatio>=t.maxAspectRatio)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${i} \u7684\u5BBD\u9AD8\u6BD4\u4E0B\u754C\u5FC5\u987B\u5C0F\u4E8E\u4E0A\u754C`);if(g(t.preferredWidth,`${i}.preferredWidth`),g(t.minWidth,`${i}.minWidth`),g(t.maxWidth,`${i}.maxWidth`),g(t.minHeight,`${i}.minHeight`),g(t.maxHeight,`${i}.maxHeight`),t.minWidth>t.preferredWidth||t.preferredWidth>t.maxWidth)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${i}.preferredWidth \u5FC5\u987B\u4F4D\u4E8E minWidth \u548C maxWidth \u4E4B\u95F4`);if(t.minHeight>t.maxHeight)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${i}.minHeight \u4E0D\u80FD\u5927\u4E8E maxHeight`);if(typeof t.allowUpscale!="boolean")throw new TypeError(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${i}.allowUpscale \u5FC5\u987B\u662F boolean`);if(t.fit!=="cover"&&t.fit!=="contain")throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${i}.fit \u53EA\u652F\u6301 cover \u6216 contain`)});}function Ce(e){let{intrinsicWidth:n,intrinsicHeight:t,availableWidth:r,policy:i}=e;g(r,"availableWidth"),Ie(i);let o=Number.isFinite(n)&&Number.isFinite(t)&&n>0&&t>0,s=o?n/t:i.fallbackAspectRatio,a=i.rules.find(m=>{let v=m.minAspectRatio===void 0||s>=m.minAspectRatio,C=m.maxAspectRatio===void 0||s<m.maxAspectRatio;return v&&C});if(a===void 0)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565\u6CA1\u6709\u5339\u914D\u5BBD\u9AD8\u6BD4 ${s}`);let d=!a.allowUpscale&&o?Math.min(a.preferredWidth,n):a.preferredWidth,l=Math.min(r,a.maxWidth,Math.max(a.minWidth,d)),u=Math.max(1,Math.round(l)),f=u/s,p=Math.min(a.maxHeight,Math.max(a.minHeight,f)),h=Math.max(1,Math.round(p));return {width:u,height:h,aspectRatio:u/h,sourceAspectRatio:s,ruleId:a.id,fit:a.fit,aspectClamped:p!==f}}function Se(e,n,t,r){if(!Number.isFinite(e)||!Number.isFinite(n)||e<=0||n<=0)return null;let i=Math.min(t/e,r/n,1);return {width:`${Math.max(1,Math.round(e*i))}px`,aspectRatio:`${e} / ${n}`}}function be(e){if(!Number.isFinite(e)||e<=0)return "0:00";let n=Math.floor(e),t=Math.floor(n/3600),r=Math.floor(n%3600/60),i=n%60,o=s=>s.toString().padStart(2,"0");return t>0?`${t}:${o(r)}:${o(i)}`:`${r}:${o(i)}`}function we(e){if(!Number.isFinite(e)||e<=0)return "0 B";let n=["B","KB","MB","GB","TB"],t=Math.min(n.length-1,Math.floor(Math.log(e)/Math.log(1024))),r=e/1024**t;return `${t===0?r:Math.round(r*10)/10} ${n[t]}`}function Pe(e){let n=e.lastIndexOf(".");return n>-1&&n<e.length-1?e.slice(n+1).toLowerCase():""}var Re=4;function Le(e){let n=Math.min(Math.max(e/1e3,0)/10,1);return Math.round(22+24*n)}function Ae(e,n){if(e.length===0)return Array.from({length:n},()=>0);let t=[],r=(e.length-1)/Math.max(1,n-1);for(let i=0;i<n;i+=1){let o=i*r,s=Math.round(o),a=e[Math.max(0,s-1)]??0,d=e[Math.min(e.length-1,s)]??0,l=e[Math.min(e.length-1,s+1)]??0;t.push((a+d+l)/3);}return t}function Te(e,n){let t=2166136261;for(let i=0;i<e.length;i+=1)t^=e.charCodeAt(i),t=Math.imul(t,16777619);let r=[];for(let i=0;i<n;i+=1)t=Math.imul(t^t>>>15,2246822519)>>>0,r.push(90+t%111);return r}
|
|
2
2
|
export{G as a,J as b,Y as c,X as d,Z as e,ee as f,te as g,E as h,_ as i,B as j,pe as k,ge as l,V as m,ye as n,xe as o,Ce as p,Se as q,be as r,we as s,Pe as t,Re as u,Le as v,Ae as w,Te as x};
|