k2-im 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/chat-kit-vue.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {h,C,p,i,q,m,z,j,g,B,o}from'./chunk-GHGVAACK.js';import {f,h as h$2,i as i$1,g as g$1}from'./chunk-OQT455AV.js';import'./chunk-CVBX4JM4.js';import'./chunk-K3DSNX5G.js';import'./chunk-AFW5LCKV.js';import'./chunk-WOT6VMZA.js';import {defineComponent,h as h$1,ref,provide,watch,nextTick,onMounted,onBeforeUnmount,computed,inject,isVNode,cloneVNode,Fragment}from'vue';function tt(e){return {systemMessage:n=>n.body.system!==void 0?g$1(n.body.system,{locale:e.locale(),resolveName:e.resolveName,selfId:e.selfId()}):"",mediaPlaceholder:n=>i$1(n.contentType,{locale:e.locale(),durationMs:n.body.voice?.durationMs,stickerImageType:n.body.sticker?.imageType,gameType:n.body.game?.gameType,callKind:n.body.call?.callKind}),lastMessage:n=>n.lastMessageSummary!==void 0?h$2(n.lastMessageSummary,{locale:e.locale(),resolveName:e.resolveName,selfId:e.selfId()}):n.lastMessagePreview,failureText:n=>n.failure?.displayCode!==void 0?f(n.failure.displayCode,{locale:e.locale(),mediaKind:n.failure.mediaKind,params:n.failure.params}):n.failure?.message??""}}var qe=Symbol("ImThreadReadActions");function We(e){provide(qe,e);}function ot(){return inject(qe,void 0)}var Ie=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(e,{attrs:n,slots:g}){return We(e.readActions),()=>{let u=h(e.message),p=e.rendererRegistry.resolve(u);return p!==void 0?h$1(p,{...n,message:e.message,presentation:e.presentation}):g["unsupported-body"]!==void 0?g["unsupported-body"]({kind:u,message:e.message}):h$1("span",{"data-im-thread-unsupported-body":u,"aria-hidden":"true"})}}});var we=Symbol("ImThreadViewportRegistration");function Ye(){return inject(we,void 0)}var Me=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(e,{slots:n}){let g=Ye();function u(r,d){let v=Array.isArray(d)?d:[d];return v.length===1&&isVNode(v[0])?cloneVNode(v[0],{key:r}):h$1(Fragment,{key:r},v)}function p(r){return d=>{g?.registerMessageNode(r,d instanceof HTMLElement?d:null);}}function M(r,d){return v=>{g?.registerDateNode(r,d,v instanceof HTMLElement?v:null);}}function R(r){return n.encryption?.({item:r})??h$1("div",{"data-im-thread-encryption":r.key})}function c(r){let d=M(r.key,r.label);return n["date-separator"]?.({item:r,setElement:d})??h$1("div",{ref:d,"data-im-thread-date-separator":r.key},r.label)}function T(r){return n["entry-unread"]?.({item:r})??h$1("div",{"data-im-thread-entry-unread":r.key,...r.count===void 0?{}:{"data-count":String(r.count)}})}function b(r){let d=p(r.message.id);return n.item!==void 0?n.item({item:r,setElement:d}):n.message!==void 0?n.message({item:r,setElement:d}):r.message.deletedForEveryone!==void 0?n["deleted-message"]?.({item:r,setElement:d})??h$1("article",{ref:d,"data-im-thread-message-id":r.message.id,"data-im-thread-message-terminal":"deleted-for-everyone"},[h$1("span",{"data-im-thread-anchor-point":""})]):r.message.recalled!==void 0?n["recalled-message"]?.({item:r,setElement:d})??h$1("article",{ref:d,"data-im-thread-message-id":r.message.id,"data-im-thread-message-terminal":"recalled"},[h$1("span",{"data-im-thread-anchor-point":""})]):r.kind==="system"&&n.system!==void 0?n.system({item:r,setElement:d}):h$1("article",{ref:d,"data-im-thread-message-id":r.message.id,"data-first-of-run":r.kind==="message"?String(r.firstOfRun):void 0},[h$1("span",{"data-im-thread-anchor-point":""}),h$1(Ie,{message:r.message,rendererRegistry:e.rendererRegistry,presentation:e.presentation,readActions:e.readActions},{"unsupported-body":n["unsupported-body"]===void 0?void 0:v=>n["unsupported-body"]?.(v)})])}return ()=>h$1("div",{"data-im-thread-items":""},e.items.map(r=>{switch(r.kind){case "encryption":return n.item!==void 0?u(r.key,n.item({item:r})):u(r.key,R(r));case "date-separator":return n.item!==void 0?u(r.key,n.item({item:r,setElement:M(r.key,r.label)})):u(r.key,c(r));case "entry-unread":return n.item!==void 0?u(r.key,n.item({item:r})):u(r.key,T(r));case "system":case "message":return u(r.key,b(r))}return r}))}});var Se=defineComponent({name:"ImThreadViewport",props:{messageIds:{type:Array,required:true},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":e=>true,settled:e=>true,"new-message-count":e=>true,"user-scroll":()=>true,"active-date-change":e=>true},setup(e,{emit:n,expose:g$1,slots:u}){let p$1=ref(null),M=new Map,R=new Map,c=new Set,T=new Map,b=0,r=[],d,v,N,A=false,V,G=new Set,P=false,F=0,W="",X=1,H=false,a=ref(true),$=ref(0),Y=C(o=>{$.value=o,n("new-message-count",o);});function L(o){let i=Number.isFinite(e.followThreshold)?Math.max(0,e.followThreshold):0;return o.scrollHeight-o.clientHeight-o.scrollTop<=i}function _(o=e.messageIds){return o.flatMap(i=>{let s=M.get(i);if(s===void 0)return [];let x=s.getBoundingClientRect(),S=s.querySelector("[data-im-thread-anchor-point]");return [{id:i,top:x.top,bottom:x.bottom,anchorTop:S?.getBoundingClientRect().top??x.top}]})}function J(o="",i=1){let s=Math.min(1,Math.max(0,i));W!==""&&W!==o&&T.get(W)?.element.style.removeProperty("opacity"),W=o,X=s,o!==""&&T.get(o)?.element.style.setProperty("opacity",String(s));}function B$1(){J();}function re(){let o=p$1.value;if(P||o===null||!e.activeDateEnabled)return;let i=[...T.entries()].filter(([,k])=>o.contains(k.element)).map(([k,D])=>{let j=D.element.getBoundingClientRect();return {key:k,label:D.label,top:j.top,height:j.height}}).sort((k,D)=>k.top-D.top),s=o.getBoundingClientRect(),x=i.find(k=>k.height>0)?.height??28,S=g({markers:i,viewportTop:s.top,overlayTop:Number.isFinite(e.activeDateOffset)?Math.max(0,e.activeDateOffset):0,overlayHeight:x});if(S===null){B$1(),n("active-date-change",null);return}J(S.inlineDateKey,S.inlineOpacity),n("active-date-change",S);}function q$1(){let o$1=p$1.value;if(P||o$1===null)return;let i=o$1.getBoundingClientRect(),s=N!==void 0&&A?e.messageIds.filter(D=>c.has(D)):e.messageIds,x=_(s);if(N!==void 0&&A&&x.length===0){a.value=L(o$1);return}let S=x.filter(D=>B({viewportTop:i.top,viewportBottom:i.bottom,messageTop:D.top,messageBottom:D.bottom,margin:e.visibleMargin})).map(D=>D.id),k=S.length!==r.length||S.some((D,j)=>r[j]!==D);r=Object.freeze(S),d=o(x,{top:i.top,bottom:i.bottom}),Y.acknowledgeVisible(S),a.value=L(o$1),k&&n("visible-range",r),n("settled",{visibleMessageIds:r,...r.length===0?{}:{newestVisibleMessageId:r[r.length-1]},isAtBottom:a.value,newMessageCount:$.value});}function ee(o){if(G.add(o),V!==void 0)return;let i=()=>{V=void 0;let s=[...G];G.clear(),s.forEach(x=>x());};typeof globalThis.requestAnimationFrame=="function"?V=globalThis.requestAnimationFrame(i):V=globalThis.setTimeout(i,0);}function f(){V!==void 0&&(typeof V=="number"&&typeof globalThis.cancelAnimationFrame=="function"?globalThis.cancelAnimationFrame(V):globalThis.clearTimeout(V),V=void 0,G.clear());}function I(){ee(q$1);}function y(){let o=p$1.value;if(P||o===null)return;let i=o.scrollTop;i!==b&&performance.now()>=F&&(n("user-scroll"),ee(re)),!e.loadingOlder&&m({previousScrollTop:b,currentScrollTop:i,topThreshold:e.olderPrefetchThreshold})&&n("reach-start"),!H&&!e.loadingOlder&&!e.loadingNewer&&e.hasNewer&&z({previousScrollTop:b,currentScrollTop:i,isAtBottom:L(o),isHistoryWindow:e.hasNewer,isPageSettling:performance.now()<F})&&(H=true,a.value=false,n("reach-end"),ee(()=>{e.loadingNewer||(H=false);})),b=i,I();}function h(o="auto"){F=performance.now()+(o==="smooth"?600:120);}function O(o){let i=p$1.value;if(i===null||o===void 0)return;let s=i.getBoundingClientRect(),x=q(o,_(),{top:s.top,bottom:s.bottom});x!==void 0&&(h(),i.scrollTop+=x,b=i.scrollTop);}function K(o="auto"){let i=p$1.value;i!==null&&(h(o),i.scrollTo?.({top:i.scrollHeight,behavior:o}),i.scrollTop!==i.scrollHeight&&(i.scrollTop=i.scrollHeight),b=i.scrollTop,Y.clear(),q$1());}function U(){let o=p$1.value;return o!==null&&o.clientWidth>0&&o.clientHeight>0}function Q(){let o=p$1.value;return U()&&o!==null&&o.scrollHeight>o.clientHeight+1}function he(o,i={}){let s=p$1.value,x=M.get(o);if(s===null||x===void 0||!s.contains(x)||s.clientHeight<=0)return false;let S=s.getBoundingClientRect(),k=x.getBoundingClientRect(),D=i.block??"center",j$1;D==="start"?j$1=s.scrollTop+k.top-S.top:D==="end"?j$1=s.scrollTop+k.bottom-S.bottom:D==="nearest"?k.top>=S.top&&k.bottom<=S.bottom?j$1=s.scrollTop:k.top<S.top?j$1=s.scrollTop+k.top-S.top:j$1=s.scrollTop+k.bottom-S.bottom:j$1=j({currentScrollTop:s.scrollTop,scrollHeight:s.scrollHeight,targetHeight:k.height,targetTop:k.top,viewportHeight:s.clientHeight,viewportTop:S.top});let ne=Math.max(0,s.scrollHeight-s.clientHeight),te=Math.min(ne,Math.max(0,j$1)),de=i.behavior??"auto";return h(de),s.scrollTo?.({top:te,behavior:de}),s.scrollTop!==te&&(s.scrollTop=te),b=s.scrollTop,q$1(),true}function Te(){Y.clear();}function pe(){H=true,a.value=false;}function se(){H=false,I();}function fe(o,i){let s=M.get(o);if(s!==void 0&&s!==i&&(N?.unobserve(s),v?.unobserve?.(s),R.delete(s),c.delete(o)),i===null){M.delete(o),c.delete(o);return}M.set(o,i),R.set(i,o),N?.observe(i),v?.observe(i),I();}function ye(o,i,s){let x=T.get(o);if(s===null){T.delete(o);return}T.set(o,{element:s,label:i}),W===o&&s.style.setProperty("opacity",String(X)),x?.element!==s&&(s.dataset.imThreadDateSeparator=o);}return provide(we,{registerMessageNode:fe,registerDateNode:ye}),watch(()=>e.messageIds,async(o,i)=>{let s=p$1.value;if(s===null)return;let x=s.getBoundingClientRect(),S=p(d,_(),{top:x.top,bottom:x.bottom}),k=a.value,D=new Set(i),j=i[i.length-1],ne=j===void 0?-1:o.indexOf(j),te=ne<0?[]:o.slice(ne+1).filter(l=>!D.has(l)),de=H||e.loadingNewer;if(await nextTick(),P)return;let me=i[0];if(me!==void 0&&o.indexOf(me)>0&&O(S),te.length>0){if(de){H=false,O(S),a.value=false,I();return}(k||te.some(m=>e.shouldFollowAppendedMessage?.(m)===true))&&e.followNewMessages?K():Y.add(te);}I();},{flush:"pre"}),watch(()=>e.loadingNewer,(o,i)=>{o||!i||!H||ee(()=>{e.loadingNewer||(H=false);});},{flush:"pre"}),onMounted(()=>{let o=p$1.value;if(o!==null){if(b=o.scrollTop,o.addEventListener("scroll",y,{passive:true}),typeof globalThis.ResizeObserver=="function"){v=new globalThis.ResizeObserver(()=>{let i=d;ee(()=>{p$1.value!==null&&(H||e.loadingNewer?O(i):e.resizeFollowEnabled&&a.value?K():O(i),q$1());});}),v.observe(o);for(let i of M.values())v.observe(i);}if(typeof globalThis.IntersectionObserver=="function"){N=new globalThis.IntersectionObserver(i=>{for(let s of i){let x=R.get(s.target);x!==void 0&&(s.isIntersecting?c.add(x):c.delete(x));}A=true,I();},{root:o,rootMargin:`${Number.isFinite(e.visibleMargin)?Math.max(0,e.visibleMargin):0}px 0px`});for(let i of M.values())N.observe(i);}I();}}),onBeforeUnmount(()=>{P=true;let o=p$1.value;o!==null&&o.removeEventListener("scroll",y),f(),v?.disconnect(),N?.disconnect(),B$1(),M.clear(),R.clear(),c.clear(),T.clear(),Y.clear();}),g$1({getViewportElement:()=>p$1.value,clearNewMessageBadge:Te,clearActiveDate:B$1,isAtBottom:computed(()=>a.value),isMeasurable:U,isScrollable:Q,newMessageCount:computed(()=>$.value),prepareHistoryPageAppend:pe,cancelHistoryPageAppend:se,trackRemoteMessageIds:(o,i)=>Y.trackRemote(o,i),scrollToLatest:K,scrollToMessage:he,focusViewport:()=>p$1.value?.focus({preventScroll:true})}),()=>h$1("div",{ref:p$1,"data-im-thread-viewport":"",role:"log",tabindex:-1},u.default?.())}});var Qe=Symbol("ImThreadSurfaceContext");function yt(e){if(typeof e.getState!="function")throw new TypeError("ImThreadSurfaceContext.getState \u5FC5\u987B\u662F\u51FD\u6570");if(typeof e.actions?.loadOlder!="function")throw new TypeError("ImThreadSurfaceContext.actions.loadOlder \u5FC5\u987B\u662F\u51FD\u6570");if(typeof e.formatDate!="function")throw new TypeError("ImThreadSurfaceContext.formatDate \u5FC5\u987B\u662F\u51FD\u6570");return Object.freeze({...e,actions:Object.freeze({...e.actions})})}function bt(e){provide(Qe,e);}function Ve(){let e=inject(Qe);if(e===void 0)throw new Error("ImThreadSurface \u9700\u8981\u663E\u5F0F context prop \u6216 provideImThreadSurfaceContext");return e}var Ae=Object.freeze({followThreshold:120,olderPrefetchThreshold:120,visibleReadDelay:300,visibleMargin:8,activeDateOffset:16,activeDateIdleDelay:1500}),Pe=Object.freeze({enabled:true,maxFillPages:8}),Mt=8,Rt=160;function St(e,n){return e?.conversationType===n.conversationType&&e.conversationId===n.conversationId}var Vt=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(e,{expose:n,slots:g}){let u=e.context??Ve(),p=ref(null),M=ref(0),R=ref(true),c=[],T,b=0,r=0,d=null,v="",N="",A="",V=false,G=false,P=ref(false),F=ref(""),W=ref(false),X,H,a=computed(()=>u.getState()),$=computed(()=>a.value.pageVisible??u.isPageVisible?.()??true),Y=computed(()=>a.value.pageEngaged??u.isPageEngaged?.()??true),L=computed(()=>St(a.value.activeConversation,e.conversation)),_=computed(()=>({...Ae,...e.viewportOptions})),J=computed(()=>{let t=e.initialViewportOptions.maxFillPages??Pe.maxFillPages;return {enabled:e.initialViewportOptions.enabled??Pe.enabled,maxFillPages:Number.isFinite(t)?Math.max(0,Math.floor(t)):Pe.maxFillPages}}),B=computed(()=>!L.value||!a.value.ready?"":`${e.conversation.conversationType}\0${e.conversation.conversationId}`),re=computed(()=>L.value?i({messages:a.value.messages,entryUnread:a.value.entryUnread,formatDate:u.formatDate,leadingItems:u.leadingItems?.(),beforeMessageItems:u.beforeMessageItems}):[]),q=computed(()=>re.value.flatMap(t=>t.kind==="message"||t.kind==="system"?[t.message.id]:[]));function ee(){X!==void 0&&(clearTimeout(X),X=void 0),H!==void 0&&(clearTimeout(H),H=void 0);}function f(t=false){if(ee(),W.value=false,t){p.value?.clearActiveDate(),F.value="";return}H=setTimeout(()=>{H=void 0,!W.value&&(p.value?.clearActiveDate(),F.value="");},Rt);}function I(t){if(t===null){f();return}ee(),F.value=t.label,W.value=true;let l=_.value.activeDateIdleDelay,m=Number.isFinite(l)?Math.max(0,l):Ae.activeDateIdleDelay;X=setTimeout(()=>{X=void 0,f();},m);}async function y(t,l){e.hooks?.beforeAction?.(t);try{let m=await l();return e.hooks?.afterAction?.(t,m),m}catch(m){throw e.hooks?.onError?.(t,m),m}}function h(){return !L.value||a.value.loading||!a.value.hasOlder?Promise.resolve(0):y({kind:"load-older"},()=>u.actions.loadOlder())}function O(){let t=u.actions.loadNewer,l=a.value.loadingNewer??a.value.loading;return !L.value||l||!a.value.hasNewer||t===void 0?Promise.resolve(0):y({kind:"load-newer"},()=>t())}async function K(t){for(let l=0;l<Mt;l+=1){if(!L.value)return;let m=t==="older"?a.value.hasOlder:a.value.hasNewer,w=t==="older"?a.value.olderError:a.value.newerError;if(!m||w!==null||(t==="older"?await h():await O())>0)return;let C=t==="older"?a.value.hasOlder:a.value.hasNewer,z=t==="older"?a.value.olderError:a.value.newerError;if(!C||z!==null)return}}async function U(){return !L.value||u.actions.loadNewer===void 0?0:y({kind:"load-newer"},()=>u.actions.retryNewer?.()??u.actions.loadNewer?.({force:!0})??Promise.resolve(0))}async function Q(){if(!L.value)return 0;let t=B.value;A="";let l;try{l=await y({kind:"retry-older"},()=>u.actions.retryOlder?.()??u.actions.loadOlder({force:!0}));}catch(m){throw B.value===t&&(A=t),m}return P.value||(d=null,ne()),l}async function he(){if(!L.value)return false;let t=await y({kind:"jump-to-latest"},()=>u.actions.jumpToLatest?.()??Promise.resolve(!a.value.isHistoryWindow));return t&&(await nextTick(),p.value?.scrollToLatest()),t}function Te(t){R.value=t.isAtBottom,M.value=t.newMessageCount,ne();}function pe(t,l){return p.value?.scrollToMessage(t,l)??false}function se(t,l){return !G&&r===l&&B.value===t&&L.value}async function fe(t,l,m,w){for(let E=0;E<60;E+=1){if(!se(t,l))return false;if(pe(m,w))return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(C=>window.requestAnimationFrame(()=>C()));}return false}async function ye(t,l,m){let w=p.value;if(w===null||!w.isMeasurable()||w.isScrollable())return true;let E=0,C=!a.value.hasOlder,z=!a.value.hasNewer||u.actions.loadNewer===void 0,ge=async()=>(await nextTick(),await nextTick(),fe(t,l,m,{behavior:"auto",block:"center"})),le=async ue=>{if(!se(t,l)||E>=J.value.maxFillPages)return false;let ve=0;if(ue==="older"){if(C||!a.value.hasOlder)return false;ve=await h(),C=!a.value.hasOlder;}else {if(z||!a.value.hasNewer)return false;w.prepareHistoryPageAppend();try{ve=await O();}catch(et){throw w.cancelHistoryPageAppend(),et}ve<=0&&!a.value.hasNewer&&w.cancelHistoryPageAppend(),z=!a.value.hasNewer;}return E+=1,ve>0?ge():!(ue==="older"?C:z)};!C&&!await le("older")&&(C=true),!z&&!await le("newer")&&(z=true);let be="older";for(;se(t,l)&&E<J.value.maxFillPages&&w.isMeasurable()&&!w.isScrollable()&&(!C||!z);){let ue=be==="older"?C?"newer":"older":z?"older":"newer";be=ue==="older"?"newer":"older",await le(ue)||(ue==="older"?C=true:z=true);}return se(t,l)}async function o(t,l={behavior:"auto",block:"center"}){if(!L.value||t==="")return false;let m=B.value,w=++r;if(!q.value.includes(t)){let z=u.actions.loadAround;if(z===void 0||!await y({kind:"locate-message",messageId:t},()=>z(t))||!se(m,w))return false}return !await fe(m,w,t,{...l,behavior:"auto"})||!await ye(m,w,t)?false:fe(m,w,t,l)}function i$1(){T!==void 0&&(clearTimeout(T),T=void 0);}function s(){if(i$1(),!P.value)return;let t=e.readActions;if(t===void 0||c.length===0)return;let l=Number.isFinite(_.value.visibleReadDelay)?Math.max(0,_.value.visibleReadDelay):Ae.visibleReadDelay;T=setTimeout(()=>{if(T=void 0,!L.value||!Y.value)return;let m=c[c.length-1];if(m===void 0)return;let w=t.resolveTarget===void 0?m:t.resolveTarget(m);w!=null&&Promise.resolve(t.markRead(w)).catch(E=>{e.hooks?.onError?.({kind:"visible-range",messageIds:c},E);});},l);}function x(t){c=Object.freeze([...t]);let l={kind:"visible-range",messageIds:c};e.hooks?.beforeAction?.(l);try{u.actions.onVisibleRange?.(c),e.hooks?.afterAction?.(l,void 0);}catch(m){throw e.hooks?.onError?.(l,m),m}P.value?s():ne();}function S(t,l){return !G&&b===l&&B.value===t&&!V}function k(t,l){S(t,l)&&(v=t,N=D(a.value.entryUnread),P.value=true,s());}function D(t){return t.state!=="located"?t.state:`${t.state}:${t.firstMessageId}`}async function j(t,l,m){for(let w=0;w<60;w+=1){if(!S(t,l))return false;if(p.value?.scrollToMessage(m,{behavior:"auto",block:"center"})===true)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(C=>window.requestAnimationFrame(()=>C()));}return false}function ne(){let t=B.value,l=D(a.value.entryUnread);if(t===""||a.value.loading||a.value.error!==null||v===t&&(N===l||V)||A===t||d!==null)return;if(!J.value.enabled){v=t,N=l,P.value=true,s();return}let m=++b;V=false,P.value=false;let w=(async()=>{if(await nextTick(),!S(t,m))return;let E=p.value;if(E===null||!E.isMeasurable())return;let C=a.value.entryUnread;if(C.state==="located"&&!q.value.includes(C.firstMessageId))return;let z=C.state==="located"?await j(t,m,C.firstMessageId):false;if(C.state==="located"&&!z)return;z||E.scrollToLatest();let ge=0;for(;S(t,m)&&ge<J.value.maxFillPages&&a.value.hasOlder&&E.isMeasurable()&&!E.isScrollable();)if(await h(),!S(t,m)||(ge+=1,await nextTick(),await nextTick(),!E.isMeasurable()))return;if(!S(t,m)||!E.isMeasurable())return;let le=a.value.entryUnread;if(le.state==="located"){if(!q.value.includes(le.firstMessageId)||!await j(t,m,le.firstMessageId))return}else E.scrollToLatest();await nextTick(),k(t,m);})().catch(()=>{B.value===t&&(A=t);}).finally(()=>{d===w&&(d=null);});d=w;}function te(t){b+=1,d=null,V=false,P.value=t,(v="",N="",A=""),i$1();}function de(){if(P.value)return;let t=B.value;V=true,b+=1,d=null,v=t,P.value=true,s();}let me=Object.freeze({getViewportElement:()=>p.value?.getViewportElement()??null,loadOlder:h,retryOlder:Q,loadNewer:O,retryNewer:U,jumpToLatest:he,scrollToMessage:pe,locateMessage:o,focusViewport:()=>p.value?.focusViewport()});return n(me),watch(Y,t=>{t&&P.value?s():i$1();}),watch([()=>a.value.activeRemoteMessageRevision??0,p,B],()=>{let t=p.value;if(t===null||!L.value)return;let l=u.actions.drainActiveRemoteMessageIds?.()??[];t.trackRemoteMessageIds(l,{isAtBottom:R.value,isHistoryWindow:a.value.isHistoryWindow,isPageVisible:$.value})&&(R.value=false);},{flush:"post"}),watch([B,()=>a.value.loading,()=>a.value.error,()=>q.value.length,()=>a.value.hasOlder,()=>D(a.value.entryUnread),J],([t,l,m,,,w],[E,,,,,C])=>{if(t!==E&&(r+=1,te(false),f(true),p.value?.clearNewMessageBadge(),M.value=0,R.value=true),t!==""&&t===E&&w!==C&&!V&&w.startsWith("located:")&&(v="",N="",P.value=false),t===""||m!==null){te(false);return}l||ne();},{flush:"post",immediate:true}),onBeforeUnmount(()=>{G=true,r+=1,te(false),f(true);}),()=>{let t={conversation:e.conversation,state:a.value,items:re.value,actions:me},l=[g.header?.(t),g["before-list"]?.(t)];if(!L.value)l.push(g.unsupported?.(t)??h$1("div",{"data-im-thread-unsupported":""}));else if(!a.value.ready&&a.value.loading)l.push(g.loading?.(t)??h$1("div",{"data-im-thread-loading":""}));else if(a.value.error!==null&&a.value.messages.length===0)l.push(g.error?.(t)??h$1("div",{"data-im-thread-error":""}));else if(a.value.ready&&a.value.messages.length===0&&!a.value.hasOlder)l.push(g.empty?.(t)??h$1("div",{"data-im-thread-empty":""}));else {let m=h$1(Se,{ref:p,messageIds:q.value,loadingOlder:a.value.loadingOlder??a.value.loading,hasNewer:a.value.hasNewer,loadingNewer:a.value.loadingNewer??a.value.loading,followThreshold:_.value.followThreshold,olderPrefetchThreshold:_.value.olderPrefetchThreshold,visibleMargin:_.value.visibleMargin,activeDateOffset:_.value.activeDateOffset,activeDateEnabled:g["active-date"]!==void 0,resizeFollowEnabled:P.value,followNewMessages:$.value,shouldFollowAppendedMessage:w=>{let E=a.value.messages.find(C=>C.id===w);return E===void 0?false:u.shouldFollowMessage?.(E)===true},onReachStart:()=>{K("older").catch(()=>{});},onReachEnd:()=>{K("newer").catch(()=>{});},onSettled:Te,onUserScroll:de,onActiveDateChange:I,onVisibleRange:x,onNewMessageCount:w=>{M.value=w;}},{default:()=>[g["viewport-before"]?.(t),h$1(Me,{items:re.value,rendererRegistry:e.rendererRegistry,presentation:e.presentation,readActions:e.readActions},{item:g.item,"date-separator":g["date-separator"],"entry-unread":g["entry-unread"],encryption:g.encryption,system:g.system,message:g.message,"recalled-message":g["recalled-message"],"deleted-message":g["deleted-message"],"unsupported-body":g["unsupported-body"]}),g["viewport-after"]?.(t)]});l.push(h$1("div",{"data-im-thread-viewport-shell":""},[g["active-date"]?.({label:F.value,visible:W.value&&F.value!==""}),m])),a.value.error!==null&&l.push(g.error?.(t)??h$1("div",{"data-im-thread-error":""}));}return l.push(g["after-list"]?.(t),g["jump-to-latest"]?.({...t,count:M.value,visible:!R.value||a.value.isHistoryWindow}),g["context-menu"]?.(t),g.composer?.(t)),h$1("section",{"data-im-thread-surface":"","data-conversation-type":e.conversation.conversationType,"data-conversation-id":e.conversation.conversationId},l)}}});function xt(e){let n=new Map;for(let u of e){if(n.has(u.kind))throw new Error(`\u6D88\u606F renderer kind \u91CD\u590D\u6CE8\u518C\uFF1A${u.kind}`);n.set(u.kind,u.component);}let g=Object.freeze([...n.keys()]);return Object.freeze({kinds:g,resolve:u=>n.get(u)})}function Ze(e,n){if(e.width<=0||e.height<=0)return 0;let g=Math.max(0,Math.min(e.right,n.right)-Math.max(e.left,n.left)),u=Math.max(0,Math.min(e.bottom,n.bottom)-Math.max(e.top,n.top));return Math.min(1,g*u/(e.width*e.height))}function At(e,n){return {x:e.x,y:e.top-n,top:e.top-n,bottom:e.bottom+n,left:e.left,right:e.right,width:e.width,height:e.height+n*2,toJSON:()=>({})}}function Oe(e){let n=Math.max(0,e.scrollIdleMs??140),g=Math.max(0,e.visibilityDwellMs??120),u=Math.min(1,Math.max(0,e.minimumIntersectionRatio??.01)),p=Math.max(0,e.revealMarginPx??0),M=Math.max(1,e.maxSettledVisible??Number.POSITIVE_INFINITY),R=new Map,c=new Map,T=new Set,b=new Set,r=new Set,d=null,v=null,N=null,A=false,V=false,G=false,P,F;function W(){P!==void 0&&clearTimeout(P),P=void 0;}function X(){F!==void 0&&clearTimeout(F),F=void 0;}function H(f=false){if(!f&&v!==null||d===null)return;let I=d.getBoundingClientRect(),y=At(I,p);for(let[h,O]of R){let K=h.getBoundingClientRect();O.ratio=Ze(K,I),O.intersecting=O.ratio>0,O.revealIntersecting=p>0?Ze(K,y)>0:O.intersecting&&O.ratio>=u;}}function a(f){return f.intersecting&&f.ratio>=u}function $(){for(let f of R.values())!f.revealIntersecting||T.has(f.key)||(T.add(f.key),e.onRevealed?.(f.item));}function Y(f){let I=new Set(f.map(h=>h.key));if(I.size!==r.size||[...I].some(h=>!r.has(h))){r.clear();for(let h of I)r.add(h);e.onSettledVisibleChange?.(f.map(h=>h.item));}}function L(){if(V||A)return;H(),$();let f=d?.getBoundingClientRect(),I=f===void 0?0:(f.top+f.bottom)/2,y=[...R.entries()].filter(([,h])=>a(h)).sort(([h],[O])=>{let K=h.getBoundingClientRect(),U=O.getBoundingClientRect();return Math.abs((K.top+K.bottom)/2-I)-Math.abs((U.top+U.bottom)/2-I)}).slice(0,M).map(([,h])=>h);Y(y);for(let h of y)b.has(h.key)||(b.add(h.key),e.onActivated?.(h.item));}function _(){V||A||(X(),F=setTimeout(()=>{F=void 0,L();},g));}function J(){V||(B(true),H(),$(),Y([]),X(),W(),P=setTimeout(()=>{P=void 0,B(false),_();},n));}function B(f){A!==f&&(A=f,e.onScrollingChange?.(f));}function re(){d?.removeEventListener("scroll",J),v?.disconnect(),N?.disconnect(),v=null,N=null,d=null;}function q(f=true){if(V)return;let I=e.getRoot();if(!(I===d&&d!==null)){if(re(),d=I,d===null){f&&!G&&(G=true,Promise.resolve().then(()=>{G=false,V||(q(false),_());}));return}if(d.addEventListener("scroll",J,{passive:true}),typeof IntersectionObserver<"u"){v=new IntersectionObserver(y=>{for(let h of y){let O=R.get(h.target);O!==void 0&&(O.intersecting=h.isIntersecting,O.ratio=h.intersectionRatio,p===0&&(O.revealIntersecting=h.isIntersecting&&h.intersectionRatio>=u));}$(),_();},{root:d,threshold:[0,u,1]}),p>0&&(N=new IntersectionObserver(y=>{for(let h of y){let O=R.get(h.target);O!==void 0&&(O.revealIntersecting=h.isIntersecting);}$();},{root:d,rootMargin:`${p}px 0px`,threshold:0}));for(let y of R.keys())v.observe(y);for(let y of R.keys())N?.observe(y);}else H(),$();}}function ee(f){T.delete(f),b.delete(f),r.delete(f);}return {register(f,I){if(V)return;let y=e.getKey(f),h=T.has(y),O=b.has(y),K=I===null?void 0:R.get(I);K!==void 0&&K.key!==y&&(c.delete(K.key),R.delete(I),ee(K.key));let U=c.get(y);if(U!==void 0&&U!==I&&(v?.unobserve(U),N?.unobserve(U),R.delete(U),c.delete(y)),I===null){U!==void 0&&(v?.unobserve(U),N?.unobserve(U),R.delete(U),c.delete(y)),ee(y);return}let Q=R.get(I);if(Q?.key===y&&Q.item===f){q();return}R.set(I,{item:f,key:y,intersecting:Q?.key===y?Q.intersecting:false,ratio:Q?.key===y?Q.ratio:0,revealIntersecting:Q?.key===y?Q.revealIntersecting:false}),c.set(y,I),q(),v?.observe(I),N?.observe(I),H(true),$(),h&&e.onRevealed?.(f),O?e.onActivated?.(f):_();},isRevealed:f=>T.has(e.getKey(f)),isActivated:f=>b.has(e.getKey(f)),isSettledVisible:f=>r.has(e.getKey(f)),isScrolling:()=>A,notifyScroll:J,refresh(){q(),H(true),$(),_();},reset(){W(),X(),B(false),Y([]),re(),R.clear(),c.clear(),T.clear(),b.clear();},dispose(){V||(W(),X(),B(false),Y([]),re(),R.clear(),c.clear(),T.clear(),b.clear(),V=true);}}}function Pt(e){let n=new Map,g=new Map,u=false,p=c=>{let T=n.get(c.channel);return T===void 0?c.channel:`${c.channel}\0${T.getKey(c.item)}`},M=Oe({getRoot:e.getRoot,getKey:p,revealMarginPx:e.revealMarginPx,minimumIntersectionRatio:e.minimumIntersectionRatio,scrollIdleMs:e.scrollIdleMs,visibilityDwellMs:e.visibilityDwellMs,onScrollingChange:c=>{for(let T of n.values())T.onScrollingChange?.(c);},onRevealed:c=>n.get(c.channel)?.onRevealed?.(c.item),onActivated:c=>n.get(c.channel)?.onActivated?.(c.item),onSettledVisibleChange:c=>{for(let[T,b]of n){let r=c.filter(v=>v.channel===T).map(v=>v.item),d=b.maxSettledVisible===void 0?r:r.slice(0,b.maxSettledVisible);b.onSettledVisibleChange?.(d);}}});function R(c){return T=>{if(u)throw new Error("Thread visibility target group \u5DF2\u91CA\u653E");if(n.has(c))throw new Error(`Thread visibility channel \u5DF2\u5B58\u5728: ${c}`);n.set(c,T);let b=new Map;g.set(c,b);let r=false,d=A=>({channel:c,item:A});function v(){for(let A of b.values())M.register(A.target,null);b.clear(),T.onScrollingChange?.(false),T.onSettledVisibleChange?.([]);}return {register(A,V){if(r||u)return;let G=T.getKey(A),P=b.get(G);if(V===null){P!==void 0&&(M.register(P.target,null),b.delete(G));return}let F=d(A);b.set(G,{target:F,element:V}),M.register(F,V);},isRevealed:A=>M.isRevealed(d(A)),isActivated:A=>M.isActivated(d(A)),isSettledVisible:A=>M.isSettledVisible(d(A)),isScrolling:M.isScrolling,notifyScroll:M.notifyScroll,refresh:M.refresh,reset:v,dispose(){r||(v(),r=true,n.delete(c),g.delete(c));}}}}return {createFactory:R,refresh:M.refresh,dispose(){if(!u){for(let c of g.values())for(let T of c.values())M.register(T.target,null);g.clear(),n.clear(),M.dispose(),u=true;}}}}export{Ie as ImThreadBodySwitch,Me as ImThreadItems,Vt as ImThreadSurface,Se as ImThreadViewport,yt as createImThreadSurfaceContext,xt as createMessageRendererRegistry,Pt as createThreadVisibilityTargetGroup,Oe as createThreadVisibilityTargets,bt as provideImThreadSurfaceContext,tt as useImText,Ve as useImThreadSurfaceContext,ot as useOptionalImThreadReadActions};
|
|
1
|
+
import {h,C,p,i,q,m,z,j,g,B,o}from'./chunk-2WDWWQQI.js';import {f,h as h$2,i as i$1,g as g$1}from'./chunk-OQT455AV.js';import'./chunk-CVBX4JM4.js';import'./chunk-K3DSNX5G.js';import'./chunk-AFW5LCKV.js';import'./chunk-WOT6VMZA.js';import {defineComponent,h as h$1,ref,provide,watch,nextTick,onMounted,onBeforeUnmount,computed,inject,isVNode,cloneVNode,Fragment}from'vue';function tt(e){return {systemMessage:o=>o.body.system!==void 0?g$1(o.body.system,{locale:e.locale(),resolveName:e.resolveName,selfId:e.selfId()}):"",mediaPlaceholder:o=>i$1(o.contentType,{locale:e.locale(),durationMs:o.body.voice?.durationMs,stickerImageType:o.body.sticker?.imageType,gameType:o.body.game?.gameType,callKind:o.body.call?.callKind}),lastMessage:o=>o.lastMessageSummary!==void 0?h$2(o.lastMessageSummary,{locale:e.locale(),resolveName:e.resolveName,selfId:e.selfId()}):o.lastMessagePreview,failureText:o=>o.failure?.displayCode!==void 0?f(o.failure.displayCode,{locale:e.locale(),mediaKind:o.failure.mediaKind,params:o.failure.params}):o.failure?.message??""}}var We=Symbol("ImThreadReadActions");function $e(e){provide(We,e);}function ot(){return inject(We,void 0)}var Ie=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(e,{attrs:o,slots:g}){return $e(e.readActions),()=>{let u=h(e.message),p=e.rendererRegistry.resolve(u);return p!==void 0?h$1(p,{...o,message:e.message,presentation:e.presentation}):g["unsupported-body"]!==void 0?g["unsupported-body"]({kind:u,message:e.message}):h$1("span",{"data-im-thread-unsupported-body":u,"aria-hidden":"true"})}}});var we=Symbol("ImThreadViewportRegistration");function Xe(){return inject(we,void 0)}var Me=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(e,{slots:o}){let g=Xe();function u(r,d){let h=Array.isArray(d)?d:[d];return h.length===1&&isVNode(h[0])?cloneVNode(h[0],{key:r}):h$1(Fragment,{key:r},h)}function p(r){return d=>{g?.registerMessageNode(r,d instanceof HTMLElement?d:null);}}function M(r,d){return h=>{g?.registerDateNode(r,d,h instanceof HTMLElement?h:null);}}function R(r){return o.encryption?.({item:r})??h$1("div",{"data-im-thread-encryption":r.key})}function f(r){let d=M(r.key,r.label);return o["date-separator"]?.({item:r,setElement:d})??h$1("div",{ref:d,"data-im-thread-date-separator":r.key},r.label)}function y(r){return o["entry-unread"]?.({item:r})??h$1("div",{"data-im-thread-entry-unread":r.key,...r.count===void 0?{}:{"data-count":String(r.count)}})}function I(r){let d=p(r.message.id);return o.item!==void 0?o.item({item:r,setElement:d}):o.message!==void 0?o.message({item:r,setElement:d}):r.message.deletedForEveryone!==void 0?o["deleted-message"]?.({item:r,setElement:d})??h$1("article",{ref:d,"data-im-thread-message-id":r.message.id,"data-im-thread-message-terminal":"deleted-for-everyone"},[h$1("span",{"data-im-thread-anchor-point":""})]):r.message.recalled!==void 0?o["recalled-message"]?.({item:r,setElement:d})??h$1("article",{ref:d,"data-im-thread-message-id":r.message.id,"data-im-thread-message-terminal":"recalled"},[h$1("span",{"data-im-thread-anchor-point":""})]):r.kind==="system"&&o.system!==void 0?o.system({item:r,setElement:d}):h$1("article",{ref:d,"data-im-thread-message-id":r.message.id,"data-first-of-run":r.kind==="message"?String(r.firstOfRun):void 0},[h$1("span",{"data-im-thread-anchor-point":""}),h$1(Ie,{message:r.message,rendererRegistry:e.rendererRegistry,presentation:e.presentation,readActions:e.readActions},{"unsupported-body":o["unsupported-body"]===void 0?void 0:h=>o["unsupported-body"]?.(h)})])}return ()=>h$1("div",{"data-im-thread-items":""},e.items.map(r=>{switch(r.kind){case "encryption":return o.item!==void 0?u(r.key,o.item({item:r})):u(r.key,R(r));case "date-separator":return o.item!==void 0?u(r.key,o.item({item:r,setElement:M(r.key,r.label)})):u(r.key,f(r));case "entry-unread":return o.item!==void 0?u(r.key,o.item({item:r})):u(r.key,y(r));case "system":case "message":return u(r.key,I(r))}return r}))}});var Ve=defineComponent({name:"ImThreadViewport",props:{messageIds:{type:Array,required:true},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":e=>true,settled:e=>true,"new-message-count":e=>true,"user-scroll":()=>true,"active-date-change":e=>true},setup(e,{emit:o$1,expose:g$1,slots:u}){let p$1=ref(null),M=new Map,R=new Map,f=new Set,y=new Map,I=0,r=[],d,h,D,V=false,S,z$1=new Set,x=false,j$1=0,W="",$=1,N=false,a=false,B$1=ref(true),Z=ref(0),H=C(n=>{Z.value=n,o$1("new-message-count",n);});function G(n){let i=Number.isFinite(e.followThreshold)?Math.max(0,e.followThreshold):0;return n.scrollHeight-n.clientHeight-n.scrollTop<=i}function Y(n=e.messageIds){return n.flatMap(i=>{let s=M.get(i);if(s===void 0)return [];let w=s.getBoundingClientRect(),E=s.querySelector("[data-im-thread-anchor-point]");return [{id:i,top:w.top,bottom:w.bottom,anchorTop:E?.getBoundingClientRect().top??w.top}]})}function _(n="",i=1){let s=Math.min(1,Math.max(0,i));W!==""&&W!==n&&y.get(W)?.element.style.removeProperty("opacity"),W=n,$=s,n!==""&&y.get(n)?.element.style.setProperty("opacity",String(s));}function ee(){_();}function J(){let n=p$1.value;if(x||n===null||!e.activeDateEnabled)return;let i=[...y.entries()].filter(([,C])=>n.contains(C.element)).map(([C,L])=>{let F=L.element.getBoundingClientRect();return {key:C,label:L.label,top:F.top,height:F.height}}).sort((C,L)=>C.top-L.top),s=n.getBoundingClientRect(),w=i.find(C=>C.height>0)?.height??28,E=g({markers:i,viewportTop:s.top,overlayTop:Number.isFinite(e.activeDateOffset)?Math.max(0,e.activeDateOffset):0,overlayHeight:w});if(E===null){ee(),o$1("active-date-change",null);return}_(E.inlineDateKey,E.inlineOpacity),o$1("active-date-change",E);}function te(){let n=p$1.value;if(x||n===null)return;let i=n.getBoundingClientRect(),s=D!==void 0&&V?e.messageIds.filter(L=>f.has(L)):e.messageIds,w=Y(s);if(D!==void 0&&V&&w.length===0){B$1.value=G(n);return}let E=w.filter(L=>B({viewportTop:i.top,viewportBottom:i.bottom,messageTop:L.top,messageBottom:L.bottom,margin:e.visibleMargin})).map(L=>L.id),C=E.length!==r.length||E.some((L,F)=>r[F]!==L);r=Object.freeze(E),d=o(w,{top:i.top,bottom:i.bottom}),H.acknowledgeVisible(E),B$1.value=G(n),C&&o$1("visible-range",r),o$1("settled",{visibleMessageIds:r,...r.length===0?{}:{newestVisibleMessageId:r[r.length-1]},isAtBottom:B$1.value,newMessageCount:Z.value});}function c(n){if(z$1.add(n),S!==void 0)return;let i=()=>{S=void 0;let s=[...z$1];z$1.clear(),s.forEach(w=>w());};typeof globalThis.requestAnimationFrame=="function"?S=globalThis.requestAnimationFrame(i):S=globalThis.setTimeout(i,0);}function A(){S!==void 0&&(typeof S=="number"&&typeof globalThis.cancelAnimationFrame=="function"?globalThis.cancelAnimationFrame(S):globalThis.clearTimeout(S),S=void 0,z$1.clear());}function v(){c(te);}function T(){let n=p$1.value;if(x||n===null)return;let i=n.scrollTop;i!==I&&performance.now()>=j$1&&(o$1("user-scroll"),c(J)),!a&&!e.loadingOlder&&m({previousScrollTop:I,currentScrollTop:i,topThreshold:e.olderPrefetchThreshold})&&(a=true,o$1("reach-start"),c(()=>{e.loadingOlder||(a=false);})),!N&&!e.loadingOlder&&!e.loadingNewer&&e.hasNewer&&z({previousScrollTop:I,currentScrollTop:i,isAtBottom:G(n),isHistoryWindow:e.hasNewer,isPageSettling:performance.now()<j$1})&&(N=true,B$1.value=false,o$1("reach-end"),c(()=>{e.loadingNewer||(N=false);})),I=i,v();}function P(n="auto"){j$1=performance.now()+(n==="smooth"?600:120);}function K(n){let i=p$1.value;if(i===null||n===void 0)return;let s=i.getBoundingClientRect(),w=q(n,Y(),{top:s.top,bottom:s.bottom});w!==void 0&&(P(),i.scrollTop+=w,I=i.scrollTop);}function U(n="auto"){let i=p$1.value;i!==null&&(P(n),i.scrollTo?.({top:i.scrollHeight,behavior:n}),i.scrollTop!==i.scrollHeight&&(i.scrollTop=i.scrollHeight),I=i.scrollTop,H.clear(),te());}function X(){let n=p$1.value;return n!==null&&n.clientWidth>0&&n.clientHeight>0}function ve(){let n=p$1.value;return X()&&n!==null&&n.scrollHeight>n.clientHeight+1}function he(n,i={}){let s=p$1.value,w=M.get(n);if(s===null||w===void 0||!s.contains(w)||s.clientHeight<=0)return false;let E=s.getBoundingClientRect(),C=w.getBoundingClientRect(),L=i.block??"center",F;L==="start"?F=s.scrollTop+C.top-E.top:L==="end"?F=s.scrollTop+C.bottom-E.bottom:L==="nearest"?C.top>=E.top&&C.bottom<=E.bottom?F=s.scrollTop:C.top<E.top?F=s.scrollTop+C.top-E.top:F=s.scrollTop+C.bottom-E.bottom:F=j({currentScrollTop:s.scrollTop,scrollHeight:s.scrollHeight,targetHeight:C.height,targetTop:C.top,viewportHeight:s.clientHeight,viewportTop:E.top});let ae=Math.max(0,s.scrollHeight-s.clientHeight),re=Math.min(ae,Math.max(0,F)),le=i.behavior??"auto";return P(le),s.scrollTo?.({top:re,behavior:le}),s.scrollTop!==re&&(s.scrollTop=re),I=s.scrollTop,te(),true}function ge(){H.clear();}function se(){N=true,B$1.value=false;}function fe(){N=false,v();}function Te(n,i){let s=M.get(n);if(s!==void 0&&s!==i&&(D?.unobserve(s),h?.unobserve?.(s),R.delete(s),f.delete(n)),i===null){M.delete(n),f.delete(n);return}M.set(n,i),R.set(i,n),D?.observe(i),h?.observe(i),v();}function ye(n,i,s){let w=y.get(n);if(s===null){y.delete(n);return}y.set(n,{element:s,label:i}),W===n&&s.style.setProperty("opacity",String($)),w?.element!==s&&(s.dataset.imThreadDateSeparator=n);}return provide(we,{registerMessageNode:Te,registerDateNode:ye}),watch(()=>e.messageIds,async(n,i)=>{let s=p$1.value;if(s===null)return;let w=s.getBoundingClientRect(),E=p(d,Y(),{top:w.top,bottom:w.bottom}),C=B$1.value,L=new Set(i),F=i[i.length-1],ae=F===void 0?-1:n.indexOf(F),re=ae<0?[]:n.slice(ae+1).filter(m=>!L.has(m)),le=N||e.loadingNewer;if(await nextTick(),x)return;let t=i[0];if(t!==void 0&&n.indexOf(t)>0&&(a=false,K(E)),re.length>0){if(le){N=false,K(E),B$1.value=false,v();return}(C||re.some(b=>e.shouldFollowAppendedMessage?.(b)===true))&&e.followNewMessages?U():H.add(re);}v();},{flush:"pre"}),watch(()=>e.loadingNewer,(n,i)=>{n||!i||!N||c(()=>{e.loadingNewer||(N=false);});},{flush:"pre"}),watch(()=>e.loadingOlder,(n,i)=>{n||!i||!a||c(()=>{e.loadingOlder||(a=false);});},{flush:"pre"}),onMounted(()=>{let n=p$1.value;if(n!==null){if(I=n.scrollTop,n.addEventListener("scroll",T,{passive:true}),typeof globalThis.ResizeObserver=="function"){h=new globalThis.ResizeObserver(()=>{let i=d;c(()=>{p$1.value!==null&&(N||e.loadingNewer?K(i):e.resizeFollowEnabled&&B$1.value?U():K(i),te());});}),h.observe(n);for(let i of M.values())h.observe(i);}if(typeof globalThis.IntersectionObserver=="function"){D=new globalThis.IntersectionObserver(i=>{for(let s of i){let w=R.get(s.target);w!==void 0&&(s.isIntersecting?f.add(w):f.delete(w));}V=true,v();},{root:n,rootMargin:`${Number.isFinite(e.visibleMargin)?Math.max(0,e.visibleMargin):0}px 0px`});for(let i of M.values())D.observe(i);}v();}}),onBeforeUnmount(()=>{x=true;let n=p$1.value;n!==null&&n.removeEventListener("scroll",T),A(),h?.disconnect(),D?.disconnect(),ee(),M.clear(),R.clear(),f.clear(),y.clear(),H.clear();}),g$1({getViewportElement:()=>p$1.value,clearNewMessageBadge:ge,clearActiveDate:ee,isAtBottom:computed(()=>B$1.value),isMeasurable:X,isScrollable:ve,newMessageCount:computed(()=>Z.value),prepareHistoryPageAppend:se,cancelHistoryPageAppend:fe,trackRemoteMessageIds:(n,i)=>H.trackRemote(n,i),scrollToLatest:U,scrollToMessage:he,focusViewport:()=>p$1.value?.focus({preventScroll:true})}),()=>h$1("div",{ref:p$1,"data-im-thread-viewport":"",role:"log",tabindex:-1},u.default?.())}});var Qe=Symbol("ImThreadSurfaceContext");function yt(e){if(typeof e.getState!="function")throw new TypeError("ImThreadSurfaceContext.getState \u5FC5\u987B\u662F\u51FD\u6570");if(typeof e.actions?.loadOlder!="function")throw new TypeError("ImThreadSurfaceContext.actions.loadOlder \u5FC5\u987B\u662F\u51FD\u6570");if(typeof e.formatDate!="function")throw new TypeError("ImThreadSurfaceContext.formatDate \u5FC5\u987B\u662F\u51FD\u6570");return Object.freeze({...e,actions:Object.freeze({...e.actions})})}function bt(e){provide(Qe,e);}function xe(){let e=inject(Qe);if(e===void 0)throw new Error("ImThreadSurface \u9700\u8981\u663E\u5F0F context prop \u6216 provideImThreadSurfaceContext");return e}var Pe=Object.freeze({followThreshold:120,olderPrefetchThreshold:120,visibleReadDelay:300,visibleMargin:8,activeDateOffset:16,activeDateIdleDelay:1500}),Oe=Object.freeze({enabled:true,maxFillPages:8}),Mt=8,Rt=160;function St(e,o){return e?.conversationType===o.conversationType&&e.conversationId===o.conversationId}var Vt=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(e,{expose:o,slots:g}){let u=e.context??xe(),p=ref(null),M=ref(0),R=ref(true),f=[],y,I=0,r=0,d=null,h="",D="",V="",S=false,z=false,x=ref(false),j=ref(""),W=ref(false),$,N,a=computed(()=>u.getState()),B=computed(()=>a.value.pageVisible??u.isPageVisible?.()??true),Z=computed(()=>a.value.pageEngaged??u.isPageEngaged?.()??true),H=computed(()=>St(a.value.activeConversation,e.conversation)),G=computed(()=>({...Pe,...e.viewportOptions})),Y=computed(()=>{let t=e.initialViewportOptions.maxFillPages??Oe.maxFillPages;return {enabled:e.initialViewportOptions.enabled??Oe.enabled,maxFillPages:Number.isFinite(t)?Math.max(0,Math.floor(t)):Oe.maxFillPages}}),_=computed(()=>!H.value||!a.value.ready?"":`${e.conversation.conversationType}\0${e.conversation.conversationId}`),ee=computed(()=>H.value?i({messages:a.value.messages,entryUnread:a.value.entryUnread,formatDate:u.formatDate,leadingItems:u.leadingItems?.(),beforeMessageItems:u.beforeMessageItems}):[]),J=computed(()=>ee.value.flatMap(t=>t.kind==="message"||t.kind==="system"?[t.message.id]:[]));function te(){$!==void 0&&(clearTimeout($),$=void 0),N!==void 0&&(clearTimeout(N),N=void 0);}function c(t=false){if(te(),W.value=false,t){p.value?.clearActiveDate(),j.value="";return}N=setTimeout(()=>{N=void 0,!W.value&&(p.value?.clearActiveDate(),j.value="");},Rt);}function A(t){if(t===null){c();return}te(),j.value=t.label,W.value=true;let l=G.value.activeDateIdleDelay,m=Number.isFinite(l)?Math.max(0,l):Pe.activeDateIdleDelay;$=setTimeout(()=>{$=void 0,c();},m);}async function v(t,l){e.hooks?.beforeAction?.(t);try{let m=await l();return e.hooks?.afterAction?.(t,m),m}catch(m){throw e.hooks?.onError?.(t,m),m}}function T(){return !H.value||a.value.loading||!a.value.hasOlder?Promise.resolve(0):v({kind:"load-older"},()=>u.actions.loadOlder())}function P(){let t=u.actions.loadNewer,l=a.value.loadingNewer??a.value.loading;return !H.value||l||!a.value.hasNewer||t===void 0?Promise.resolve(0):v({kind:"load-newer"},()=>t())}async function K(t){for(let l=0;l<Mt;l+=1){if(!H.value)return;let m=t==="older"?a.value.hasOlder:a.value.hasNewer,b=t==="older"?a.value.olderError:a.value.newerError;if(!m||b!==null||(t==="older"?await T():await P())>0)return;let k=t==="older"?a.value.hasOlder:a.value.hasNewer,q=t==="older"?a.value.olderError:a.value.newerError;if(!k||q!==null)return}}async function U(){return !H.value||u.actions.loadNewer===void 0?0:v({kind:"load-newer"},()=>u.actions.retryNewer?.()??u.actions.loadNewer?.({force:!0})??Promise.resolve(0))}async function X(){if(!H.value)return 0;let t=_.value;V="";let l;try{l=await v({kind:"retry-older"},()=>u.actions.retryOlder?.()??u.actions.loadOlder({force:!0}));}catch(m){throw _.value===t&&(V=t),m}return x.value||(d=null,F()),l}async function ve(){if(!H.value)return false;let t=await v({kind:"jump-to-latest"},()=>u.actions.jumpToLatest?.()??Promise.resolve(!a.value.isHistoryWindow));return t&&(await nextTick(),p.value?.scrollToLatest()),t}function he(t){R.value=t.isAtBottom,M.value=t.newMessageCount,F();}function ge(t,l){return p.value?.scrollToMessage(t,l)??false}function se(t,l){return !z&&r===l&&_.value===t&&H.value}async function fe(t,l,m,b){for(let O=0;O<60;O+=1){if(!se(t,l))return false;if(ge(m,b))return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(k=>window.requestAnimationFrame(()=>k()));}return false}async function Te(t,l,m){let b=p.value;if(b===null||!b.isMeasurable()||b.isScrollable())return true;let O=0,k=!a.value.hasOlder,q=!a.value.hasNewer||u.actions.loadNewer===void 0,me=async()=>(await nextTick(),await nextTick(),fe(t,l,m,{behavior:"auto",block:"center"})),de=async ue=>{if(!se(t,l)||O>=Y.value.maxFillPages)return false;let pe=0;if(ue==="older"){if(k||!a.value.hasOlder)return false;pe=await T(),k=!a.value.hasOlder;}else {if(q||!a.value.hasNewer)return false;b.prepareHistoryPageAppend();try{pe=await P();}catch(et){throw b.cancelHistoryPageAppend(),et}pe<=0&&!a.value.hasNewer&&b.cancelHistoryPageAppend(),q=!a.value.hasNewer;}return O+=1,pe>0?me():!(ue==="older"?k:q)};!k&&!await de("older")&&(k=true),!q&&!await de("newer")&&(q=true);let be="older";for(;se(t,l)&&O<Y.value.maxFillPages&&b.isMeasurable()&&!b.isScrollable()&&(!k||!q);){let ue=be==="older"?k?"newer":"older":q?"older":"newer";be=ue==="older"?"newer":"older",await de(ue)||(ue==="older"?k=true:q=true);}return se(t,l)}async function ye(t,l={behavior:"auto",block:"center"}){if(!H.value||t==="")return false;let m=_.value,b=++r;if(!J.value.includes(t)){let q=u.actions.loadAround;if(q===void 0||!await v({kind:"locate-message",messageId:t},()=>q(t))||!se(m,b))return false}return !await fe(m,b,t,{...l,behavior:"auto"})||!await Te(m,b,t)?false:fe(m,b,t,l)}function n(){y!==void 0&&(clearTimeout(y),y=void 0);}function i$1(){if(n(),!x.value)return;let t=e.readActions;if(t===void 0||f.length===0)return;let l=Number.isFinite(G.value.visibleReadDelay)?Math.max(0,G.value.visibleReadDelay):Pe.visibleReadDelay;y=setTimeout(()=>{if(y=void 0,!H.value||!Z.value)return;let m=f[f.length-1];if(m===void 0)return;let b=t.resolveTarget===void 0?m:t.resolveTarget(m);b!=null&&Promise.resolve(t.markRead(b)).catch(O=>{e.hooks?.onError?.({kind:"visible-range",messageIds:f},O);});},l);}function s(t){f=Object.freeze([...t]);let l={kind:"visible-range",messageIds:f};e.hooks?.beforeAction?.(l);try{u.actions.onVisibleRange?.(f),e.hooks?.afterAction?.(l,void 0);}catch(m){throw e.hooks?.onError?.(l,m),m}x.value?i$1():F();}function w(t,l){return !z&&I===l&&_.value===t&&!S}function E(t,l){w(t,l)&&(h=t,D=C(a.value.entryUnread),x.value=true,i$1());}function C(t){return t.state!=="located"?t.state:`${t.state}:${t.firstMessageId}`}async function L(t,l,m){for(let b=0;b<60;b+=1){if(!w(t,l))return false;if(p.value?.scrollToMessage(m,{behavior:"auto",block:"center"})===true)return true;await nextTick(),typeof window<"u"&&typeof window.requestAnimationFrame=="function"&&await new Promise(k=>window.requestAnimationFrame(()=>k()));}return false}function F(){let t=_.value,l=C(a.value.entryUnread);if(t===""||a.value.loading||a.value.error!==null||h===t&&(D===l||S)||V===t||d!==null)return;if(!Y.value.enabled){h=t,D=l,x.value=true,i$1();return}let m=++I;S=false,x.value=false;let b=(async()=>{if(await nextTick(),!w(t,m))return;let O=p.value;if(O===null||!O.isMeasurable())return;let k=a.value.entryUnread;if(k.state==="located"&&!J.value.includes(k.firstMessageId))return;let q=k.state==="located"?await L(t,m,k.firstMessageId):false;if(k.state==="located"&&!q)return;q||O.scrollToLatest();let me=0;for(;w(t,m)&&me<Y.value.maxFillPages&&a.value.hasOlder&&O.isMeasurable()&&!O.isScrollable();)if(await T(),!w(t,m)||(me+=1,await nextTick(),await nextTick(),!O.isMeasurable()))return;if(!w(t,m)||!O.isMeasurable())return;let de=a.value.entryUnread;if(de.state==="located"){if(!J.value.includes(de.firstMessageId)||!await L(t,m,de.firstMessageId))return}else O.scrollToLatest();await nextTick(),E(t,m);})().catch(()=>{_.value===t&&(V=t);}).finally(()=>{d===b&&(d=null);});d=b;}function ae(t){I+=1,d=null,S=false,x.value=t,(h="",D="",V=""),n();}function re(){if(x.value)return;let t=_.value;S=true,I+=1,d=null,h=t,x.value=true,i$1();}let le=Object.freeze({getViewportElement:()=>p.value?.getViewportElement()??null,loadOlder:T,retryOlder:X,loadNewer:P,retryNewer:U,jumpToLatest:ve,scrollToMessage:ge,locateMessage:ye,focusViewport:()=>p.value?.focusViewport()});return o(le),watch(Z,t=>{t&&x.value?i$1():n();}),watch([()=>a.value.activeRemoteMessageRevision??0,p,_],()=>{let t=p.value;if(t===null||!H.value)return;let l=u.actions.drainActiveRemoteMessageIds?.()??[];t.trackRemoteMessageIds(l,{isAtBottom:R.value,isHistoryWindow:a.value.isHistoryWindow,isPageVisible:B.value})&&(R.value=false);},{flush:"post"}),watch([_,()=>a.value.loading,()=>a.value.error,()=>J.value.length,()=>a.value.hasOlder,()=>C(a.value.entryUnread),Y],([t,l,m,,,b],[O,,,,,k])=>{if(t!==O&&(r+=1,ae(false),c(true),p.value?.clearNewMessageBadge(),M.value=0,R.value=true),t!==""&&t===O&&b!==k&&!S&&b.startsWith("located:")&&(h="",D="",x.value=false),t===""||m!==null){ae(false);return}l||F();},{flush:"post",immediate:true}),onBeforeUnmount(()=>{z=true,r+=1,ae(false),c(true);}),()=>{let t={conversation:e.conversation,state:a.value,items:ee.value,actions:le},l=[g.header?.(t),g["before-list"]?.(t)];if(!H.value)l.push(g.unsupported?.(t)??h$1("div",{"data-im-thread-unsupported":""}));else if(!a.value.ready&&a.value.loading)l.push(g.loading?.(t)??h$1("div",{"data-im-thread-loading":""}));else if(a.value.error!==null&&a.value.messages.length===0)l.push(g.error?.(t)??h$1("div",{"data-im-thread-error":""}));else if(a.value.ready&&a.value.messages.length===0&&!a.value.hasOlder)l.push(g.empty?.(t)??h$1("div",{"data-im-thread-empty":""}));else {let m=h$1(Ve,{ref:p,messageIds:J.value,loadingOlder:a.value.loadingOlder??a.value.loading,hasNewer:a.value.hasNewer,loadingNewer:a.value.loadingNewer??a.value.loading,followThreshold:G.value.followThreshold,olderPrefetchThreshold:G.value.olderPrefetchThreshold,visibleMargin:G.value.visibleMargin,activeDateOffset:G.value.activeDateOffset,activeDateEnabled:g["active-date"]!==void 0,resizeFollowEnabled:x.value,followNewMessages:B.value,shouldFollowAppendedMessage:b=>{let O=a.value.messages.find(k=>k.id===b);return O===void 0?false:u.shouldFollowMessage?.(O)===true},onReachStart:()=>{K("older").catch(()=>{});},onReachEnd:()=>{K("newer").catch(()=>{});},onSettled:he,onUserScroll:re,onActiveDateChange:A,onVisibleRange:s,onNewMessageCount:b=>{M.value=b;}},{default:()=>[g["viewport-before"]?.(t),h$1(Me,{items:ee.value,rendererRegistry:e.rendererRegistry,presentation:e.presentation,readActions:e.readActions},{item:g.item,"date-separator":g["date-separator"],"entry-unread":g["entry-unread"],encryption:g.encryption,system:g.system,message:g.message,"recalled-message":g["recalled-message"],"deleted-message":g["deleted-message"],"unsupported-body":g["unsupported-body"]}),g["viewport-after"]?.(t)]});l.push(h$1("div",{"data-im-thread-viewport-shell":""},[g["active-date"]?.({label:j.value,visible:W.value&&j.value!==""}),m])),a.value.error!==null&&l.push(g.error?.(t)??h$1("div",{"data-im-thread-error":""}));}return l.push(g["after-list"]?.(t),g["jump-to-latest"]?.({...t,count:M.value,visible:!R.value||a.value.isHistoryWindow}),g["context-menu"]?.(t),g.composer?.(t)),h$1("section",{"data-im-thread-surface":"","data-conversation-type":e.conversation.conversationType,"data-conversation-id":e.conversation.conversationId},l)}}});function xt(e){let o=new Map;for(let u of e){if(o.has(u.kind))throw new Error(`\u6D88\u606F renderer kind \u91CD\u590D\u6CE8\u518C\uFF1A${u.kind}`);o.set(u.kind,u.component);}let g=Object.freeze([...o.keys()]);return Object.freeze({kinds:g,resolve:u=>o.get(u)})}function Ze(e,o){if(e.width<=0||e.height<=0)return 0;let g=Math.max(0,Math.min(e.right,o.right)-Math.max(e.left,o.left)),u=Math.max(0,Math.min(e.bottom,o.bottom)-Math.max(e.top,o.top));return Math.min(1,g*u/(e.width*e.height))}function At(e,o){return {x:e.x,y:e.top-o,top:e.top-o,bottom:e.bottom+o,left:e.left,right:e.right,width:e.width,height:e.height+o*2,toJSON:()=>({})}}function Ee(e){let o=Math.max(0,e.scrollIdleMs??140),g=Math.max(0,e.visibilityDwellMs??120),u=Math.min(1,Math.max(0,e.minimumIntersectionRatio??.01)),p=Math.max(0,e.revealMarginPx??0),M=Math.max(1,e.maxSettledVisible??Number.POSITIVE_INFINITY),R=new Map,f=new Map,y=new Set,I=new Set,r=new Set,d=null,h=null,D=null,V=false,S=false,z=false,x,j;function W(){x!==void 0&&clearTimeout(x),x=void 0;}function $(){j!==void 0&&clearTimeout(j),j=void 0;}function N(c=false){if(!c&&h!==null||d===null)return;let A=d.getBoundingClientRect(),v=At(A,p);for(let[T,P]of R){let K=T.getBoundingClientRect();P.ratio=Ze(K,A),P.intersecting=P.ratio>0,P.revealIntersecting=p>0?Ze(K,v)>0:P.intersecting&&P.ratio>=u;}}function a(c){return c.intersecting&&c.ratio>=u}function B(){for(let c of R.values())!c.revealIntersecting||y.has(c.key)||(y.add(c.key),e.onRevealed?.(c.item));}function Z(c){let A=new Set(c.map(T=>T.key));if(A.size!==r.size||[...A].some(T=>!r.has(T))){r.clear();for(let T of A)r.add(T);e.onSettledVisibleChange?.(c.map(T=>T.item));}}function H(){if(S||V)return;N(),B();let c=d?.getBoundingClientRect(),A=c===void 0?0:(c.top+c.bottom)/2,v=[...R.entries()].filter(([,T])=>a(T)).sort(([T],[P])=>{let K=T.getBoundingClientRect(),U=P.getBoundingClientRect();return Math.abs((K.top+K.bottom)/2-A)-Math.abs((U.top+U.bottom)/2-A)}).slice(0,M).map(([,T])=>T);Z(v);for(let T of v)I.has(T.key)||(I.add(T.key),e.onActivated?.(T.item));}function G(){S||V||($(),j=setTimeout(()=>{j=void 0,H();},g));}function Y(){S||(_(true),N(),B(),Z([]),$(),W(),x=setTimeout(()=>{x=void 0,_(false),G();},o));}function _(c){V!==c&&(V=c,e.onScrollingChange?.(c));}function ee(){d?.removeEventListener("scroll",Y),h?.disconnect(),D?.disconnect(),h=null,D=null,d=null;}function J(c=true){if(S)return;let A=e.getRoot();if(!(A===d&&d!==null)){if(ee(),d=A,d===null){c&&!z&&(z=true,Promise.resolve().then(()=>{z=false,S||(J(false),G());}));return}if(d.addEventListener("scroll",Y,{passive:true}),typeof IntersectionObserver<"u"){h=new IntersectionObserver(v=>{for(let T of v){let P=R.get(T.target);P!==void 0&&(P.intersecting=T.isIntersecting,P.ratio=T.intersectionRatio,p===0&&(P.revealIntersecting=T.isIntersecting&&T.intersectionRatio>=u));}B(),G();},{root:d,threshold:[0,u,1]}),p>0&&(D=new IntersectionObserver(v=>{for(let T of v){let P=R.get(T.target);P!==void 0&&(P.revealIntersecting=T.isIntersecting);}B();},{root:d,rootMargin:`${p}px 0px`,threshold:0}));for(let v of R.keys())h.observe(v);for(let v of R.keys())D?.observe(v);}else N(),B();}}function te(c){y.delete(c),I.delete(c),r.delete(c);}return {register(c,A){if(S)return;let v=e.getKey(c),T=y.has(v),P=I.has(v),K=A===null?void 0:R.get(A);K!==void 0&&K.key!==v&&(f.delete(K.key),R.delete(A),te(K.key));let U=f.get(v);if(U!==void 0&&U!==A&&(h?.unobserve(U),D?.unobserve(U),R.delete(U),f.delete(v)),A===null){U!==void 0&&(h?.unobserve(U),D?.unobserve(U),R.delete(U),f.delete(v)),te(v);return}let X=R.get(A);if(X?.key===v&&X.item===c){J();return}R.set(A,{item:c,key:v,intersecting:X?.key===v?X.intersecting:false,ratio:X?.key===v?X.ratio:0,revealIntersecting:X?.key===v?X.revealIntersecting:false}),f.set(v,A),J(),h?.observe(A),D?.observe(A),N(true),B(),T&&e.onRevealed?.(c),P?e.onActivated?.(c):G();},isRevealed:c=>y.has(e.getKey(c)),isActivated:c=>I.has(e.getKey(c)),isSettledVisible:c=>r.has(e.getKey(c)),isScrolling:()=>V,notifyScroll:Y,refresh(){J(),N(true),B(),G();},reset(){W(),$(),_(false),Z([]),ee(),R.clear(),f.clear(),y.clear(),I.clear();},dispose(){S||(W(),$(),_(false),Z([]),ee(),R.clear(),f.clear(),y.clear(),I.clear(),S=true);}}}function Pt(e){let o=new Map,g=new Map,u=false,p=f=>{let y=o.get(f.channel);return y===void 0?f.channel:`${f.channel}\0${y.getKey(f.item)}`},M=Ee({getRoot:e.getRoot,getKey:p,revealMarginPx:e.revealMarginPx,minimumIntersectionRatio:e.minimumIntersectionRatio,scrollIdleMs:e.scrollIdleMs,visibilityDwellMs:e.visibilityDwellMs,onScrollingChange:f=>{for(let y of o.values())y.onScrollingChange?.(f);},onRevealed:f=>o.get(f.channel)?.onRevealed?.(f.item),onActivated:f=>o.get(f.channel)?.onActivated?.(f.item),onSettledVisibleChange:f=>{for(let[y,I]of o){let r=f.filter(h=>h.channel===y).map(h=>h.item),d=I.maxSettledVisible===void 0?r:r.slice(0,I.maxSettledVisible);I.onSettledVisibleChange?.(d);}}});function R(f){return y=>{if(u)throw new Error("Thread visibility target group \u5DF2\u91CA\u653E");if(o.has(f))throw new Error(`Thread visibility channel \u5DF2\u5B58\u5728: ${f}`);o.set(f,y);let I=new Map;g.set(f,I);let r=false,d=V=>({channel:f,item:V});function h(){for(let V of I.values())M.register(V.target,null);I.clear(),y.onScrollingChange?.(false),y.onSettledVisibleChange?.([]);}return {register(V,S){if(r||u)return;let z=y.getKey(V),x=I.get(z);if(S===null){x!==void 0&&(M.register(x.target,null),I.delete(z));return}let j=d(V);I.set(z,{target:j,element:S}),M.register(j,S);},isRevealed:V=>M.isRevealed(d(V)),isActivated:V=>M.isActivated(d(V)),isSettledVisible:V=>M.isSettledVisible(d(V)),isScrolling:M.isScrolling,notifyScroll:M.notifyScroll,refresh:M.refresh,reset:h,dispose(){r||(h(),r=true,o.delete(f),g.delete(f));}}}}return {createFactory:R,refresh:M.refresh,dispose(){if(!u){for(let f of g.values())for(let y of f.values())M.register(y.target,null);g.clear(),o.clear(),M.dispose(),u=true;}}}}export{Ie as ImThreadBodySwitch,Me as ImThreadItems,Vt as ImThreadSurface,Ve as ImThreadViewport,yt as createImThreadSurfaceContext,xt as createMessageRendererRegistry,Pt as createThreadVisibilityTargetGroup,Ee as createThreadVisibilityTargets,bt as provideImThreadSurfaceContext,tt as useImText,xe as useImThreadSurfaceContext,ot as useOptionalImThreadReadActions};
|
package/dist/chat-kit.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{c as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,b as DEFAULT_LOADING_SHOW_DELAY_MS,t as SPIKE_STEP,p as calculateMediaBox,f as canPromoteMediaPresentationSource,h as captureRuntimeClientOperation,g as captureRuntimeOperation,d as createDelayedLoadingIndicator,n as createLinkMatcher,r as formatFileSize,q as formatMediaDuration,s as getFileExtension,m as hasLinkCandidate,k as highlightSegments,i as mediaService,l as normalizeLinkHref,w as placeholderWaveform,j as readService,v as resampleWaveform,e as resolveBestMediaPresentationSource,a as resolveConversationListPresentation,o as resolveMediaPresentation,u as spikeCountForDuration}from'./chunk-
|
|
1
|
+
export{c as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,b as DEFAULT_LOADING_SHOW_DELAY_MS,t as SPIKE_STEP,p as calculateMediaBox,f as canPromoteMediaPresentationSource,h as captureRuntimeClientOperation,g as captureRuntimeOperation,d as createDelayedLoadingIndicator,n as createLinkMatcher,r as formatFileSize,q as formatMediaDuration,s as getFileExtension,m as hasLinkCandidate,k as highlightSegments,i as mediaService,l as normalizeLinkHref,w as placeholderWaveform,j as readService,v as resampleWaveform,e as resolveBestMediaPresentationSource,a as resolveConversationListPresentation,o as resolveMediaPresentation,u as spikeCountForDuration}from'./chunk-CV4TIRRW.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,K as MAX_BATCH_FILES,a as MAX_RECENT_EMOJI_COUNT,g as UNICODE_EMOJI_CATALOG,J as blockReasonForChannelSession,I as blockReasonForChannelState,O as blockReasonForGroupState,R as blockReasonForSession,D as canEditMessage,t as canPinChannelMessage,s as canPinGroupMessage,u as canPinMessage,C as canRecallMessage,Z as cancelMediaUpload,r as createChatRuntime,p as createEmojiMatcher,F as decideConversationAction,H as decideMemberTargetAction,G as decideMessageAction,l as emojiAssetUrl,n as emojiUrlByCode,xa as fetchConversationFileBatch,ya as fetchConversationImageBatch,va as fetchConversationMessageBatch,za as fetchConversationVideoBatch,Aa as fetchConversationVoiceBatch,Ba as fetchNextConversationSearchBatch,aa as forwardService,o as hasEmojiCandidate,N as isGifFile,v as isPinnedMessageProtected,V as isVoiceStorageConfigured,L as mediaBatchBudgetBytes,fa as messageService,e as parseUnicodeEmojiCode,ka as pinnedMessageService,d as prependRecentEmoji,ua as profileService,U as replaceInterruptedMediaFile,P as requiresConversationEncryption,y as resolveChannelMemberAvatarUrl,x as resolveChannelMemberDisplayName,k as resolveEmojiToken,B as resolveFriendDisplayName,la as resolveImProfileAccessDestination,w as resolveMemberDisplayName,A as resolvePublicNickname,z as resolveSenderAvatarUrl,q as resolveStandaloneEmojiMessage,h as resolveUnicodeEmoji,_ as retryMessage,M as runMediaSendBatch,Y as sendAsFilesBatch,E as sendBlockReasonForDecision,T as sendMediaFile,X as sendMediaFilesBatch,S as sendText,W as sendVoice,Q as supportsConversationMention,f as unicodeEmojiTextFromCode}from'./chunk-EBM5MOQO.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-2WDWWQQI.js';import'./chunk-OQT455AV.js';import'./chunk-CVBX4JM4.js';import'./chunk-K3DSNX5G.js';export{ba as canTransmit,$ as canTransmitByType,aa as canTransmitContent,_ as requiresForwardTypeConfirmation}from'./chunk-AFW5LCKV.js';import'./chunk-WOT6VMZA.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {c as c$1}from'./chunk-OQT455AV.js';import {n}from'./chunk-AFW5LCKV.js';var w=864e5,P=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];function u(e){return e!=null&&Number.isFinite(e)&&e>0&&!Number.isNaN(new Date(e).getTime())}function v(e,n){if(u(e))return e;if(u(n))return n}function b(e,n){return v(e,n)}function m(e){if(!u(e))return "";let n=new Date(e);return `${n.getFullYear()}-${n.getMonth()+1}-${n.getDate()}`}function h(e,n){return u(e)?u(n)?m(e)!==m(n):true:false}function
|
|
1
|
+
import {c as c$1}from'./chunk-OQT455AV.js';import {n}from'./chunk-AFW5LCKV.js';var w=864e5,P=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];function u(e){return e!=null&&Number.isFinite(e)&&e>0&&!Number.isNaN(new Date(e).getTime())}function v(e,n){if(u(e))return e;if(u(n))return n}function b(e,n){return v(e,n)}function m(e){if(!u(e))return "";let n=new Date(e);return `${n.getFullYear()}-${n.getMonth()+1}-${n.getDate()}`}function h(e,n){return u(e)?u(n)?m(e)!==m(n):true:false}function F(e,n){return T(e,n,"conversation")}function L(e,n){return T(e,n,"separator")}function T(e,n,r){if(!u(e))return "";let t=n.now??new Date;if(Number.isNaN(t.getTime()))return "";let o=new Date(e),a=y(t)-y(o),i=c$1(n.locale);return o.getFullYear()!==t.getFullYear()?A(o):a===0?r==="conversation"?k(o):i.today:a===1?i.yesterday:a>=2&&a<=6?x(o,i):D(o)}function y(e){return Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())/w}function x(e,n){return n.weekdays[P[e.getDay()]]}function k(e){return `${c(e.getHours())}:${c(e.getMinutes())}`}function A(e){return `${e.getFullYear()}/${c(e.getMonth()+1)}/${c(e.getDate())}`}function D(e){return `${c(e.getMonth()+1)}/${c(e.getDate())}`}function c(e){return String(e).padStart(2,"0")}function O(e){if(e.markers.length===0)return null;let n=e.viewportTop+e.overlayTop;if(e.markers[0].top>n+1)return null;let r=0;for(let d=0;d<e.markers.length&&!(e.markers[d].top>n+1);d+=1)r=d;let t=e.markers[r],o=n+e.overlayHeight,a=e.markers.filter(d=>d.top<o+1&&d.top+d.height>n-1).at(-1),i=a===void 0?0:Math.max(0,Math.min(a.top+a.height,o)-Math.max(a.top,n)),s=a===void 0?1:Math.max(1,Math.min(a.height,e.overlayHeight)),l=Math.min(1,i/s);return {key:t.key,label:t.label,inlineOpacity:1-l,...a===void 0?{}:{inlineDateKey:a.key}}}var C={text:"text",image:"image",video:"video",voice:"voice",file:"file",sticker:"sticker",contact:"contact",miniProgram:"miniProgram",game:"game",transfer:"transfer",redPacket:"redPacket",call:"call",system:"system",unknown:"unknown"};function S(e){switch(e.contentType){case "text":return typeof e.body.text=="string";case "image":return e.body.image!==void 0&&typeof e.body.image.url=="string";case "video":return e.body.video!==void 0&&typeof e.body.video.url=="string";case "voice":return e.body.voice!==void 0;case "file":return e.body.file!==void 0;case "sticker":return e.body.sticker!==void 0;case "contact":return e.body.contact!==void 0;case "miniProgram":return e.body.miniProgram!==void 0&&typeof e.body.miniProgram.appId=="string";case "transfer":return e.body.transfer!==void 0&&typeof e.body.transfer.serialNumber=="string";case "redPacket":{let n=e.body.redPacket;return n!==void 0&&n.packetId.trim()!==""&&(n.packetType===1||n.packetType===2||n.packetType===3||n.packetType===4)}case "call":return e.body.call!==void 0&&(e.body.call.callKind==="audio"||e.body.call.callKind==="video")&&typeof e.body.call.durationMs=="number";case "game":{let n=e.body.game;return n?.gameType==="dice"?Number.isInteger(n.value)&&n.value>=1&&n.value<=6:n?.gameType==="rock-paper-scissors"&&Number.isInteger(n.value)&&n.value>=1&&n.value<=3}case "system":return e.body.system!==void 0;case "unknown":return e.body.unknown!==void 0}}function I(e){return e.encryption.decryptFailed===true?"decrypt-failed":S(e)?e.contentType==="sticker"?n(e.body.sticker.imageType):C[e.contentType]:"unknown"}function _(e){let n=[...e.leadingItems??[]],r=e.entryUnread.state==="located"?e.entryUnread:null,t,o=null,a=false;for(let i of e.messages){let s=b(i.createdAt,i.serverTime),l=s!==void 0&&h(s,t);s!==void 0&&l&&n.push({kind:"date-separator",key:`date-${m(s)}-${i.id}`,label:e.formatDate(s)}),t=s,!a&&r!==null&&i.id===r.firstMessageId&&(n.push({kind:"entry-unread",key:`entry-unread-${i.id}`,...r.count===void 0?{}:{count:r.count}}),a=true);let d=e.beforeMessageItems?.(i)??[];if(n.push(...d),I(i)==="system"){n.push({kind:"system",key:i.id,message:i}),o=null;continue}n.push({kind:"message",key:`message-${i.id}`,message:i,firstOfRun:l||i.senderId!==o}),o=i.senderId;}return n}function U(e){let n=e.targetTop-e.viewportTop,r=e.currentScrollTop+n-(e.viewportHeight-e.targetHeight)/2,t=Math.max(0,e.scrollHeight-e.viewportHeight);return Math.min(t,Math.max(0,r))}function j(e){return e!==null&&e.clientWidth>0&&e.clientHeight>0}function G(e){return e.locatedAt<=0||e.duration<0||e.now<e.locatedAt?false:e.now-e.locatedAt<=e.duration}function q(e){return !Number.isFinite(e.topThreshold)||e.topThreshold<0?false:e.currentScrollTop<e.previousScrollTop&&e.currentScrollTop<=e.topThreshold}function H(e,n){return e.find(r=>r.bottom>n.top&&r.top<n.bottom)??e[0]}function f(e){return e.anchorTop??e.top}function B(e,n){let r=H(e,n);return r===void 0?void 0:{id:r.id,offset:f(r)-n.top}}function J(e,n,r){if(e===void 0)return;let t=n.find(o=>o.id===e.id);return t!==void 0&&t.bottom>r.top&&t.top<r.bottom?{id:e.id,offset:f(t)-r.top}:B(n,r)??e}function V(e,n,r){if(e===void 0)return;let t=n.find(o=>o.id===e.id);return t===void 0?void 0:f(t)-r.top-e.offset}function Q(e,n,r=3){return !Number.isFinite(r)||r<=0?[]:e.filter(t=>t.bottom>n.top&&t.top<n.bottom).slice(0,Math.floor(r)).map(t=>({id:t.id,offset:f(t)-n.top}))}function X(e,n,r){for(let t of e){let o=V(t,n,r);if(o!==void 0)return o}}function Z(e){return e.sameConversation&&!e.isHistoryWindow&&!e.isLocating&&!e.isLocateProtected&&e.userKeptLatestIntent}function ee(e){return e.isPageVisible&&!e.isHistoryWindow&&!e.isLocating&&!e.isLocateProtected&&(e.isOwnMessage||e.isAtBottom)}function ne(e){return e.isLoadingOlder&&e.previousTailId!==void 0&&e.previousTailId!==e.currentTailId&&e.previousMessageIds.includes(e.currentTailId)}function re(e,n){return e!==void 0&&!n.has(e)}async function te(e,n){let r=0;for(;e()&&!(await n()<=0);)r+=1;return r}function oe(e){return e.hasMoreHistory&&Number.isFinite(e.scrollHeight)&&Number.isFinite(e.clientHeight)&&e.scrollHeight>0&&e.clientHeight>0&&e.scrollHeight<=e.clientHeight}function ie(e){return e.isHistoryWindow&&!e.isPageSettling&&e.isAtBottom&&(e.currentScrollTop>e.previousScrollTop||e.allowStationaryBoundary===true)}function M(e){return !e.isPageVisible||!e.isAtBottom||e.isHistoryWindow}function ae(e){let n=Math.max(0,e.margin);return e.messageTop<e.viewportBottom-n&&e.messageBottom>e.viewportTop+n}function le(e){let n=new Set;function r(s){return s===n.size?false:(e?.(n.size),true)}function t(s){let l=n.size;for(let d of s)d!==""&&n.add(d);return r(l)}function o(s,l){return M(l)&&t(s)}function a(s){let l=n.size;for(let d of s)n.delete(d);return r(l)}function i(){let s=n.size;return n.clear(),r(s)}return {get count(){return n.size},add:t,trackRemote:o,acknowledgeVisible:a,clear:i}}export{M as A,ae as B,le as C,v as a,b,m as c,h as d,F as e,L as f,O as g,I as h,_ as i,U as j,j as k,G as l,q as m,H as n,B as o,J as p,V as q,Q as r,X as s,Z as t,ee as u,ne as v,re as w,te as x,oe as y,ie as z};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {p as p$1}from'./chunk-EBM5MOQO.js';import {e,a as a$1}from'./chunk-GHGVAACK.js';import {j,h}from'./chunk-OQT455AV.js';import {T as T$1}from'./chunk-AFW5LCKV.js';import {a}from'./chunk-WOT6VMZA.js';var N=p$1();function H(e$1,n){let t=n.suppressDraft===true?null:e$1.draft,i=t?.text.trim()??"",r,a="",s="";return t!==null?r=i===""?[]:G(e$1,i,n.locale):$(e$1)?r=y(K(e$1,n)):e$1.lastMessageSummary?.kind==="channel-moderation-deleted"||e$1.lastMessageDeletedForEveryone!==void 0?r=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?r=y(x(e$1,e$1.lastMessageSummary?.kind==="recalled"?e$1.lastMessageSummary:{kind:"recalled",by:e$1.lastMessageRecalled?.by??""},n)):(a=z(e$1,n),s=e$1.mentionUnreadCount>0?n.labels.mentionBadge:"",r=W(e$1,n)),{preview:`${s}${a}${r.map(l=>l.text).join("")}`||(t===null?n.labels.emptyPreview:""),previewSegments:r,senderPrefix:a,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 O(e){return e.map(n=>n.kind==="emoji"?{kind:"emoji",text:n.text,code:n.code}:{kind:n.kind,text:n.text})}function G(e,n,t){let i=e.draft?.mentions??[],r=[],a={},s=false;for(let l of i){if(l.userId==="0"){s=true;continue}r.includes(l.userId)||r.push(l.userId),l.displayName.trim()!==""&&(a[l.userId]=l.displayName);}let o=s||r.length>0?{atAll:s,atUserIds:r,...Object.keys(a).length===0?{}:{atUsersName:a}}:void 0;return O(T$1(n,{mention:o,resolveName:l=>a[l]??l,atAllDisplay:j(t),matchers:[N]}))}function W(e,n){let t=e.lastMessageSummary;if(t!==void 0&&t.kind!=="text")return y(x(e,t,n));let i=(t?.kind==="text"?t.text:e.lastMessagePreview).trim();if(i==="")return y(n.labels.emptyPreview);let r=e.lastMessageMention?.atUsersName;return O(T$1(i,{mention:e.lastMessageMention===void 0?void 0:{...e.lastMessageMention,atUserIds:[...e.lastMessageMention.atUserIds]},resolveName:a=>n.resolveName(e.ref,a,r?.[a]),selfId:n.accountId,atAllDisplay:j(n.locale),matchers:[N]}))}function x(e,n,t){return h(q(n),{locale:t.locale,selfId:t.accountId,resolveName:i=>t.resolveName(e.ref,i)})}function $(e){return e.lastMessageSummary?.kind==="system"||e.lastMessageSenderId==="system"||e.lastMessageSystemEvent!==void 0}function K(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 z(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,Q=220;function Y(e){let n=Math.max(0,e.showDelayMs??160),t=Math.max(0,e.minimumVisibleMs??220),i=e.now??Date.now,r=e.setTimer??((d,M)=>setTimeout(d,M)),a=e.clearTimer??(d=>clearTimeout(d)),s="",o=false,l=false,v=0,c,u,f=false;function g(){c!==void 0&&a(c),c=void 0;}function m(){u!==void 0&&a(u),u=void 0;}function h(d){l!==d&&(l=d,v=d?i():0,e.onVisibleChange(d));}function I(d){g(),c=r(()=>{c=void 0,!(f||!o||s!==d)&&h(true);},n);}function j(){if(g(),!l)return;let d=t-Math.max(0,i()-v);if(d<=0){h(false);return}m(),u=r(()=>{u=void 0,!(f||o)&&h(false);},d);}return {update(d,M){if(f)return;if(s!==M){s=M,o=d,g(),m(),h(false),d&&I(M);return}if(o=d,d){m(),!l&&c===void 0&&I(M);return}j();},dispose(){f||(f=true,o=false,g(),m(),h(false));}}}var S={placeholder:0,thumbnail:1,local:2,original:3};function X(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 Z(e,n){return S[n]>=S[e]}function ee(e){let n=e.getGeneration();return Object.freeze({isCurrent:()=>e.getGeneration()===n})}function T(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:()=>te,detectImageMime:()=>D,detectVideoMime:()=>F,loadCachedImageObjectUrl:()=>ae,loadCachedVideoObjectUrl:()=>ie,loadFileObjectUrl:()=>se,loadImageObjectUrl:()=>oe,loadVideoObjectUrl:()=>re,loadVoiceBytes:()=>ne});function A(e){if(e.conversationType!=="supergroup")return {conversation:{conversationType:e.conversationType,conversationId:e.conversationId},messageId:e.id}}async function C(e,n,t){let i=e.getClient(),r=A(n);if(i===null||r===void 0)throw new Error("media download unavailable");let a=t===void 0?void 0:i.media.subscribe(s=>{let o=s.find(l=>l.direction==="download"&&l.messageId===r.messageId&&l.ref.conversationType===r.conversation.conversationType&&l.ref.conversationId===r.conversation.conversationId);o!==void 0&&t(o.percent);});try{return await i.media.download(r)}finally{a?.();}}function D(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 U(e){let n=new Uint8Array(await e.slice(0,12).arrayBuffer()),t=D(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 te(e,n){return e.acquireMediaBlob({conversationType:n.conversationType,conversationId:n.conversationId,messageId:n.id})}async function ne(e,n,t){let i=e.getClient(),r=n.body.voice;if(i===null||r===void 0)return null;let a=e.getSelfVoiceBytes(n.id);if(a!==void 0)return a;let s=e.getGeneration();try{let o=new Uint8Array(await(await C(e,n)).arrayBuffer());return o.length===0?(e.getGeneration()===s&&t.setNote(t.t("media.voiceLoadEmpty")),null):o}catch(o){return e.getGeneration()===s&&t.setNote(t.t("media.voiceLoadFailed",{reason:o instanceof Error?o.message:String(o)})),null}}async function re(e,n,t,i){let r=e.getClient(),a=n.body.video;if(r===null||a===void 0)return null;let s=e.getGeneration();try{let o=await C(e,n,i);if(o.size===0)return e.getGeneration()===s&&t.setNote(t.t("media.videoOpenEmpty")),null;let l=URL.createObjectURL(o);return e.getGeneration()!==s?(URL.revokeObjectURL(l),null):l}catch(o){return e.getGeneration()===s&&t.setNote(t.t("media.videoLoadFailed",{reason:o instanceof Error?o.message:String(o)})),null}}async function ie(e,n){let t=e.getClient(),i=A(n);if(t===null||i===void 0||n.body.video===void 0)return null;let r=e.getGeneration();try{let a=await t.media.getCached(i);if(a===null||a.size===0||e.getGeneration()!==r)return null;let s=new Uint8Array(await a.slice(0,12).arrayBuffer()),o=a.type||F(s);return e.getGeneration()!==r?null:URL.createObjectURL(a.type===o?a:a.slice(0,a.size,o))}catch{return null}}async function oe(e,n,t){let i=e.getClient(),r=n.body.image;if(i===null||r===void 0)return null;let a=e.getGeneration();try{let s=await C(e,n),o=await U(s);return o===null?(e.getGeneration()===a&&t.setNote(t.t("media.imageInvalid",{size:s.size})),null):e.getGeneration()!==a?(URL.revokeObjectURL(o),null):o}catch(s){return e.getGeneration()===a&&t.setNote(t.t("media.imageLoadFailed",{reason:s instanceof Error?s.message:String(s)})),null}}async function ae(e,n){let t=e.getClient(),i=A(n);if(t===null||i===void 0||n.body.image===void 0)return null;let r=e.getGeneration();try{let a=await t.media.getCached(i);if(a===null||a.size===0||e.getGeneration()!==r)return null;let s=await U(a);return s===null?null:e.getGeneration()!==r?(URL.revokeObjectURL(s),null):s}catch{return null}}async function se(e,n,t,i){let r=e.getClient(),a=n.body.file;if(r===null||a===void 0)return null;let s=e.getGeneration();try{let o=await C(e,n,i);if(o.size===0)return e.getGeneration()===s&&t.setNote(t.t("media.fileDownloadEmpty")),null;let l=URL.createObjectURL(o);return e.getGeneration()!==s?(URL.revokeObjectURL(l),null):l}catch(o){return e.getGeneration()===s&&t.setNote(t.t("media.fileDownloadFailed",{reason:o instanceof Error?o.message:String(o)})),null}}var B={};a(B,{markReadUpTo:()=>le});function le(e,n,t,i){let r=T(e);if(r===null||n.conversationId===""||t==="")return;let a=r.client.conversations.list().find(o=>o.id===n.conversationId&&o.type===n.conversationType);if(a?.manuallyUnread===true&&a.unreadCount<=0){r.client.conversations.markConversationRead(n).catch(o=>{r.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:o}}));});return}if(a?.type==="group"&&a.unreadCount<=0)return;let s=i.getConversationHandle();s===void 0||s.ref.conversationId!==n.conversationId||s.ref.conversationType!==n.conversationType||s.markRead(t).catch(o=>{r.isCurrent()&&i.getConversationHandle()===s&&e.getDiagnostics().record("warn","chat-kit","message","mark-read-skipped",()=>({conversation:n,data:{messageId:t},error:{message:"markRead \u8DF3\u8FC7",data:o}}));});}function de(e,n){if(n.length===0)return [{text:e,hit:false}];let t=[],i=0;for(let[r,a]of n)r>i&&t.push({text:e.slice(i,r),hit:false}),t.push({text:e.slice(r,a),hit:true}),i=a;return i<e.length&&t.push({text:e.slice(i),hit:false}),t}var ce=/\b(?:https?:\/\/|www\.)[^\s<>"')】]+/gi,me=/\b(?:https?:\/\/|www\.)/i,ue=/[),.!?;:,。!?;:、)】]+$/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 fe(e){return me.test(e)}function pe(){return e=>{let n=[];for(let t of e.matchAll(ce)){if(t.index===void 0)continue;let i=t[0].replace(ue,"");if(i==="")continue;let r=V(i);r!==void 0&&n.push({start:t.index,end:t.index+i.length-1,segment:{kind:"link",text:i,href:r}});}return n}}function p(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 ge(e){if(p(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,i)=>{let r=`rules[${i}]`;if(t.id.trim()==="")throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${r}.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 ${r}.minAspectRatio \u5FC5\u987B\u662F\u5927\u4E8E\u7B49\u4E8E 0 \u7684\u6709\u9650\u6570`);if(t.maxAspectRatio!==void 0&&p(t.maxAspectRatio,`${r}.maxAspectRatio`),t.minAspectRatio!==void 0&&t.maxAspectRatio!==void 0&&t.minAspectRatio>=t.maxAspectRatio)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${r} \u7684\u5BBD\u9AD8\u6BD4\u4E0B\u754C\u5FC5\u987B\u5C0F\u4E8E\u4E0A\u754C`);if(p(t.preferredWidth,`${r}.preferredWidth`),p(t.minWidth,`${r}.minWidth`),p(t.maxWidth,`${r}.maxWidth`),p(t.minHeight,`${r}.minHeight`),p(t.maxHeight,`${r}.maxHeight`),t.minWidth>t.preferredWidth||t.preferredWidth>t.maxWidth)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${r}.preferredWidth \u5FC5\u987B\u4F4D\u4E8E minWidth \u548C maxWidth \u4E4B\u95F4`);if(t.minHeight>t.maxHeight)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${r}.minHeight \u4E0D\u80FD\u5927\u4E8E maxHeight`);if(typeof t.allowUpscale!="boolean")throw new TypeError(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${r}.allowUpscale \u5FC5\u987B\u662F boolean`);if(t.fit!=="cover"&&t.fit!=="contain")throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${r}.fit \u53EA\u652F\u6301 cover \u6216 contain`)});}function he(e){let{intrinsicWidth:n,intrinsicHeight:t,availableWidth:i,policy:r}=e;p(i,"availableWidth"),ge(r);let a=Number.isFinite(n)&&Number.isFinite(t)&&n>0&&t>0,s=a?n/t:r.fallbackAspectRatio,o=r.rules.find(m=>{let h=m.minAspectRatio===void 0||s>=m.minAspectRatio,I=m.maxAspectRatio===void 0||s<m.maxAspectRatio;return h&&I});if(o===void 0)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565\u6CA1\u6709\u5339\u914D\u5BBD\u9AD8\u6BD4 ${s}`);let l=!o.allowUpscale&&a?Math.min(o.preferredWidth,n):o.preferredWidth,v=Math.min(i,o.maxWidth,Math.max(o.minWidth,l)),c=Math.max(1,Math.round(v)),u=c/s,f=Math.min(o.maxHeight,Math.max(o.minHeight,u)),g=Math.max(1,Math.round(f));return {width:c,height:g,aspectRatio:c/g,sourceAspectRatio:s,ruleId:o.id,fit:o.fit,aspectClamped:f!==u}}function ve(e,n,t,i){if(!Number.isFinite(e)||!Number.isFinite(n)||e<=0||n<=0)return null;let r=Math.min(t/e,i/n,1);return {width:`${Math.max(1,Math.round(e*r))}px`,aspectRatio:`${e} / ${n}`}}function Me(e){if(!Number.isFinite(e)||e<=0)return "0:00";let n=Math.floor(e),t=Math.floor(n/3600),i=Math.floor(n%3600/60),r=n%60,a=s=>s.toString().padStart(2,"0");return t>0?`${t}:${a(i)}:${a(r)}`:`${i}:${a(r)}`}function ye(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))),i=e/1024**t;return `${t===0?i:Math.round(i*10)/10} ${n[t]}`}function xe(e){let n=e.lastIndexOf(".");return n>-1&&n<e.length-1?e.slice(n+1).toLowerCase():""}var Ie=4;function Se(e){let n=Math.min(Math.max(e/1e3,0)/10,1);return Math.round(22+24*n)}function Ce(e,n){if(e.length===0)return Array.from({length:n},()=>0);let t=[],i=(e.length-1)/Math.max(1,n-1);for(let r=0;r<n;r+=1){let a=r*i,s=Math.round(a),o=e[Math.max(0,s-1)]??0,l=e[Math.min(e.length-1,s)]??0,v=e[Math.min(e.length-1,s+1)]??0;t.push((o+l+v)/3);}return t}function be(e,n){let t=2166136261;for(let r=0;r<e.length;r+=1)t^=e.charCodeAt(r),t=Math.imul(t,16777619);let i=[];for(let r=0;r<n;r+=1)t=Math.imul(t^t>>>15,2246822519)>>>0,i.push(90+t%111);return i}
|
|
1
|
+
import {p as p$1}from'./chunk-EBM5MOQO.js';import {e,a as a$1}from'./chunk-2WDWWQQI.js';import {j,h}from'./chunk-OQT455AV.js';import {T as T$1}from'./chunk-AFW5LCKV.js';import {a}from'./chunk-WOT6VMZA.js';var N=p$1();function H(e$1,n){let t=n.suppressDraft===true?null:e$1.draft,i=t?.text.trim()??"",r,a="",s="";return t!==null?r=i===""?[]:G(e$1,i,n.locale):$(e$1)?r=y(K(e$1,n)):e$1.lastMessageSummary?.kind==="channel-moderation-deleted"||e$1.lastMessageDeletedForEveryone!==void 0?r=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?r=y(x(e$1,e$1.lastMessageSummary?.kind==="recalled"?e$1.lastMessageSummary:{kind:"recalled",by:e$1.lastMessageRecalled?.by??""},n)):(a=z(e$1,n),s=e$1.mentionUnreadCount>0?n.labels.mentionBadge:"",r=W(e$1,n)),{preview:`${s}${a}${r.map(l=>l.text).join("")}`||(t===null?n.labels.emptyPreview:""),previewSegments:r,senderPrefix:a,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 O(e){return e.map(n=>n.kind==="emoji"?{kind:"emoji",text:n.text,code:n.code}:{kind:n.kind,text:n.text})}function G(e,n,t){let i=e.draft?.mentions??[],r=[],a={},s=false;for(let l of i){if(l.userId==="0"){s=true;continue}r.includes(l.userId)||r.push(l.userId),l.displayName.trim()!==""&&(a[l.userId]=l.displayName);}let o=s||r.length>0?{atAll:s,atUserIds:r,...Object.keys(a).length===0?{}:{atUsersName:a}}:void 0;return O(T$1(n,{mention:o,resolveName:l=>a[l]??l,atAllDisplay:j(t),matchers:[N]}))}function W(e,n){let t=e.lastMessageSummary;if(t!==void 0&&t.kind!=="text")return y(x(e,t,n));let i=(t?.kind==="text"?t.text:e.lastMessagePreview).trim();if(i==="")return y(n.labels.emptyPreview);let r=e.lastMessageMention?.atUsersName;return O(T$1(i,{mention:e.lastMessageMention===void 0?void 0:{...e.lastMessageMention,atUserIds:[...e.lastMessageMention.atUserIds]},resolveName:a=>n.resolveName(e.ref,a,r?.[a]),selfId:n.accountId,atAllDisplay:j(n.locale),matchers:[N]}))}function x(e,n,t){return h(q(n),{locale:t.locale,selfId:t.accountId,resolveName:i=>t.resolveName(e.ref,i)})}function $(e){return e.lastMessageSummary?.kind==="system"||e.lastMessageSenderId==="system"||e.lastMessageSystemEvent!==void 0}function K(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 z(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,Q=220;function Y(e){let n=Math.max(0,e.showDelayMs??160),t=Math.max(0,e.minimumVisibleMs??220),i=e.now??Date.now,r=e.setTimer??((d,M)=>setTimeout(d,M)),a=e.clearTimer??(d=>clearTimeout(d)),s="",o=false,l=false,v=0,c,u,f=false;function g(){c!==void 0&&a(c),c=void 0;}function m(){u!==void 0&&a(u),u=void 0;}function h(d){l!==d&&(l=d,v=d?i():0,e.onVisibleChange(d));}function I(d){g(),c=r(()=>{c=void 0,!(f||!o||s!==d)&&h(true);},n);}function j(){if(g(),!l)return;let d=t-Math.max(0,i()-v);if(d<=0){h(false);return}m(),u=r(()=>{u=void 0,!(f||o)&&h(false);},d);}return {update(d,M){if(f)return;if(s!==M){s=M,o=d,g(),m(),h(false),d&&I(M);return}if(o=d,d){m(),!l&&c===void 0&&I(M);return}j();},dispose(){f||(f=true,o=false,g(),m(),h(false));}}}var S={placeholder:0,thumbnail:1,local:2,original:3};function X(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 Z(e,n){return S[n]>=S[e]}function ee(e){let n=e.getGeneration();return Object.freeze({isCurrent:()=>e.getGeneration()===n})}function T(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:()=>te,detectImageMime:()=>D,detectVideoMime:()=>F,loadCachedImageObjectUrl:()=>ae,loadCachedVideoObjectUrl:()=>ie,loadFileObjectUrl:()=>se,loadImageObjectUrl:()=>oe,loadVideoObjectUrl:()=>re,loadVoiceBytes:()=>ne});function A(e){if(e.conversationType!=="supergroup")return {conversation:{conversationType:e.conversationType,conversationId:e.conversationId},messageId:e.id}}async function C(e,n,t){let i=e.getClient(),r=A(n);if(i===null||r===void 0)throw new Error("media download unavailable");let a=t===void 0?void 0:i.media.subscribe(s=>{let o=s.find(l=>l.direction==="download"&&l.messageId===r.messageId&&l.ref.conversationType===r.conversation.conversationType&&l.ref.conversationId===r.conversation.conversationId);o!==void 0&&t(o.percent);});try{return await i.media.download(r)}finally{a?.();}}function D(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 U(e){let n=new Uint8Array(await e.slice(0,12).arrayBuffer()),t=D(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 te(e,n){return e.acquireMediaBlob({conversationType:n.conversationType,conversationId:n.conversationId,messageId:n.id})}async function ne(e,n,t){let i=e.getClient(),r=n.body.voice;if(i===null||r===void 0)return null;let a=e.getSelfVoiceBytes(n.id);if(a!==void 0)return a;let s=e.getGeneration();try{let o=new Uint8Array(await(await C(e,n)).arrayBuffer());return o.length===0?(e.getGeneration()===s&&t.setNote(t.t("media.voiceLoadEmpty")),null):o}catch(o){return e.getGeneration()===s&&t.setNote(t.t("media.voiceLoadFailed",{reason:o instanceof Error?o.message:String(o)})),null}}async function re(e,n,t,i){let r=e.getClient(),a=n.body.video;if(r===null||a===void 0)return null;let s=e.getGeneration();try{let o=await C(e,n,i);if(o.size===0)return e.getGeneration()===s&&t.setNote(t.t("media.videoOpenEmpty")),null;let l=URL.createObjectURL(o);return e.getGeneration()!==s?(URL.revokeObjectURL(l),null):l}catch(o){return e.getGeneration()===s&&t.setNote(t.t("media.videoLoadFailed",{reason:o instanceof Error?o.message:String(o)})),null}}async function ie(e,n){let t=e.getClient(),i=A(n);if(t===null||i===void 0||n.body.video===void 0)return null;let r=e.getGeneration();try{let a=await t.media.getCached(i);if(a===null||a.size===0||e.getGeneration()!==r)return null;let s=new Uint8Array(await a.slice(0,12).arrayBuffer()),o=a.type||F(s);return e.getGeneration()!==r?null:URL.createObjectURL(a.type===o?a:a.slice(0,a.size,o))}catch{return null}}async function oe(e,n,t){let i=e.getClient(),r=n.body.image;if(i===null||r===void 0)return null;let a=e.getGeneration();try{let s=await C(e,n),o=await U(s);return o===null?(e.getGeneration()===a&&t.setNote(t.t("media.imageInvalid",{size:s.size})),null):e.getGeneration()!==a?(URL.revokeObjectURL(o),null):o}catch(s){return e.getGeneration()===a&&t.setNote(t.t("media.imageLoadFailed",{reason:s instanceof Error?s.message:String(s)})),null}}async function ae(e,n){let t=e.getClient(),i=A(n);if(t===null||i===void 0||n.body.image===void 0)return null;let r=e.getGeneration();try{let a=await t.media.getCached(i);if(a===null||a.size===0||e.getGeneration()!==r)return null;let s=await U(a);return s===null?null:e.getGeneration()!==r?(URL.revokeObjectURL(s),null):s}catch{return null}}async function se(e,n,t,i){let r=e.getClient(),a=n.body.file;if(r===null||a===void 0)return null;let s=e.getGeneration();try{let o=await C(e,n,i);if(o.size===0)return e.getGeneration()===s&&t.setNote(t.t("media.fileDownloadEmpty")),null;let l=URL.createObjectURL(o);return e.getGeneration()!==s?(URL.revokeObjectURL(l),null):l}catch(o){return e.getGeneration()===s&&t.setNote(t.t("media.fileDownloadFailed",{reason:o instanceof Error?o.message:String(o)})),null}}var B={};a(B,{markReadUpTo:()=>le});function le(e,n,t,i){let r=T(e);if(r===null||n.conversationId===""||t==="")return;let a=r.client.conversations.list().find(o=>o.id===n.conversationId&&o.type===n.conversationType);if(a?.manuallyUnread===true&&a.unreadCount<=0){r.client.conversations.markConversationRead(n).catch(o=>{r.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:o}}));});return}if(a?.type==="group"&&a.unreadCount<=0)return;let s=i.getConversationHandle();s===void 0||s.ref.conversationId!==n.conversationId||s.ref.conversationType!==n.conversationType||s.markRead(t).catch(o=>{r.isCurrent()&&i.getConversationHandle()===s&&e.getDiagnostics().record("warn","chat-kit","message","mark-read-skipped",()=>({conversation:n,data:{messageId:t},error:{message:"markRead \u8DF3\u8FC7",data:o}}));});}function de(e,n){if(n.length===0)return [{text:e,hit:false}];let t=[],i=0;for(let[r,a]of n)r>i&&t.push({text:e.slice(i,r),hit:false}),t.push({text:e.slice(r,a),hit:true}),i=a;return i<e.length&&t.push({text:e.slice(i),hit:false}),t}var ce=/\b(?:https?:\/\/|www\.)[^\s<>"')】]+/gi,me=/\b(?:https?:\/\/|www\.)/i,ue=/[),.!?;:,。!?;:、)】]+$/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 fe(e){return me.test(e)}function pe(){return e=>{let n=[];for(let t of e.matchAll(ce)){if(t.index===void 0)continue;let i=t[0].replace(ue,"");if(i==="")continue;let r=V(i);r!==void 0&&n.push({start:t.index,end:t.index+i.length-1,segment:{kind:"link",text:i,href:r}});}return n}}function p(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 ge(e){if(p(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,i)=>{let r=`rules[${i}]`;if(t.id.trim()==="")throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${r}.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 ${r}.minAspectRatio \u5FC5\u987B\u662F\u5927\u4E8E\u7B49\u4E8E 0 \u7684\u6709\u9650\u6570`);if(t.maxAspectRatio!==void 0&&p(t.maxAspectRatio,`${r}.maxAspectRatio`),t.minAspectRatio!==void 0&&t.maxAspectRatio!==void 0&&t.minAspectRatio>=t.maxAspectRatio)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${r} \u7684\u5BBD\u9AD8\u6BD4\u4E0B\u754C\u5FC5\u987B\u5C0F\u4E8E\u4E0A\u754C`);if(p(t.preferredWidth,`${r}.preferredWidth`),p(t.minWidth,`${r}.minWidth`),p(t.maxWidth,`${r}.maxWidth`),p(t.minHeight,`${r}.minHeight`),p(t.maxHeight,`${r}.maxHeight`),t.minWidth>t.preferredWidth||t.preferredWidth>t.maxWidth)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${r}.preferredWidth \u5FC5\u987B\u4F4D\u4E8E minWidth \u548C maxWidth \u4E4B\u95F4`);if(t.minHeight>t.maxHeight)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${r}.minHeight \u4E0D\u80FD\u5927\u4E8E maxHeight`);if(typeof t.allowUpscale!="boolean")throw new TypeError(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${r}.allowUpscale \u5FC5\u987B\u662F boolean`);if(t.fit!=="cover"&&t.fit!=="contain")throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565 ${r}.fit \u53EA\u652F\u6301 cover \u6216 contain`)});}function he(e){let{intrinsicWidth:n,intrinsicHeight:t,availableWidth:i,policy:r}=e;p(i,"availableWidth"),ge(r);let a=Number.isFinite(n)&&Number.isFinite(t)&&n>0&&t>0,s=a?n/t:r.fallbackAspectRatio,o=r.rules.find(m=>{let h=m.minAspectRatio===void 0||s>=m.minAspectRatio,I=m.maxAspectRatio===void 0||s<m.maxAspectRatio;return h&&I});if(o===void 0)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565\u6CA1\u6709\u5339\u914D\u5BBD\u9AD8\u6BD4 ${s}`);let l=!o.allowUpscale&&a?Math.min(o.preferredWidth,n):o.preferredWidth,v=Math.min(i,o.maxWidth,Math.max(o.minWidth,l)),c=Math.max(1,Math.round(v)),u=c/s,f=Math.min(o.maxHeight,Math.max(o.minHeight,u)),g=Math.max(1,Math.round(f));return {width:c,height:g,aspectRatio:c/g,sourceAspectRatio:s,ruleId:o.id,fit:o.fit,aspectClamped:f!==u}}function ve(e,n,t,i){if(!Number.isFinite(e)||!Number.isFinite(n)||e<=0||n<=0)return null;let r=Math.min(t/e,i/n,1);return {width:`${Math.max(1,Math.round(e*r))}px`,aspectRatio:`${e} / ${n}`}}function Me(e){if(!Number.isFinite(e)||e<=0)return "0:00";let n=Math.floor(e),t=Math.floor(n/3600),i=Math.floor(n%3600/60),r=n%60,a=s=>s.toString().padStart(2,"0");return t>0?`${t}:${a(i)}:${a(r)}`:`${i}:${a(r)}`}function ye(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))),i=e/1024**t;return `${t===0?i:Math.round(i*10)/10} ${n[t]}`}function xe(e){let n=e.lastIndexOf(".");return n>-1&&n<e.length-1?e.slice(n+1).toLowerCase():""}var Ie=4;function Se(e){let n=Math.min(Math.max(e/1e3,0)/10,1);return Math.round(22+24*n)}function Ce(e,n){if(e.length===0)return Array.from({length:n},()=>0);let t=[],i=(e.length-1)/Math.max(1,n-1);for(let r=0;r<n;r+=1){let a=r*i,s=Math.round(a),o=e[Math.max(0,s-1)]??0,l=e[Math.min(e.length-1,s)]??0,v=e[Math.min(e.length-1,s+1)]??0;t.push((o+l+v)/3);}return t}function be(e,n){let t=2166136261;for(let r=0;r<e.length;r+=1)t^=e.charCodeAt(r),t=Math.imul(t,16777619);let i=[];for(let r=0;r<n;r+=1)t=Math.imul(t^t>>>15,2246822519)>>>0,i.push(90+t%111);return i}
|
|
2
2
|
export{H as a,J as b,Q as c,Y as d,X as e,Z as f,ee as g,T as h,_ as i,B as j,de as k,V as l,fe as m,pe as n,he as o,ve as p,Me as q,ye as r,xe as s,Ie as t,Se as u,Ce as v,be as w};
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import'./chunk-IDECJJXC.js';import'./chunk-SXY56EVC.js';export{c as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,b as DEFAULT_LOADING_SHOW_DELAY_MS,t as SPIKE_STEP,p as calculateMediaBox,f as canPromoteMediaPresentationSource,h as captureRuntimeClientOperation,g as captureRuntimeOperation,d as createDelayedLoadingIndicator,n as createLinkMatcher,r as formatFileSize,q as formatMediaDuration,s as getFileExtension,m as hasLinkCandidate,k as highlightSegments,i as mediaService,l as normalizeLinkHref,w as placeholderWaveform,j as readService,v as resampleWaveform,e as resolveBestMediaPresentationSource,a as resolveConversationListPresentation,o as resolveMediaPresentation,u as spikeCountForDuration}from'./chunk-
|
|
1
|
+
import'./chunk-IDECJJXC.js';import'./chunk-SXY56EVC.js';export{c as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,b as DEFAULT_LOADING_SHOW_DELAY_MS,t as SPIKE_STEP,p as calculateMediaBox,f as canPromoteMediaPresentationSource,h as captureRuntimeClientOperation,g as captureRuntimeOperation,d as createDelayedLoadingIndicator,n as createLinkMatcher,r as formatFileSize,q as formatMediaDuration,s as getFileExtension,m as hasLinkCandidate,k as highlightSegments,i as mediaService,l as normalizeLinkHref,w as placeholderWaveform,j as readService,v as resampleWaveform,e as resolveBestMediaPresentationSource,a as resolveConversationListPresentation,o as resolveMediaPresentation,u as spikeCountForDuration}from'./chunk-CV4TIRRW.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,K as MAX_BATCH_FILES,a as MAX_RECENT_EMOJI_COUNT,g as UNICODE_EMOJI_CATALOG,J as blockReasonForChannelSession,I as blockReasonForChannelState,O as blockReasonForGroupState,R as blockReasonForSession,D as canEditMessage,t as canPinChannelMessage,s as canPinGroupMessage,u as canPinMessage,C as canRecallMessage,Z as cancelMediaUpload,r as createChatRuntime,p as createEmojiMatcher,F as decideConversationAction,H as decideMemberTargetAction,G as decideMessageAction,l as emojiAssetUrl,n as emojiUrlByCode,xa as fetchConversationFileBatch,ya as fetchConversationImageBatch,va as fetchConversationMessageBatch,za as fetchConversationVideoBatch,Aa as fetchConversationVoiceBatch,Ba as fetchNextConversationSearchBatch,aa as forwardService,o as hasEmojiCandidate,N as isGifFile,v as isPinnedMessageProtected,V as isVoiceStorageConfigured,L as mediaBatchBudgetBytes,fa as messageService,e as parseUnicodeEmojiCode,ka as pinnedMessageService,d as prependRecentEmoji,ua as profileService,U as replaceInterruptedMediaFile,P as requiresConversationEncryption,y as resolveChannelMemberAvatarUrl,x as resolveChannelMemberDisplayName,k as resolveEmojiToken,B as resolveFriendDisplayName,la as resolveImProfileAccessDestination,w as resolveMemberDisplayName,A as resolvePublicNickname,z as resolveSenderAvatarUrl,q as resolveStandaloneEmojiMessage,h as resolveUnicodeEmoji,_ as retryMessage,M as runMediaSendBatch,Y as sendAsFilesBatch,E as sendBlockReasonForDecision,T as sendMediaFile,X as sendMediaFilesBatch,S as sendText,W as sendVoice,Q as supportsConversationMention,f as unicodeEmojiTextFromCode}from'./chunk-EBM5MOQO.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-2WDWWQQI.js';export{a as DEFAULT_LOCALE,k as createImI18n,f as formatFailure,h as formatLastMessageSummary,i as formatMediaPlaceholder,j as formatMentionAll,l as formatServiceText,g as formatSystemMessage,c as getImTimeCatalog,b as normalizeImLocale,d as registerImCatalogOverrides,e as resetImCatalogOverrides}from'./chunk-OQT455AV.js';export{j as IM_CHAT_FONT_SCALES,e as IM_DIAGNOSTIC_CATEGORIES,h as IM_EMOJI_CATALOG,c as ImPinnedMessageOperationError,d as createFaceToFaceGroupQrPayload,k as createImClient,f as createImConsoleDiagnosticSink,n as createImDiagnosticMemoryBuffer,g as createSdkDiagnosticWriter,a as migrateImCachePrefix,i as resolveImEmojiToken}from'./chunk-CVBX4JM4.js';export{Ra as createVoicePlayer,Sa as createVoiceRecordingSession,Pa as detectVoiceCapabilities,Qa as voiceErrorCodeOf}from'./chunk-K3DSNX5G.js';export{Z as EDIT_WINDOW_MS,ba as canTransmit,$ as canTransmitByType,aa as canTransmitContent,n as classifyStickerImageType,R as createImTextSearchMatcher,P as extractSearchText,Q as getImTextSearchInitial,_ as requiresForwardTypeConfirmation,fa as resolveChannelAccess,T as resolveTextSegments,la as sortSessions,ma as sumSessionsUnread}from'./chunk-AFW5LCKV.js';import'./chunk-WOT6VMZA.js';
|