k2-im 0.1.48 → 0.1.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- import {p}from'./chunk-RDTT34ZF.js';import {e,a as a$1}from'./chunk-PAEBGHDI.js';import {j as j$1,h}from'./chunk-ICG32ESA.js';import {ua}from'./chunk-FMEZINTJ.js';import {a}from'./chunk-WOT6VMZA.js';function ae(e){return e==="default"||e==="board-game-link"||e==="game-preview"}function se(e){return (e??"").trim().replace(/^[?&]+/,"").trim()}function le(e,n){let t=se(n);return e===""||t===""?e:e+(e.includes("?")?"&":"?")+t}function F(e){return e===""||e.startsWith("/")||e.startsWith("?")||e.startsWith("&")?false:e.includes(".")}function de(e){return e===""?"":/^https?:\/\//i.test(e)?e:`https://${e}`}function C(e){return le(ce(e),e.gamePath)}function ce(e){let n=e.domain?.trim()??"",t=e.suffixAddress?.trim()??"",i=e.h5Url?.trim()??"";if(n!==""){if(t==="")return n;if(t.startsWith("/"))return n.replace(/\/$/,"")+t;let r=t.replace(/^&/,""),o=n.includes("?")?"&":t.includes("?")?"":"?";return n+o+r}return /^https?:\/\//i.test(t)?t:F(t)?`https://${t}`:i}function R(e){let n=e.domain?.trim()??"",t=e.suffixAddress?.trim()??"",i=e.h5Url?.trim()??"";return /^https?:\/\//i.test(t)?t:F(t)?`https://${t}`:n!==""?de(C({domain:n,suffixAddress:t,h5Url:i})):/^https?:\/\//i.test(i)?i:F(i)?`https://${i}`:""}function me(e,n){return {id:e.appId??n,name:n,cover:"",...e.appId===void 0?{}:{appId:e.appId},...e.developerId===void 0?{}:{developerId:e.developerId},...e.domain===void 0?{}:{domain:e.domain},...e.suffixAddress===void 0?{}:{suffixAddress:e.suffixAddress},...e.h5Url===void 0?{}:{h5Url:e.h5Url},...e.isDynamic===void 0?{}:{isDynamic:e.isDynamic},...e.productId===void 0?{}:{productId:e.productId}}}function ue(e,n){if(e.configType==="float-link"){let r=R({domain:e.domain,suffixAddress:e.suffixAddress,h5Url:e.h5Url});return r===""?{kind:"refuse"}:{kind:"open-link",url:r}}if(e.configType!=="pinned-game"&&e.configType!=="float-game")return {kind:"refuse"};let t=e.appId?.trim()??"",i=C({domain:e.domain,suffixAddress:e.suffixAddress,h5Url:e.h5Url});return t===""||i===""?{kind:"refuse"}:{kind:"open-game",game:me(e,n.name),currencyType:n.currentCurrencyType??""}}var V={"zh-CN":1,"zh-TW":2,"en-US":3,"vi-VN":4,"th-TH":5};function G(e,n){let t=String(n).trim();return t===""||t==="0"?false:(e??"").split(",").map(i=>i.trim()).filter(i=>i!=="").includes(t)}function z(e){return e in V?e:"en-US"}function Q(e,n){let i={"zh-CN":e.nameZhHans,"zh-TW":e.nameZhHant,"en-US":e.nameEn,"vi-VN":e.nameVi,"th-TH":e.nameTh}[z(n)]?.trim()??"";return i!==""?i:[e.nameEn,e.nameZhHans,e.nameZhHant,e.nameVi,e.nameTh].map(r=>r?.trim()??"").find(r=>r!=="")??""}function fe(e){return e.icon?.trim()||e.iconSmall?.trim()||e.iconMedium?.trim()||e.iconLarge?.trim()||""}function q(e){return C({domain:e.domain,suffixAddress:e.suffixAddress,h5Url:e.h5Url})}function J(e){return (e.appId?.trim()??"")!==""}function pe(e){return e.configType==="float-game"?J(e)&&q(e)!=="":e.configType==="float-link"?R({domain:e.domain,suffixAddress:e.suffixAddress,h5Url:e.h5Url})!=="":false}function ge(e){return e.configType==="float-game"?"half":"page"}function he(e){let n=Q(e.rel,e.locale);return {title:e.channelDescription?.trim()??"",tag:n,name:n}}function Y(e){return [...e].sort((n,t)=>n.configType===t.configType?0:n.configType==="float-game"?1:t.configType==="float-game"?-1:0)}function Me(e,n){if(e===void 0)return {pinnedGame:null,floatingItems:[]};let t=V[z(n.locale)],i=e.filter(r=>r.configType!=="unknown"&&G(r.langTypes,t)&&G(r.currencyTypes,n.currencyType??""));return {pinnedGame:i.find(r=>r.configType==="pinned-game"&&J(r))??null,floatingItems:Y(i.filter(r=>(r.configType==="float-link"||r.configType==="float-game")&&pe(r)))}}function ve(e,n){return [e,n.configType,n.appId??"",n.suffixAddress??n.h5Url??""].join("|")}var H=p();function ye(e$1,n){let t=n.suppressDraft===true?null:e$1.draft,i=t?.text.trim()??"",r,o="",a="";return t!==null?r=i===""?[]:Ce(e$1,i,n.locale):be(e$1)?r=w(Re(e$1,n)):e$1.lastMessageSummary?.kind==="channel-moderation-deleted"||e$1.lastMessageDeletedForEveryone!==void 0?r=w(S(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=w(S(e$1,e$1.lastMessageSummary?.kind==="recalled"?e$1.lastMessageSummary:{kind:"recalled",by:e$1.lastMessageRecalled?.by??""},n)):(o=we(e$1,n),a=e$1.mentionUnreadCount>0?n.labels.mentionBadge:"",r=xe(e$1,n)),{preview:`${a}${o}${r.map(l=>l.text).join("")}`||(t===null?n.labels.emptyPreview:""),previewSegments:r,...Ie(e$1,t!==null),...Pe(e$1,t!==null,n.accountId),senderPrefix:o,mentionBadge:a,time:e(a$1(t?.updatedAt,e$1.timestamp),{locale:n.locale,...n.now===void 0?{}:{now:n.now}}),hasDraft:t!==null}}function w(e){return [{kind:"text",text:e}]}function Ie(e,n){let t=e.lastMessageSummary;if(n||e.lastMessageDeletedForEveryone!==void 0||e.lastMessageRecalled!==void 0||e.lastMessageSystemEvent!==void 0||t===void 0)return {};if(t.kind==="file"||t.kind==="filesAlbum")return {previewMediaKind:"file"};if(t.kind==="mediaAlbum"){let{imageCount:i,videoCount:r,caption:o,firstItemKind:a}=t;return i<=0&&r<=0?{}:o!==void 0&&o!==""&&a!==void 0?{previewMediaKind:a}:i>0&&r>0?{previewMediaKind:"mediaAlbum"}:{previewMediaKind:r>0?"video":"image"}}return t.kind==="image"||t.kind==="video"||t.kind==="gif"||t.kind==="sticker"||t.kind==="voice"?{previewMediaKind:t.kind}:{}}function Pe(e,n,t){return n||e.ref.conversationType!=="direct"||e.lastMessageSenderId!==t||e.lastMessageSendState!==void 0||e.lastMessageDeletedForEveryone!==void 0||e.lastMessageRecalled!==void 0||e.lastMessageSystemEvent!==void 0||e.lastMessageSummary?.kind==="system"||e.lastMessageSummary?.kind==="recalled"||e.lastMessageSummary?.kind==="channel-moderation-deleted"||e.lastMessageReceipt===void 0?{}:{previewReceipt:e.lastMessageReceipt}}function B(e){return e.map(n=>n.kind==="emoji"?{kind:"emoji",text:n.text,code:n.code}:{kind:n.kind,text:n.text})}function Ce(e,n,t){let i=e.draft?.mentions??[],r=[],o={},a=false;for(let l of i){if(l.userId==="0"){a=true;continue}r.includes(l.userId)||r.push(l.userId),l.displayName.trim()!==""&&(o[l.userId]=l.displayName);}let s=a||r.length>0?{atAll:a,atUserIds:r,...Object.keys(o).length===0?{}:{atUsersName:o}}:void 0;return B(ua(n,{mention:s,resolveName:l=>o[l]??l,atAllDisplay:j$1(t),matchers:[H]}))}function xe(e,n){let t=e.lastMessageSummary;if(t!==void 0&&t.kind!=="text"){let o=S(e,t,n);return (t.kind==="mediaAlbum"||t.kind==="filesAlbum")&&t.caption?B(ua(o,{resolveName:a=>n.resolveName(e.ref,a),matchers:[H]})):w(o)}let i=(t?.kind==="text"?t.text:e.lastMessagePreview).trim();if(i==="")return w(n.labels.emptyPreview);let r=e.lastMessageMention?.atUsersName;return B(ua(i,{mention:e.lastMessageMention===void 0?void 0:{...e.lastMessageMention,atUserIds:[...e.lastMessageMention.atUserIds]},resolveName:o=>n.resolveName(e.ref,o,r?.[o]),selfId:n.accountId,atAllDisplay:j$1(n.locale),matchers:[H]}))}function S(e,n,t){return h(Se(n),{locale:t.locale,selfId:t.accountId,resolveName:i=>t.resolveName(e.ref,i)})}function be(e){return e.lastMessageSummary?.kind==="system"||e.lastMessageSenderId==="system"||e.lastMessageSystemEvent!==void 0}function Re(e,n){return e.lastMessageSummary?.kind==="system"?S(e,e.lastMessageSummary,n):e.lastMessageSystemEvent===void 0?e.lastMessagePreview.trim()||n.labels.emptyPreview:S(e,{kind:"system",system:{eventType:e.lastMessageSystemEvent,...e.lastMessageSystemTargetsSelf===true?{targetUserIds:[n.accountId]}:{},...e.lastMessagePreview.trim()===""?{}:{fallbackText:e.lastMessagePreview.trim()}}},n)}function we(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 Se(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 Te=160,Ae=220;function Le(e){let n=Math.max(0,e.showDelayMs??160),t=Math.max(0,e.minimumVisibleMs??220),i=e.now??Date.now,r=e.setTimer??((m,v)=>setTimeout(m,v)),o=e.clearTimer??(m=>clearTimeout(m)),a="",s=false,l=false,d=0,u,y,c=false;function f(){u!==void 0&&o(u),u=void 0;}function g(){y!==void 0&&o(y),y=void 0;}function M(m){l!==m&&(l=m,d=m?i():0,e.onVisibleChange(m));}function h(m){f(),u=r(()=>{u=void 0,!(c||!s||a!==m)&&M(true);},n);}function p(){if(f(),!l)return;let m=t-Math.max(0,i()-d);if(m<=0){M(false);return}g(),y=r(()=>{y=void 0,!(c||s)&&M(false);},m);}return {update(m,v){if(c)return;if(a!==v){a=v,s=m,f(),g(),M(false),m&&h(v);return}if(s=m,m){g(),!l&&u===void 0&&h(v);return}p();},dispose(){c||(c=true,s=false,f(),g(),M(false));}}}var E={placeholder:0,thumbnail:1,local:2,original:3};function ke(e){let n;for(let t of e)t.value!==void 0&&(n===void 0||E[t.quality]>E[n.quality])&&(n=t);return n}function Ee(e,n){return E[n]>=E[e]}function j(e,n){if(n.length===0)return [{text:e,hit:false}];let t=[],i=0;for(let[r,o]of n)r>i&&t.push({text:e.slice(i,r),hit:false}),t.push({text:e.slice(r,o),hit:true}),i=o;return i<e.length&&t.push({text:e.slice(i),hit:false}),t}var Ue=p();function Oe(e,n){let t=e.preview===""?[{kind:"text",text:n.emptyText}]:e.previewParts.flatMap(a=>a.kind==="plain"?[{kind:"text",text:a.text}]:ua(a.text,{mention:a.mention,resolveName:s=>n.resolveName(s,a.mention?.atUsersName?.[s]),atAllDisplay:j$1(n.locale),matchers:[Ue]})),i=t.map(a=>a.text).join(""),r=n.matcher?.match(i)?.ranges??[],o=0;return t.flatMap(a=>{let s=o;o+=a.text.length;let l=r.filter(d=>d.start<o&&d.end>s).map(d=>[Math.max(0,d.start-s),Math.min(a.text.length,d.end-s)]);return a.kind==="emoji"||a.kind==="legacy-emoji-placeholder"?[{...a,hit:l.length>0}]:j(a.text,l).map(d=>({...a,...d}))})}var Ne=280,_e=180;function De(e){return /^data:image\//i.test(e)?true:/\.(?:png|jpe?g|gif|webp|bmp|avif|heic|heif|svg)(?:[?#]|$)/i.test(e)}function X(e,n){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:n}function Fe(e){let n=e.gamePreviewUrl?.trim()??"";return n===""?{url:"",sourceWidth:280,sourceHeight:180,render:"empty"}:{url:n,sourceWidth:X(e.gamePreviewWidth,280),sourceHeight:X(e.gamePreviewHeight,180),render:e.imageLoadFailed===true||!De(n)?"document":"image"}}function U(e){return `${e.conversationType}:${e.conversationId}`}function Ge(e,n){let t=n===null?null:U(n),i=new Set;return e.filter(r=>{let o=U(r.ref);return r.ref.conversationType!=="group"&&r.ref.conversationType!=="channel"||o===t||i.has(o)?false:(i.add(o),true)}).map((r,o)=>({item:r,index:o})).sort((r,o)=>Number(o.item.pinned)-Number(r.item.pinned)||+(o.item.unreadCount>0)-+(r.item.unreadCount>0)||r.index-o.index).slice(0,20).map(({item:r})=>({conversationType:r.ref.conversationType,conversationId:r.ref.conversationId}))}function Ve(e){let n=false,t=null,i,r=false,o=0,a=false,s,l=new Set,d;function u(h,p,m){let v=`${h}:${p??""}`;v!==s&&(s=v,e.diagnostics?.record("debug","chat-kit","history","conversation-prefetch-state",()=>({conversation:m,data:{phase:h,reason:p,attemptedCount:l.size}})));}function y(){o+=1,r=false,i?.(),i=void 0;}function c(){y(),d?.controller.abort(),d=void 0,a=false,l.clear(),t=null,s=void 0;}function f(){return Ge(e.getCandidates(),e.getActiveRef()).filter(h=>!l.has(U(h)))}async function g(){if(r=false,i=void 0,n)return;if(!e.getRunnable()){u("paused","host-not-ready");return}let h=e.getClient();if(h!==t||h===null){M();return}let p=f()[0];if(d!==void 0)return;if(p===void 0){u("exhausted","no-candidates");return}let m={controller:new AbortController,key:U(p)};d=m,a=false,l.add(m.key),u("running",void 0,p);let v=false;try{let k=await h.conversations.prefetchRecent([p],{signal:m.controller.signal});if(d!==m)return;v=k.some(oe=>oe.status==="cancelled"),v&&l.delete(m.key);}catch(k){d===m&&!m.controller.signal.aborted&&e.onError(k);}finally{d===m&&(m.controller.signal.aborted&&l.delete(m.key),d=void 0,a||!v&&!m.controller.signal.aborted?M():u("paused",m.controller.signal.aborted?"host-cancelled":"sdk-cancelled"));}}function M(){if(n)return;let h=e.getClient();if(h!==t&&(c(),t=h),!e.getRunnable()||t===null){y(),d?.controller.abort(),u("paused",t===null?"client-unavailable":"host-not-ready");return}if(d!==void 0){a=true;return}if(r)return;if(f().length===0){u("exhausted","no-candidates");return}r=true,u("scheduled");let p=++o,m=e.scheduleIdle(()=>{r&&p===o&&g();});r&&(i=m);}return {refresh:M,reset:c,dispose(){n=true,c();}}}function He(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})}function W(e,n){if(n===void 0){if(e.contentType==="image")return e.body.image;let i=e.body.mediaAlbum;if(e.contentType!=="mediaAlbum"||i?.items.length!==1||!i.caption?.trim())return;n=0;}let t=e.contentType==="mediaAlbum"?e.body.mediaAlbum?.items[n]:void 0;return t?.kind==="image"?t:void 0}function Be(e){return e?.contentType==="mediaAlbum"?e.body.mediaAlbum?.caption??"":e?.contentType==="filesAlbum"?e.body.filesAlbum?.caption??"":e?.body.text??""}function je(e,n){return e===void 0?void 0:W(e,n)?.url}function Z(e,n){return e!==void 0&&e.status==="sent"&&e.conversationType!=="supergroup"&&e.recalled===void 0&&e.deletedForEveryone===void 0&&W(e,n)!==void 0}function We(e,n,t,i){let r=T(e),o=W(n,i),a=i??(n.contentType==="mediaAlbum"?0:void 0),s={conversationType:n.conversationType,conversationId:n.conversationId},l=()=>r===null||!r.isCurrent()||!t()?false:Z(n,i),d=()=>{if(!l())throw new DOMException("Image copy is no longer active","AbortError")};return {isCurrent:l,async loadOriginal(){if(d(),s.conversationType==="supergroup")throw new Error("Unsupported image copy conversation");let u=await r.client.media.download({conversation:{...s,conversationType:s.conversationType},messageId:n.id,...a===void 0?{}:{itemIndex:a}});return d(),u},async loadThumbnail(){d();let u=o?.thumbData;if(u===void 0||u.length===0)throw new Error("Image thumbnail unavailable");return new Blob([new Uint8Array(u)])}}}var te={};a(te,{acquireMediaBlob:()=>ze,detectImageMime:()=>ee,detectVideoMime:()=>ne,loadCachedImageObjectUrl:()=>en,loadCachedMediaAlbumItemObjectUrl:()=>Xe,loadCachedVideoObjectUrl:()=>Je,loadFileObjectUrl:()=>nn,loadImageObjectUrl:()=>Ze,loadMediaAlbumItemObjectUrl:()=>Ye,loadVideoObjectUrl:()=>qe,loadVoiceBytes:()=>Qe,prepareLocalMediaPreview:()=>$e,prioritizeMediaDownload:()=>Ke});function A(e,n){if(e.conversationType!=="supergroup")return {conversation:{conversationType:e.conversationType,conversationId:e.conversationId},messageId:e.id,...n===void 0?{}:{itemIndex:n}}}function Ke(e,n,t){let i=e.getClient(),r=A(n,t);if(i===null||r===void 0)throw new Error("media download unavailable");i.media.prioritizeDownload(r);}async function L(e,n,t,i){let r=e.getClient(),o=A(n,i);if(r===null||o===void 0)throw new Error("media download unavailable");let a=t===void 0?void 0:r.media.subscribe(s=>{let l=s.find(d=>d.direction==="download"&&d.messageId===o.messageId&&d.itemIndex===i&&d.ref.conversationType===o.conversation.conversationType&&d.ref.conversationId===o.conversation.conversationId);l!==void 0&&t(l.percent);});try{return await r.media.download(o)}finally{a?.();}}function O(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="IM_SDK_MEDIA_DOWNLOAD_CANCELED"}async function $e(e,n){let t=e.getClient();if(t===null)return null;let i=e.getGeneration(),r=await t.media.prepareLocalPreview(n);return r===null||e.getGeneration()!==i?null:r}function ee(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 N(e){let n=new Uint8Array(await e.slice(0,12).arrayBuffer()),t=ee(n);return t===null?null:URL.createObjectURL(e.type===t?e:e.slice(0,e.size,t))}function ne(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 ze(e,n,t){return e.acquireMediaBlob({conversationType:n.conversationType,conversationId:n.conversationId,messageId:n.id,...t===void 0?{}:{itemIndex:t}})}async function Qe(e,n,t){let i=e.getClient(),r=n.body.voice;if(i===null||r===void 0)return null;let o=e.getSelfVoiceBytes(n.id);if(o!==void 0)return o;let a=e.getGeneration();try{let s=new Uint8Array(await(await L(e,n)).arrayBuffer());return s.length===0?(e.getGeneration()===a&&t.setNote(t.t("media.voiceLoadEmpty")),null):s}catch(s){return e.getGeneration()===a&&t.setNote(t.t("media.voiceLoadFailed",{reason:s instanceof Error?s.message:String(s)})),null}}async function qe(e,n,t,i){let r=e.getClient(),o=n.body.video;if(r===null||o===void 0)return null;let a=e.getGeneration();try{let s=await L(e,n,i);if(s.size===0)return e.getGeneration()===a&&t.setNote(t.t("media.videoOpenEmpty")),null;let l=URL.createObjectURL(s);return e.getGeneration()!==a?(URL.revokeObjectURL(l),null):l}catch(s){return e.getGeneration()===a&&!O(s)&&t.setNote(t.t("media.videoLoadFailed",{reason:s instanceof Error?s.message:String(s)})),null}}async function Je(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 o=await t.media.getCached(i);if(o===null||o.size===0||e.getGeneration()!==r)return null;let a=new Uint8Array(await o.slice(0,12).arrayBuffer()),s=o.type||ne(a);return e.getGeneration()!==r?null:URL.createObjectURL(o.type===s?o:o.slice(0,o.size,s))}catch{return null}}async function Ye(e,n,t,i,r){let o=e.getClient(),a=n.body.mediaAlbum?.items[t];if(o===null||a===void 0)return null;let s=a.kind==="video",l=e.getGeneration();try{let d=await L(e,n,r,t);if(s&&d.size===0)return e.getGeneration()===l&&i.setNote(i.t("media.videoOpenEmpty")),null;let u=s?URL.createObjectURL(d):await N(d);return u===null?(e.getGeneration()===l&&i.setNote(i.t("media.imageInvalid",{size:d.size})),null):e.getGeneration()!==l?(URL.revokeObjectURL(u),null):u}catch(d){return e.getGeneration()===l&&!O(d)&&i.setNote(i.t(s?"media.videoLoadFailed":"media.imageLoadFailed",{reason:d instanceof Error?d.message:String(d)})),null}}async function Xe(e,n,t){let i=e.getClient(),r=n.body.mediaAlbum?.items[t],o=A(n,t);if(i===null||o===void 0||r===void 0||!/^https?:\/\//i.test(r.url))return null;let a=e.getGeneration();try{let s=await i.media.getCached(o);if(s===null||s.size===0||e.getGeneration()!==a)return null;let l=r.kind==="video"?URL.createObjectURL(s):await N(s);return l===null?null:e.getGeneration()!==a?(URL.revokeObjectURL(l),null):l}catch{return null}}async function Ze(e,n,t){let i=e.getClient(),r=n.body.image;if(i===null||r===void 0)return null;let o=e.getGeneration();try{let a=await L(e,n),s=await N(a);return s===null?(e.getGeneration()===o&&t.setNote(t.t("media.imageInvalid",{size:a.size})),null):e.getGeneration()!==o?(URL.revokeObjectURL(s),null):s}catch(a){return e.getGeneration()===o&&!O(a)&&t.setNote(t.t("media.imageLoadFailed",{reason:a instanceof Error?a.message:String(a)})),null}}async function en(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 o=await t.media.getCached(i);if(o===null||o.size===0||e.getGeneration()!==r)return null;let a=await N(o);return a===null?null:e.getGeneration()!==r?(URL.revokeObjectURL(a),null):a}catch{return null}}async function nn(e,n,t,i,r){let o=e.getClient(),a=r===void 0?n.body.file:n.body.filesAlbum?.items[r];if(o===null||a===void 0)return null;let s=e.getGeneration();try{let l=await L(e,n,i,r);if(l.size===0)return e.getGeneration()===s&&t.setNote(t.t("media.fileDownloadEmpty")),null;let d=URL.createObjectURL(l);return e.getGeneration()!==s?(URL.revokeObjectURL(d),null):d}catch(l){return e.getGeneration()===s&&!O(l)&&t.setNote(t.t("media.fileDownloadFailed",{reason:l instanceof Error?l.message:String(l)})),null}}var re={};a(re,{markReadUpTo:()=>tn});function tn(e,n,t,i){let r=T(e);if(r===null||n.conversationId===""||t==="")return;let o=r.client.conversations.list().find(s=>s.id===n.conversationId&&s.type===n.conversationType);if(o?.manuallyUnread===true&&o.unreadCount<=0){r.client.conversations.markConversationRead(n).catch(s=>{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:s}}));});return}if(o?.type==="group"&&o.unreadCount<=0)return;let a=i.getConversationHandle();a===void 0||a.ref.conversationId!==n.conversationId||a.ref.conversationType!==n.conversationType||a.markRead(t).catch(s=>{r.isCurrent()&&i.getConversationHandle()===a&&e.getDiagnostics().record("warn","chat-kit","message","mark-read-skipped",()=>({conversation:n,data:{messageId:t},error:{message:"markRead \u8DF3\u8FC7",data:s}}));});}function rn(e){return e.deletedForEveryone!==void 0?"hidden":e.recalled!==void 0?"recalled":"content"}var on=/\b(?:https?:\/\/|www\.)[^\s<>"')】]+/gi,an=/\b(?:https?:\/\/|www\.)/i,sn=/[),.!?;:,。!?;:、)】]+$/u;function ie(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 ln(e){return an.test(e)}function dn(){return e=>{let n=[];for(let t of e.matchAll(on)){if(t.index===void 0)continue;let i=t[0].replace(sn,"");if(i==="")continue;let r=ie(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 I(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 cn(e){if(I(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&&I(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(I(t.preferredWidth,`${r}.preferredWidth`),I(t.minWidth,`${r}.minWidth`),I(t.maxWidth,`${r}.maxWidth`),I(t.minHeight,`${r}.minHeight`),I(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 mn(e){let{intrinsicWidth:n,intrinsicHeight:t,availableWidth:i,policy:r}=e;I(i,"availableWidth"),cn(r);let o=Number.isFinite(n)&&Number.isFinite(t)&&n>0&&t>0,a=o?n/t:r.fallbackAspectRatio,s=r.rules.find(g=>{let M=g.minAspectRatio===void 0||a>=g.minAspectRatio,h=g.maxAspectRatio===void 0||a<g.maxAspectRatio;return M&&h});if(s===void 0)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565\u6CA1\u6709\u5339\u914D\u5BBD\u9AD8\u6BD4 ${a}`);let l=!s.allowUpscale&&o?Math.min(s.preferredWidth,n):s.preferredWidth,d=Math.min(i,s.maxWidth,Math.max(s.minWidth,l)),u=Math.max(1,Math.round(d)),y=u/a,c=Math.min(s.maxHeight,Math.max(s.minHeight,y)),f=Math.max(1,Math.round(c));return {width:u,height:f,aspectRatio:u/f,sourceAspectRatio:a,ruleId:s.id,fit:s.fit,aspectClamped:c!==y}}function un(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 fn(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,o=a=>a.toString().padStart(2,"0");return t>0?`${t}:${o(i)}:${o(r)}`:`${i}:${o(r)}`}function pn(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 gn(e){let n=e.lastIndexOf(".");return n>-1&&n<e.length-1?e.slice(n+1).toLowerCase():""}function hn(e){let{message:n}=e,t=c=>c.messageId===n.id&&c.ref.conversationId===n.conversationId&&c.ref.conversationType===n.conversationType,i=e.uploadTask!==void 0&&t(e.uploadTask)?e.uploadTask:void 0,r=n.status==="uploading"||n.status==="failed"&&(n.failure?.displayCode?.startsWith("media.")===true||i!==void 0&&i.state!=="completed"),o=r?"upload":"download",a=n.body.mediaAlbum?.items??n.body.filesAlbum?.items,s=e.aggregateFrom===void 0?[e.itemIndex]:(a??[]).map((c,f)=>f).slice(e.aggregateFrom),l=s.map(c=>{let f=c===void 0?n.body.image??n.body.video??n.body.file:a?.[c];if(r){let p=c===void 0?void 0:i?.items?.find(v=>v.itemIndex===c);return {state:p?.state==="completed"?"completed":n.status==="failed"?"failed":i?.state==="paused"?"paused":(p?.state??i?.state)==="running"?"running":"waiting",percent:p?.percent??(c===void 0?i?.percent:void 0),size:p?.bytesTotal??f?.size}}let g=e.downloadTasks.find(p=>t(p)&&p.itemIndex===c&&p.direction==="download"),M=g?.state==="failed"?"failed":g?.state==="running"||g?.state==="queued"?"running":g?.state==="completed"&&!e.unavailableItemIndices?.includes(c)||f?.url.startsWith("blob:")||e.availableItemIndices?.includes(c)?"completed":"waiting",h=M==="completed"?100:M==="waiting"&&g?.state==="completed"?0:g?.percent??0;return {state:M,percent:h,size:g?.bytesTotal??f?.size}}),d=l.some(c=>c.state==="failed")?"failed":l.some(c=>c.state==="running")?"running":l.some(c=>c.state==="paused")?"paused":l.length>0&&l.every(c=>c.state==="completed")?"completed":"waiting",u=o==="download"&&d==="waiting"&&s.some(c=>e.pendingItemIndices?.includes(c))?{resolving:true}:{};if(l.length===1)return {direction:o,state:d,percent:l[0].percent,...u};if(l.length===0||l.some(c=>!Number.isFinite(c.size)||c.size<=0||c.percent===void 0))return {direction:o,state:d,...u};let y=l.reduce((c,f)=>c+f.size,0);return {direction:o,state:d,percent:Math.round(l.reduce((c,f)=>c+f.size*f.percent,0)/y),...u}}var Mn=4;function vn(e){let n=Math.min(Math.max(e/1e3,0)/10,1);return Math.round(22+24*n)}function yn(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 o=r*i,a=Math.round(o),s=e[Math.max(0,a-1)]??0,l=e[Math.min(e.length-1,a)]??0,d=e[Math.min(e.length-1,a+1)]??0;t.push((s+l+d)/3);}return t}function In(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}from'./chunk-A6UPH4T4.js';import {e,a as a$1}from'./chunk-ZUL5OBYN.js';import {j as j$1,h}from'./chunk-EQSL3SQW.js';import {ua}from'./chunk-527YCOBJ.js';import {a}from'./chunk-WOT6VMZA.js';function ae(e){return e==="default"||e==="board-game-link"||e==="game-preview"}function se(e){return (e??"").trim().replace(/^[?&]+/,"").trim()}function le(e,n){let t=se(n);return e===""||t===""?e:e+(e.includes("?")?"&":"?")+t}function F(e){return e===""||e.startsWith("/")||e.startsWith("?")||e.startsWith("&")?false:e.includes(".")}function de(e){return e===""?"":/^https?:\/\//i.test(e)?e:`https://${e}`}function C(e){return le(ce(e),e.gamePath)}function ce(e){let n=e.domain?.trim()??"",t=e.suffixAddress?.trim()??"",i=e.h5Url?.trim()??"";if(n!==""){if(t==="")return n;if(t.startsWith("/"))return n.replace(/\/$/,"")+t;let r=t.replace(/^&/,""),o=n.includes("?")?"&":t.includes("?")?"":"?";return n+o+r}return /^https?:\/\//i.test(t)?t:F(t)?`https://${t}`:i}function R(e){let n=e.domain?.trim()??"",t=e.suffixAddress?.trim()??"",i=e.h5Url?.trim()??"";return /^https?:\/\//i.test(t)?t:F(t)?`https://${t}`:n!==""?de(C({domain:n,suffixAddress:t,h5Url:i})):/^https?:\/\//i.test(i)?i:F(i)?`https://${i}`:""}function me(e,n){return {id:e.appId??n,name:n,cover:"",...e.appId===void 0?{}:{appId:e.appId},...e.developerId===void 0?{}:{developerId:e.developerId},...e.domain===void 0?{}:{domain:e.domain},...e.suffixAddress===void 0?{}:{suffixAddress:e.suffixAddress},...e.h5Url===void 0?{}:{h5Url:e.h5Url},...e.isDynamic===void 0?{}:{isDynamic:e.isDynamic},...e.productId===void 0?{}:{productId:e.productId}}}function ue(e,n){if(e.configType==="float-link"){let r=R({domain:e.domain,suffixAddress:e.suffixAddress,h5Url:e.h5Url});return r===""?{kind:"refuse"}:{kind:"open-link",url:r}}if(e.configType!=="pinned-game"&&e.configType!=="float-game")return {kind:"refuse"};let t=e.appId?.trim()??"",i=C({domain:e.domain,suffixAddress:e.suffixAddress,h5Url:e.h5Url});return t===""||i===""?{kind:"refuse"}:{kind:"open-game",game:me(e,n.name),currencyType:n.currentCurrencyType??""}}var V={"zh-CN":1,"zh-TW":2,"en-US":3,"vi-VN":4,"th-TH":5};function G(e,n){let t=String(n).trim();return t===""||t==="0"?false:(e??"").split(",").map(i=>i.trim()).filter(i=>i!=="").includes(t)}function z(e){return e in V?e:"en-US"}function Q(e,n){let i={"zh-CN":e.nameZhHans,"zh-TW":e.nameZhHant,"en-US":e.nameEn,"vi-VN":e.nameVi,"th-TH":e.nameTh}[z(n)]?.trim()??"";return i!==""?i:[e.nameEn,e.nameZhHans,e.nameZhHant,e.nameVi,e.nameTh].map(r=>r?.trim()??"").find(r=>r!=="")??""}function fe(e){return e.icon?.trim()||e.iconSmall?.trim()||e.iconMedium?.trim()||e.iconLarge?.trim()||""}function q(e){return C({domain:e.domain,suffixAddress:e.suffixAddress,h5Url:e.h5Url})}function J(e){return (e.appId?.trim()??"")!==""}function pe(e){return e.configType==="float-game"?J(e)&&q(e)!=="":e.configType==="float-link"?R({domain:e.domain,suffixAddress:e.suffixAddress,h5Url:e.h5Url})!=="":false}function ge(e){return e.configType==="float-game"?"half":"page"}function he(e){let n=Q(e.rel,e.locale);return {title:e.channelDescription?.trim()??"",tag:n,name:n}}function Y(e){return [...e].sort((n,t)=>n.configType===t.configType?0:n.configType==="float-game"?1:t.configType==="float-game"?-1:0)}function Me(e,n){if(e===void 0)return {pinnedGame:null,floatingItems:[]};let t=V[z(n.locale)],i=e.filter(r=>r.configType!=="unknown"&&G(r.langTypes,t)&&G(r.currencyTypes,n.currencyType??""));return {pinnedGame:i.find(r=>r.configType==="pinned-game"&&J(r))??null,floatingItems:Y(i.filter(r=>(r.configType==="float-link"||r.configType==="float-game")&&pe(r)))}}function ve(e,n){return [e,n.configType,n.appId??"",n.suffixAddress??n.h5Url??""].join("|")}var H=p();function ye(e$1,n){let t=n.suppressDraft===true?null:e$1.draft,i=t?.text.trim()??"",r,o="",a="";return t!==null?r=i===""?[]:Ce(e$1,i,n.locale):be(e$1)?r=w(Re(e$1,n)):e$1.lastMessageSummary?.kind==="channel-moderation-deleted"||e$1.lastMessageDeletedForEveryone!==void 0?r=w(S(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=w(S(e$1,e$1.lastMessageSummary?.kind==="recalled"?e$1.lastMessageSummary:{kind:"recalled",by:e$1.lastMessageRecalled?.by??""},n)):(o=we(e$1,n),a=e$1.mentionUnreadCount>0?n.labels.mentionBadge:"",r=xe(e$1,n)),{preview:`${a}${o}${r.map(l=>l.text).join("")}`||(t===null?n.labels.emptyPreview:""),previewSegments:r,...Ie(e$1,t!==null),...Pe(e$1,t!==null,n.accountId),senderPrefix:o,mentionBadge:a,time:e(a$1(t?.updatedAt,e$1.timestamp),{locale:n.locale,...n.now===void 0?{}:{now:n.now}}),hasDraft:t!==null}}function w(e){return [{kind:"text",text:e}]}function Ie(e,n){let t=e.lastMessageSummary;if(n||e.lastMessageDeletedForEveryone!==void 0||e.lastMessageRecalled!==void 0||e.lastMessageSystemEvent!==void 0||t===void 0)return {};if(t.kind==="file"||t.kind==="filesAlbum")return {previewMediaKind:"file"};if(t.kind==="mediaAlbum"){let{imageCount:i,videoCount:r,caption:o,firstItemKind:a}=t;return i<=0&&r<=0?{}:o!==void 0&&o!==""&&a!==void 0?{previewMediaKind:a}:i>0&&r>0?{previewMediaKind:"mediaAlbum"}:{previewMediaKind:r>0?"video":"image"}}return t.kind==="image"||t.kind==="video"||t.kind==="gif"||t.kind==="sticker"||t.kind==="voice"?{previewMediaKind:t.kind}:{}}function Pe(e,n,t){return n||e.ref.conversationType!=="direct"||e.lastMessageSenderId!==t||e.lastMessageSendState!==void 0||e.lastMessageDeletedForEveryone!==void 0||e.lastMessageRecalled!==void 0||e.lastMessageSystemEvent!==void 0||e.lastMessageSummary?.kind==="system"||e.lastMessageSummary?.kind==="recalled"||e.lastMessageSummary?.kind==="channel-moderation-deleted"||e.lastMessageReceipt===void 0?{}:{previewReceipt:e.lastMessageReceipt}}function B(e){return e.map(n=>n.kind==="emoji"?{kind:"emoji",text:n.text,code:n.code}:{kind:n.kind,text:n.text})}function Ce(e,n,t){let i=e.draft?.mentions??[],r=[],o={},a=false;for(let l of i){if(l.userId==="0"){a=true;continue}r.includes(l.userId)||r.push(l.userId),l.displayName.trim()!==""&&(o[l.userId]=l.displayName);}let s=a||r.length>0?{atAll:a,atUserIds:r,...Object.keys(o).length===0?{}:{atUsersName:o}}:void 0;return B(ua(n,{mention:s,resolveName:l=>o[l]??l,atAllDisplay:j$1(t),matchers:[H]}))}function xe(e,n){let t=e.lastMessageSummary;if(t!==void 0&&t.kind!=="text"){let o=S(e,t,n);return (t.kind==="mediaAlbum"||t.kind==="filesAlbum")&&t.caption?B(ua(o,{resolveName:a=>n.resolveName(e.ref,a),matchers:[H]})):w(o)}let i=(t?.kind==="text"?t.text:e.lastMessagePreview).trim();if(i==="")return w(n.labels.emptyPreview);let r=e.lastMessageMention?.atUsersName;return B(ua(i,{mention:e.lastMessageMention===void 0?void 0:{...e.lastMessageMention,atUserIds:[...e.lastMessageMention.atUserIds]},resolveName:o=>n.resolveName(e.ref,o,r?.[o]),selfId:n.accountId,atAllDisplay:j$1(n.locale),matchers:[H]}))}function S(e,n,t){return h(Se(n),{locale:t.locale,selfId:t.accountId,resolveName:i=>t.resolveName(e.ref,i)})}function be(e){return e.lastMessageSummary?.kind==="system"||e.lastMessageSenderId==="system"||e.lastMessageSystemEvent!==void 0}function Re(e,n){return e.lastMessageSummary?.kind==="system"?S(e,e.lastMessageSummary,n):e.lastMessageSystemEvent===void 0?e.lastMessagePreview.trim()||n.labels.emptyPreview:S(e,{kind:"system",system:{eventType:e.lastMessageSystemEvent,...e.lastMessageSystemTargetsSelf===true?{targetUserIds:[n.accountId]}:{},...e.lastMessagePreview.trim()===""?{}:{fallbackText:e.lastMessagePreview.trim()}}},n)}function we(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 Se(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 Te=160,Ae=220;function Le(e){let n=Math.max(0,e.showDelayMs??160),t=Math.max(0,e.minimumVisibleMs??220),i=e.now??Date.now,r=e.setTimer??((m,v)=>setTimeout(m,v)),o=e.clearTimer??(m=>clearTimeout(m)),a="",s=false,l=false,d=0,u,y,c=false;function f(){u!==void 0&&o(u),u=void 0;}function g(){y!==void 0&&o(y),y=void 0;}function M(m){l!==m&&(l=m,d=m?i():0,e.onVisibleChange(m));}function h(m){f(),u=r(()=>{u=void 0,!(c||!s||a!==m)&&M(true);},n);}function p(){if(f(),!l)return;let m=t-Math.max(0,i()-d);if(m<=0){M(false);return}g(),y=r(()=>{y=void 0,!(c||s)&&M(false);},m);}return {update(m,v){if(c)return;if(a!==v){a=v,s=m,f(),g(),M(false),m&&h(v);return}if(s=m,m){g(),!l&&u===void 0&&h(v);return}p();},dispose(){c||(c=true,s=false,f(),g(),M(false));}}}var E={placeholder:0,thumbnail:1,local:2,original:3};function ke(e){let n;for(let t of e)t.value!==void 0&&(n===void 0||E[t.quality]>E[n.quality])&&(n=t);return n}function Ee(e,n){return E[n]>=E[e]}function j(e,n){if(n.length===0)return [{text:e,hit:false}];let t=[],i=0;for(let[r,o]of n)r>i&&t.push({text:e.slice(i,r),hit:false}),t.push({text:e.slice(r,o),hit:true}),i=o;return i<e.length&&t.push({text:e.slice(i),hit:false}),t}var Ue=p();function Oe(e,n){let t=e.preview===""?[{kind:"text",text:n.emptyText}]:e.previewParts.flatMap(a=>a.kind==="plain"?[{kind:"text",text:a.text}]:ua(a.text,{mention:a.mention,resolveName:s=>n.resolveName(s,a.mention?.atUsersName?.[s]),atAllDisplay:j$1(n.locale),matchers:[Ue]})),i=t.map(a=>a.text).join(""),r=n.matcher?.match(i)?.ranges??[],o=0;return t.flatMap(a=>{let s=o;o+=a.text.length;let l=r.filter(d=>d.start<o&&d.end>s).map(d=>[Math.max(0,d.start-s),Math.min(a.text.length,d.end-s)]);return a.kind==="emoji"||a.kind==="legacy-emoji-placeholder"?[{...a,hit:l.length>0}]:j(a.text,l).map(d=>({...a,...d}))})}var Ne=280,_e=180;function De(e){return /^data:image\//i.test(e)?true:/\.(?:png|jpe?g|gif|webp|bmp|avif|heic|heif|svg)(?:[?#]|$)/i.test(e)}function X(e,n){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:n}function Fe(e){let n=e.gamePreviewUrl?.trim()??"";return n===""?{url:"",sourceWidth:280,sourceHeight:180,render:"empty"}:{url:n,sourceWidth:X(e.gamePreviewWidth,280),sourceHeight:X(e.gamePreviewHeight,180),render:e.imageLoadFailed===true||!De(n)?"document":"image"}}function U(e){return `${e.conversationType}:${e.conversationId}`}function Ge(e,n){let t=n===null?null:U(n),i=new Set;return e.filter(r=>{let o=U(r.ref);return r.ref.conversationType!=="group"&&r.ref.conversationType!=="channel"||o===t||i.has(o)?false:(i.add(o),true)}).map((r,o)=>({item:r,index:o})).sort((r,o)=>Number(o.item.pinned)-Number(r.item.pinned)||+(o.item.unreadCount>0)-+(r.item.unreadCount>0)||r.index-o.index).slice(0,20).map(({item:r})=>({conversationType:r.ref.conversationType,conversationId:r.ref.conversationId}))}function Ve(e){let n=false,t=null,i,r=false,o=0,a=false,s,l=new Set,d;function u(h,p,m){let v=`${h}:${p??""}`;v!==s&&(s=v,e.diagnostics?.record("debug","chat-kit","history","conversation-prefetch-state",()=>({conversation:m,data:{phase:h,reason:p,attemptedCount:l.size}})));}function y(){o+=1,r=false,i?.(),i=void 0;}function c(){y(),d?.controller.abort(),d=void 0,a=false,l.clear(),t=null,s=void 0;}function f(){return Ge(e.getCandidates(),e.getActiveRef()).filter(h=>!l.has(U(h)))}async function g(){if(r=false,i=void 0,n)return;if(!e.getRunnable()){u("paused","host-not-ready");return}let h=e.getClient();if(h!==t||h===null){M();return}let p=f()[0];if(d!==void 0)return;if(p===void 0){u("exhausted","no-candidates");return}let m={controller:new AbortController,key:U(p)};d=m,a=false,l.add(m.key),u("running",void 0,p);let v=false;try{let k=await h.conversations.prefetchRecent([p],{signal:m.controller.signal});if(d!==m)return;v=k.some(oe=>oe.status==="cancelled"),v&&l.delete(m.key);}catch(k){d===m&&!m.controller.signal.aborted&&e.onError(k);}finally{d===m&&(m.controller.signal.aborted&&l.delete(m.key),d=void 0,a||!v&&!m.controller.signal.aborted?M():u("paused",m.controller.signal.aborted?"host-cancelled":"sdk-cancelled"));}}function M(){if(n)return;let h=e.getClient();if(h!==t&&(c(),t=h),!e.getRunnable()||t===null){y(),d?.controller.abort(),u("paused",t===null?"client-unavailable":"host-not-ready");return}if(d!==void 0){a=true;return}if(r)return;if(f().length===0){u("exhausted","no-candidates");return}r=true,u("scheduled");let p=++o,m=e.scheduleIdle(()=>{r&&p===o&&g();});r&&(i=m);}return {refresh:M,reset:c,dispose(){n=true,c();}}}function He(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})}function W(e,n){if(n===void 0){if(e.contentType==="image")return e.body.image;let i=e.body.mediaAlbum;if(e.contentType!=="mediaAlbum"||i?.items.length!==1||!i.caption?.trim())return;n=0;}let t=e.contentType==="mediaAlbum"?e.body.mediaAlbum?.items[n]:void 0;return t?.kind==="image"?t:void 0}function Be(e){return e?.contentType==="mediaAlbum"?e.body.mediaAlbum?.caption??"":e?.contentType==="filesAlbum"?e.body.filesAlbum?.caption??"":e?.body.text??""}function je(e,n){return e===void 0?void 0:W(e,n)?.url}function Z(e,n){return e!==void 0&&e.status==="sent"&&e.conversationType!=="supergroup"&&e.recalled===void 0&&e.deletedForEveryone===void 0&&W(e,n)!==void 0}function We(e,n,t,i){let r=T(e),o=W(n,i),a=i??(n.contentType==="mediaAlbum"?0:void 0),s={conversationType:n.conversationType,conversationId:n.conversationId},l=()=>r===null||!r.isCurrent()||!t()?false:Z(n,i),d=()=>{if(!l())throw new DOMException("Image copy is no longer active","AbortError")};return {isCurrent:l,async loadOriginal(){if(d(),s.conversationType==="supergroup")throw new Error("Unsupported image copy conversation");let u=await r.client.media.download({conversation:{...s,conversationType:s.conversationType},messageId:n.id,...a===void 0?{}:{itemIndex:a}});return d(),u},async loadThumbnail(){d();let u=o?.thumbData;if(u===void 0||u.length===0)throw new Error("Image thumbnail unavailable");return new Blob([new Uint8Array(u)])}}}var te={};a(te,{acquireMediaBlob:()=>ze,detectImageMime:()=>ee,detectVideoMime:()=>ne,loadCachedImageObjectUrl:()=>en,loadCachedMediaAlbumItemObjectUrl:()=>Xe,loadCachedVideoObjectUrl:()=>Je,loadFileObjectUrl:()=>nn,loadImageObjectUrl:()=>Ze,loadMediaAlbumItemObjectUrl:()=>Ye,loadVideoObjectUrl:()=>qe,loadVoiceBytes:()=>Qe,prepareLocalMediaPreview:()=>$e,prioritizeMediaDownload:()=>Ke});function A(e,n){if(e.conversationType!=="supergroup")return {conversation:{conversationType:e.conversationType,conversationId:e.conversationId},messageId:e.id,...n===void 0?{}:{itemIndex:n}}}function Ke(e,n,t){let i=e.getClient(),r=A(n,t);if(i===null||r===void 0)throw new Error("media download unavailable");i.media.prioritizeDownload(r);}async function L(e,n,t,i){let r=e.getClient(),o=A(n,i);if(r===null||o===void 0)throw new Error("media download unavailable");let a=t===void 0?void 0:r.media.subscribe(s=>{let l=s.find(d=>d.direction==="download"&&d.messageId===o.messageId&&d.itemIndex===i&&d.ref.conversationType===o.conversation.conversationType&&d.ref.conversationId===o.conversation.conversationId);l!==void 0&&t(l.percent);});try{return await r.media.download(o)}finally{a?.();}}function O(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="IM_SDK_MEDIA_DOWNLOAD_CANCELED"}async function $e(e,n){let t=e.getClient();if(t===null)return null;let i=e.getGeneration(),r=await t.media.prepareLocalPreview(n);return r===null||e.getGeneration()!==i?null:r}function ee(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 N(e){let n=new Uint8Array(await e.slice(0,12).arrayBuffer()),t=ee(n);return t===null?null:URL.createObjectURL(e.type===t?e:e.slice(0,e.size,t))}function ne(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 ze(e,n,t){return e.acquireMediaBlob({conversationType:n.conversationType,conversationId:n.conversationId,messageId:n.id,...t===void 0?{}:{itemIndex:t}})}async function Qe(e,n,t){let i=e.getClient(),r=n.body.voice;if(i===null||r===void 0)return null;let o=e.getSelfVoiceBytes(n.id);if(o!==void 0)return o;let a=e.getGeneration();try{let s=new Uint8Array(await(await L(e,n)).arrayBuffer());return s.length===0?(e.getGeneration()===a&&t.setNote(t.t("media.voiceLoadEmpty")),null):s}catch(s){return e.getGeneration()===a&&t.setNote(t.t("media.voiceLoadFailed",{reason:s instanceof Error?s.message:String(s)})),null}}async function qe(e,n,t,i){let r=e.getClient(),o=n.body.video;if(r===null||o===void 0)return null;let a=e.getGeneration();try{let s=await L(e,n,i);if(s.size===0)return e.getGeneration()===a&&t.setNote(t.t("media.videoOpenEmpty")),null;let l=URL.createObjectURL(s);return e.getGeneration()!==a?(URL.revokeObjectURL(l),null):l}catch(s){return e.getGeneration()===a&&!O(s)&&t.setNote(t.t("media.videoLoadFailed",{reason:s instanceof Error?s.message:String(s)})),null}}async function Je(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 o=await t.media.getCached(i);if(o===null||o.size===0||e.getGeneration()!==r)return null;let a=new Uint8Array(await o.slice(0,12).arrayBuffer()),s=o.type||ne(a);return e.getGeneration()!==r?null:URL.createObjectURL(o.type===s?o:o.slice(0,o.size,s))}catch{return null}}async function Ye(e,n,t,i,r){let o=e.getClient(),a=n.body.mediaAlbum?.items[t];if(o===null||a===void 0)return null;let s=a.kind==="video",l=e.getGeneration();try{let d=await L(e,n,r,t);if(s&&d.size===0)return e.getGeneration()===l&&i.setNote(i.t("media.videoOpenEmpty")),null;let u=s?URL.createObjectURL(d):await N(d);return u===null?(e.getGeneration()===l&&i.setNote(i.t("media.imageInvalid",{size:d.size})),null):e.getGeneration()!==l?(URL.revokeObjectURL(u),null):u}catch(d){return e.getGeneration()===l&&!O(d)&&i.setNote(i.t(s?"media.videoLoadFailed":"media.imageLoadFailed",{reason:d instanceof Error?d.message:String(d)})),null}}async function Xe(e,n,t){let i=e.getClient(),r=n.body.mediaAlbum?.items[t],o=A(n,t);if(i===null||o===void 0||r===void 0||!/^https?:\/\//i.test(r.url))return null;let a=e.getGeneration();try{let s=await i.media.getCached(o);if(s===null||s.size===0||e.getGeneration()!==a)return null;let l=r.kind==="video"?URL.createObjectURL(s):await N(s);return l===null?null:e.getGeneration()!==a?(URL.revokeObjectURL(l),null):l}catch{return null}}async function Ze(e,n,t){let i=e.getClient(),r=n.body.image;if(i===null||r===void 0)return null;let o=e.getGeneration();try{let a=await L(e,n),s=await N(a);return s===null?(e.getGeneration()===o&&t.setNote(t.t("media.imageInvalid",{size:a.size})),null):e.getGeneration()!==o?(URL.revokeObjectURL(s),null):s}catch(a){return e.getGeneration()===o&&!O(a)&&t.setNote(t.t("media.imageLoadFailed",{reason:a instanceof Error?a.message:String(a)})),null}}async function en(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 o=await t.media.getCached(i);if(o===null||o.size===0||e.getGeneration()!==r)return null;let a=await N(o);return a===null?null:e.getGeneration()!==r?(URL.revokeObjectURL(a),null):a}catch{return null}}async function nn(e,n,t,i,r){let o=e.getClient(),a=r===void 0?n.body.file:n.body.filesAlbum?.items[r];if(o===null||a===void 0)return null;let s=e.getGeneration();try{let l=await L(e,n,i,r);if(l.size===0)return e.getGeneration()===s&&t.setNote(t.t("media.fileDownloadEmpty")),null;let d=URL.createObjectURL(l);return e.getGeneration()!==s?(URL.revokeObjectURL(d),null):d}catch(l){return e.getGeneration()===s&&!O(l)&&t.setNote(t.t("media.fileDownloadFailed",{reason:l instanceof Error?l.message:String(l)})),null}}var re={};a(re,{markReadUpTo:()=>tn});function tn(e,n,t,i){let r=T(e);if(r===null||n.conversationId===""||t==="")return;let o=r.client.conversations.list().find(s=>s.id===n.conversationId&&s.type===n.conversationType);if(o?.manuallyUnread===true&&o.unreadCount<=0){r.client.conversations.markConversationRead(n).catch(s=>{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:s}}));});return}if(o?.type==="group"&&o.unreadCount<=0)return;let a=i.getConversationHandle();a===void 0||a.ref.conversationId!==n.conversationId||a.ref.conversationType!==n.conversationType||a.markRead(t).catch(s=>{r.isCurrent()&&i.getConversationHandle()===a&&e.getDiagnostics().record("warn","chat-kit","message","mark-read-skipped",()=>({conversation:n,data:{messageId:t},error:{message:"markRead \u8DF3\u8FC7",data:s}}));});}function rn(e){return e.deletedForEveryone!==void 0?"hidden":e.recalled!==void 0?"recalled":"content"}var on=/\b(?:https?:\/\/|www\.)[^\s<>"')】]+/gi,an=/\b(?:https?:\/\/|www\.)/i,sn=/[),.!?;:,。!?;:、)】]+$/u;function ie(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 ln(e){return an.test(e)}function dn(){return e=>{let n=[];for(let t of e.matchAll(on)){if(t.index===void 0)continue;let i=t[0].replace(sn,"");if(i==="")continue;let r=ie(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 I(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 cn(e){if(I(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&&I(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(I(t.preferredWidth,`${r}.preferredWidth`),I(t.minWidth,`${r}.minWidth`),I(t.maxWidth,`${r}.maxWidth`),I(t.minHeight,`${r}.minHeight`),I(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 mn(e){let{intrinsicWidth:n,intrinsicHeight:t,availableWidth:i,policy:r}=e;I(i,"availableWidth"),cn(r);let o=Number.isFinite(n)&&Number.isFinite(t)&&n>0&&t>0,a=o?n/t:r.fallbackAspectRatio,s=r.rules.find(g=>{let M=g.minAspectRatio===void 0||a>=g.minAspectRatio,h=g.maxAspectRatio===void 0||a<g.maxAspectRatio;return M&&h});if(s===void 0)throw new Error(`\u5A92\u4F53\u5C55\u793A\u7B56\u7565\u6CA1\u6709\u5339\u914D\u5BBD\u9AD8\u6BD4 ${a}`);let l=!s.allowUpscale&&o?Math.min(s.preferredWidth,n):s.preferredWidth,d=Math.min(i,s.maxWidth,Math.max(s.minWidth,l)),u=Math.max(1,Math.round(d)),y=u/a,c=Math.min(s.maxHeight,Math.max(s.minHeight,y)),f=Math.max(1,Math.round(c));return {width:u,height:f,aspectRatio:u/f,sourceAspectRatio:a,ruleId:s.id,fit:s.fit,aspectClamped:c!==y}}function un(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 fn(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,o=a=>a.toString().padStart(2,"0");return t>0?`${t}:${o(i)}:${o(r)}`:`${i}:${o(r)}`}function pn(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 gn(e){let n=e.lastIndexOf(".");return n>-1&&n<e.length-1?e.slice(n+1).toLowerCase():""}function hn(e){let{message:n}=e,t=c=>c.messageId===n.id&&c.ref.conversationId===n.conversationId&&c.ref.conversationType===n.conversationType,i=e.uploadTask!==void 0&&t(e.uploadTask)?e.uploadTask:void 0,r=n.status==="uploading"||n.status==="failed"&&(n.failure?.displayCode?.startsWith("media.")===true||i!==void 0&&i.state!=="completed"),o=r?"upload":"download",a=n.body.mediaAlbum?.items??n.body.filesAlbum?.items,s=e.aggregateFrom===void 0?[e.itemIndex]:(a??[]).map((c,f)=>f).slice(e.aggregateFrom),l=s.map(c=>{let f=c===void 0?n.body.image??n.body.video??n.body.file:a?.[c];if(r){let p=c===void 0?void 0:i?.items?.find(v=>v.itemIndex===c);return {state:p?.state==="completed"?"completed":n.status==="failed"?"failed":i?.state==="paused"?"paused":(p?.state??i?.state)==="running"?"running":"waiting",percent:p?.percent??(c===void 0?i?.percent:void 0),size:p?.bytesTotal??f?.size}}let g=e.downloadTasks.find(p=>t(p)&&p.itemIndex===c&&p.direction==="download"),M=g?.state==="failed"?"failed":g?.state==="running"||g?.state==="queued"?"running":g?.state==="completed"&&!e.unavailableItemIndices?.includes(c)||f?.url.startsWith("blob:")||e.availableItemIndices?.includes(c)?"completed":"waiting",h=M==="completed"?100:M==="waiting"&&g?.state==="completed"?0:g?.percent??0;return {state:M,percent:h,size:g?.bytesTotal??f?.size}}),d=l.some(c=>c.state==="failed")?"failed":l.some(c=>c.state==="running")?"running":l.some(c=>c.state==="paused")?"paused":l.length>0&&l.every(c=>c.state==="completed")?"completed":"waiting",u=o==="download"&&d==="waiting"&&s.some(c=>e.pendingItemIndices?.includes(c))?{resolving:true}:{};if(l.length===1)return {direction:o,state:d,percent:l[0].percent,...u};if(l.length===0||l.some(c=>!Number.isFinite(c.size)||c.size<=0||c.percent===void 0))return {direction:o,state:d,...u};let y=l.reduce((c,f)=>c+f.size,0);return {direction:o,state:d,percent:Math.round(l.reduce((c,f)=>c+f.size*f.percent,0)/y),...u}}var Mn=4;function vn(e){let n=Math.min(Math.max(e/1e3,0)/10,1);return Math.round(22+24*n)}function yn(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 o=r*i,a=Math.round(o),s=e[Math.max(0,a-1)]??0,l=e[Math.min(e.length-1,a)]??0,d=e[Math.min(e.length-1,a+1)]??0;t.push((s+l+d)/3);}return t}function In(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{He as A,T as B,Be as C,je as D,Z as E,We as F,te as G,re as H,rn as I,ie as J,ln as K,dn as L,mn as M,un as N,fn as O,pn as P,gn as Q,hn as R,Mn as S,vn as T,yn as U,In as V,ae as a,C as b,R as c,ue as d,V as e,G as f,Q as g,fe as h,q as i,ge as j,he as k,Y as l,Me as m,ve as n,ye as o,Te as p,Ae as q,Le as r,ke as s,Ee as t,j as u,Oe as v,Ne as w,_e as x,Fe as y,Ve as z};
@@ -0,0 +1 @@
1
+ import {c as c$1}from'./chunk-EQSL3SQW.js';import {x as x$1}from'./chunk-527YCOBJ.js';var v=864e5,w=["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 P(e,t){if(u(e))return e;if(u(t))return t}function b(e,t){return P(t,e)}function m(e){if(!u(e))return "";let t=new Date(e);return `${t.getFullYear()}-${t.getMonth()+1}-${t.getDate()}`}function h(e,t){return u(e)?u(t)?m(e)!==m(t):true:false}function F(e,t){return T(e,t,"conversation")}function L(e,t){return T(e,t,"separator")}function T(e,t,r){if(!u(e))return "";let n=t.now??new Date;if(Number.isNaN(n.getTime()))return "";let o=new Date(e),a=y(n)-y(o),i=c$1(t.locale);return o.getFullYear()!==n.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())/v}function x(e,t){return t.weekdays[w[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 K(e){if(e.markers.length===0)return null;let t=e.viewportTop+e.overlayTop;if(e.markers[0].top>t+1)return null;let r=0;for(let d=0;d<e.markers.length&&!(e.markers[d].top>t+1);d+=1)r=d;let n=e.markers[r],o=t+e.overlayHeight,a=e.markers.filter(d=>d.top<o+1&&d.top+d.height>t-1).at(-1),i=a===void 0?0:Math.max(0,Math.min(a.top+a.height,o)-Math.max(a.top,t)),s=a===void 0?1:Math.max(1,Math.min(a.height,e.overlayHeight)),l=Math.min(1,i/s);return {key:n.key,label:n.label,inlineOpacity:1-l,...a===void 0?{}:{inlineDateKey:a.key}}}var C={text:"text",image:"image",video:"video",voice:"voice",file:"file",filesAlbum:"filesAlbum",sticker:"sticker",contact:"contact",miniProgram:"miniProgram",robot:"robot",game:"game",transfer:"transfer",gift:"gift",redPacket:"redPacket",call:"call",liveRoom:"liveRoom",mediaAlbum:"mediaAlbum",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 "filesAlbum":return (e.body.filesAlbum?.items.length??0)>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 "robot":return e.body.robot!==void 0&&Array.isArray(e.body.robot.modules)&&Array.isArray(e.body.robot.commands);case "transfer":return e.body.transfer!==void 0&&typeof e.body.transfer.serialNumber=="string";case "gift":{let t=e.body.gift;return t!==void 0&&typeof t.serialNumber=="string"&&typeof t.giftName=="string"&&(t.giftType===0||t.giftType===1||t.giftType===2)}case "redPacket":{let t=e.body.redPacket;return t!==void 0&&t.packetId.trim()!==""&&(t.packetType===1||t.packetType===2||t.packetType===3||t.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 "liveRoom":{let t=e.body.liveRoom;return t!==void 0&&typeof t.liveRoomId=="string"&&(t.liveType===""||t.liveType==="video"||t.liveType==="voice"||t.liveType==="dual-phone"||t.liveType==="screen-record"||t.liveType==="voice-chat")&&(t.liveRoomStatus==="preview"||t.liveRoomStatus==="live"||t.liveRoomStatus==="ended")&&typeof t.isFocus=="boolean"&&typeof t.isReservation=="boolean"}case "game":{let t=e.body.game;return t?.gameType==="dice"?Number.isInteger(t.value)&&t.value>=1&&t.value<=6:t?.gameType==="rock-paper-scissors"&&Number.isInteger(t.value)&&t.value>=1&&t.value<=3}case "mediaAlbum":{let t=e.body.mediaAlbum;return t!==void 0&&t.items.length>0&&t.items.every(r=>typeof r.url=="string"&&r.url!=="")}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"?x$1(e.body.sticker.imageType):C[e.contentType]:"unknown"}function _(e){let t=[...e.leadingItems??[]],r=e.entryUnread.state==="located"?e.entryUnread:null,n,o=null,a=false;for(let i of e.messages){let s=b(i.createdAt,i.serverTime),l=s!==void 0&&h(s,n);s!==void 0&&l&&t.push({kind:"date-separator",key:`date-${m(s)}-${i.id}`,label:e.formatDate(s)}),n=s,!a&&r!==null&&i.id===r.firstMessageId&&(t.push({kind:"entry-unread",key:`entry-unread-${i.id}`,...r.count===void 0?{}:{count:r.count}}),a=true);let d=e.beforeMessageItems?.(i)??[];if(t.push(...d),I(i)==="system"){t.push({kind:"system",key:i.id,message:i}),o=null;continue}t.push({kind:"message",key:`message-${i.id}`,message:i,firstOfRun:l||i.senderId!==o}),o=i.senderId;}return t}function U(e){let t=e.targetTop-e.viewportTop,r=e.currentScrollTop+t-(e.viewportHeight-e.targetHeight)/2,n=Math.max(0,e.scrollHeight-e.viewportHeight);return Math.min(n,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,t){return e.find(r=>r.bottom>t.top&&r.top<t.bottom)??e[0]}function f(e){return e.anchorTop??e.top}function B(e,t){let r=H(e,t);return r===void 0?void 0:{id:r.id,offset:f(r)-t.top}}function J(e,t,r){if(e===void 0)return;let n=t.find(o=>o.id===e.id);return n!==void 0&&n.bottom>r.top&&n.top<r.bottom?{id:e.id,offset:f(n)-r.top}:B(t,r)??e}function V(e,t,r){if(e===void 0)return;let n=t.find(o=>o.id===e.id);return n===void 0?void 0:f(n)-r.top-e.offset}function Q(e,t,r=3){return !Number.isFinite(r)||r<=0?[]:e.filter(n=>n.bottom>t.top&&n.top<t.bottom).slice(0,Math.floor(r)).map(n=>({id:n.id,offset:f(n)-t.top}))}function X(e,t,r){for(let n of e){let o=V(n,t,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 te(e){return e.isLoadingOlder&&e.previousTailId!==void 0&&e.previousTailId!==e.currentTailId&&e.previousMessageIds.includes(e.currentTailId)}function re(e,t){return e!==void 0&&!t.has(e)}async function ne(e,t){let r=0;for(;e()&&!(await t()<=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 t=Math.max(0,e.margin);return e.messageTop<e.viewportBottom-t&&e.messageBottom>e.viewportTop+t}function le(e){let t=new Set;function r(s){return s===t.size?false:(e?.(t.size),true)}function n(s){let l=t.size;for(let d of s)d!==""&&t.add(d);return r(l)}function o(s,l){return M(l)&&n(s)}function a(s){let l=t.size;for(let d of s)t.delete(d);return r(l)}function i(){let s=t.size;return t.clear(),r(s)}return {get count(){return t.size},add:n,trackRemote:o,acknowledgeVisible:a,clear:i}}export{M as A,ae as B,le as C,P as a,b,m as c,h as d,F as e,L as f,K 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,te as v,re as w,ne as x,oe as y,ie as z};
package/dist/i18n.d.ts CHANGED
@@ -597,20 +597,21 @@ interface ImMediaAlbumBody {
597
597
  /** 媒体项,顺序即用户选择顺序(决定宫格 index 与首项朝向)。 */
598
598
  items: readonly ImMediaAlbumItem[];
599
599
  }
600
- /** 直播间分享的直播类型。wire `liveType`:1 视频、2 语音、3 双手机、4 单手机录屏、5 语聊房。 */
600
+ /** 直播间分享的直播类型。wire `liveType`:1 视频、2 语音、3 双手机、4 单手机录屏、5 语聊房。空字符串对应 wire 0,表示调用方没有类型,不猜成某一种直播。 */
601
601
  type ImLiveRoomType = 'video' | 'voice' | 'dual-phone' | 'screen-record' | 'voice-chat';
602
602
  /** 直播间分享的房间状态。wire `liveRoomStatus`:1 预告、2 直播中、3 已结束。 */
603
603
  type ImLiveRoomStatus = 'preview' | 'live' | 'ended';
604
604
  /**
605
- * 直播间分享卡片正文(contentType==='liveRoom',协议 BMessage.contentType=30,fields 98-112)。
605
+ * 直播间分享卡片正文(contentType==='liveRoom',协议 BMessage.contentType=30,fields 98-113)。
606
606
  *
607
607
  * @remarks 调用方先拿到直播间快照再写入本结构。Core 不请求直播接口,也不把缺省枚举猜成某一种直播。
608
608
  * `uid` 是声网 SDK 初始化用的 UID,不是 IM 用户 id。
609
609
  */
610
610
  interface ImLiveRoomBody {
611
- /** 直播间 ID(BMessage.liveRoomId)。 */
611
+ /** 直播间 ID(BMessage.liveRoomId)。没有房间号时为空字符串。 */
612
612
  liveRoomId: string;
613
- liveType: ImLiveRoomType;
613
+ /** 没有直播类型时为空字符串。 */
614
+ liveType: ImLiveRoomType | '';
614
615
  liveRoomStatus: ImLiveRoomStatus;
615
616
  /** 当前账号是否已关注主播。协议 bool 无法区分未设置,false 也是有效状态。 */
616
617
  isFocus: boolean;
@@ -630,6 +631,8 @@ interface ImLiveRoomBody {
630
631
  livePreviewId?: string;
631
632
  /** 直播间人数字符串,保持协议原文,不在 Core 换算。 */
632
633
  liveRoomViewers?: string;
634
+ /** 点赞数十进制字符串,保持协议原文,不在 Core 换算。 */
635
+ liveRoomLikes?: string;
633
636
  }
634
637
  interface ImMessageBody {
635
638
  /** P0 文本内容(明文,解密后的结果)。 */
package/dist/i18n.js CHANGED
@@ -1 +1 @@
1
- import'./chunk-SXY56EVC.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-ICG32ESA.js';import'./chunk-FMEZINTJ.js';import'./chunk-WOT6VMZA.js';
1
+ import'./chunk-SXY56EVC.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-EQSL3SQW.js';import'./chunk-527YCOBJ.js';import'./chunk-WOT6VMZA.js';
package/dist/index.d.ts CHANGED
@@ -619,20 +619,21 @@ interface ImMediaAlbumBody {
619
619
  /** 媒体项,顺序即用户选择顺序(决定宫格 index 与首项朝向)。 */
620
620
  items: readonly ImMediaAlbumItem[];
621
621
  }
622
- /** 直播间分享的直播类型。wire `liveType`:1 视频、2 语音、3 双手机、4 单手机录屏、5 语聊房。 */
622
+ /** 直播间分享的直播类型。wire `liveType`:1 视频、2 语音、3 双手机、4 单手机录屏、5 语聊房。空字符串对应 wire 0,表示调用方没有类型,不猜成某一种直播。 */
623
623
  type ImLiveRoomType = 'video' | 'voice' | 'dual-phone' | 'screen-record' | 'voice-chat';
624
624
  /** 直播间分享的房间状态。wire `liveRoomStatus`:1 预告、2 直播中、3 已结束。 */
625
625
  type ImLiveRoomStatus = 'preview' | 'live' | 'ended';
626
626
  /**
627
- * 直播间分享卡片正文(contentType==='liveRoom',协议 BMessage.contentType=30,fields 98-112)。
627
+ * 直播间分享卡片正文(contentType==='liveRoom',协议 BMessage.contentType=30,fields 98-113)。
628
628
  *
629
629
  * @remarks 调用方先拿到直播间快照再写入本结构。Core 不请求直播接口,也不把缺省枚举猜成某一种直播。
630
630
  * `uid` 是声网 SDK 初始化用的 UID,不是 IM 用户 id。
631
631
  */
632
632
  interface ImLiveRoomBody {
633
- /** 直播间 ID(BMessage.liveRoomId)。 */
633
+ /** 直播间 ID(BMessage.liveRoomId)。没有房间号时为空字符串。 */
634
634
  liveRoomId: string;
635
- liveType: ImLiveRoomType;
635
+ /** 没有直播类型时为空字符串。 */
636
+ liveType: ImLiveRoomType | '';
636
637
  liveRoomStatus: ImLiveRoomStatus;
637
638
  /** 当前账号是否已关注主播。协议 bool 无法区分未设置,false 也是有效状态。 */
638
639
  isFocus: boolean;
@@ -652,6 +653,8 @@ interface ImLiveRoomBody {
652
653
  livePreviewId?: string;
653
654
  /** 直播间人数字符串,保持协议原文,不在 Core 换算。 */
654
655
  liveRoomViewers?: string;
656
+ /** 点赞数十进制字符串,保持协议原文,不在 Core 换算。 */
657
+ liveRoomLikes?: string;
655
658
  }
656
659
  interface ImMessageBody {
657
660
  /** P0 文本内容(明文,解密后的结果)。 */
@@ -1987,10 +1990,10 @@ interface ImProfilePort {
1987
1990
  * 会话收藏可展示的内容类型;与 iOS `isSupportCollectionMsgType` 对齐。
1988
1991
  *
1989
1992
  * @remarks 这些值与收藏接口的 `content_type` 数值一一对应,而那个数值就是消息自己的 contentType
1990
- * (1=文本 2=图片 3=视频 4=语音 5=位置 11=文件 28=媒体合集 29=文件合集),不是另一套收藏专用枚举。
1993
+ * (1=文本 2=图片 3=视频 4=语音 5=位置 11=文件 28=媒体合集 29=文件合集 30=直播间分享),不是另一套收藏专用枚举。
1991
1994
  * Android `MessageCollectExecute` 直接写 `message.getContentType()`,iOS 写 `msg.msgType`,两端一致。
1992
1995
  */
1993
- type ImSessionFavoriteKind = 'text' | 'image' | 'video' | 'voice' | 'location' | 'file' | 'mediaAlbum' | 'filesAlbum';
1996
+ type ImSessionFavoriteKind = 'text' | 'image' | 'video' | 'voice' | 'location' | 'file' | 'mediaAlbum' | 'filesAlbum' | 'liveRoom';
1994
1997
  /** 服务端一条会话收藏快照;列表以 HTTP 为准,不回写原消息。 */
1995
1998
  interface ImSessionFavoriteItem$1 {
1996
1999
  readonly collectId: string;
@@ -2978,8 +2981,10 @@ declare function canTransmit(message: ForwardCandidateMessage): boolean;
2978
2981
  */
2979
2982
 
2980
2983
  /**
2981
- * 允许被表情回应的父消息正文类型,与 iOS `SZChatReactionService.supportsReactionForMessage:` 的协议白名单一致:
2982
- * 文本、图片、视频、语音、文件、贴纸、名片、小程序、骰子/猜拳,以及转账、通话记录卡片和红包卡片本身。
2984
+ * 允许被表情回应的父消息正文类型。
2985
+ * 文本、图片、视频、语音、文件、贴纸、名片、小程序、骰子/猜拳,以及转账、通话记录卡片和红包卡片本身,
2986
+ * 与 iOS `SZChatReactionService.supportsReactionForMessage:` 一致。
2987
+ * 媒体合集和直播间分享是后续显式放行:回应挂在整条消息上。
2983
2988
  * 系统灰条(含红包领取通知、群提示、频道通知)与 unknown(未知/未来类型)不在白名单内。
2984
2989
  *
2985
2990
  * 这里刻意维持显式白名单而不是「排除 system 和 unknown」:新增 contentType 时默认拒绝,
@@ -6718,11 +6723,11 @@ interface ImSessionFavoritesApi {
6718
6723
  delete: (collectIds: readonly string[]) => Promise<void>;
6719
6724
  }
6720
6725
  /**
6721
- * 对齐 iOS Cell:文本 / 图 / 视频 / 语音 / 文件 / 媒体合集 / 文件合集可收藏;表情、名片、通话等不可。
6726
+ * 对齐 iOS Cell:文本 / 图 / 视频 / 语音 / 文件 / 媒体合集 / 文件合集 / 直播间分享可收藏;表情、名片、通话等不可。
6722
6727
  *
6723
6728
  * 两端的收藏类型判定都是**黑名单**(iOS `isSupportCollectionMsgType` 排除名片/通话/表情/游戏/未知;
6724
- * Android `isCanCollectByType` 排除通话/表情/名片/未知/解密失败),媒体合集不在黑名单里,
6725
- * 收藏接口的 `content_type` 直接用消息自己的 28。
6729
+ * Android `isCanCollectByType` 排除通话/表情/名片/未知/解密失败)。媒体合集与直播间分享不在黑名单里,
6730
+ * 收藏接口的 `content_type` 直接用消息自己的 28 / 30。
6726
6731
  */
6727
6732
  declare function resolveSessionFavoriteKindFromMessage(message: ImMessageView): ImSessionFavoriteKind | null;
6728
6733
  /**
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import'./chunk-IDECJJXC.js';import'./chunk-SXY56EVC.js';export{q as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,p as DEFAULT_LOADING_SHOW_DELAY_MS,x as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,w as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,e as MINI_PROGRAM_LANG_NUMBERS,S as SPIKE_STEP,N as calculateMediaBox,E as canCopyMessageImage,t as canPromoteMediaPresentationSource,B as captureRuntimeClientOperation,A as captureRuntimeOperation,n as channelMiniProgramRelKey,z as createConversationPrefetchController,r as createDelayedLoadingIndicator,L as createLinkMatcher,F as createMessageImageCopySource,f as csvIncludes,d as decideChannelMiniProgramRelOpen,P as formatFileSize,O as formatMediaDuration,Q as getFileExtension,D as getMessageCopyImageUrl,C as getMessageCopyText,K as hasLinkCandidate,u as highlightSegments,a as isMiniProgramShowTypeOpenable,G as mediaService,J as normalizeLinkHref,V as placeholderWaveform,H as readService,U as resampleWaveform,s as resolveBestMediaPresentationSource,h as resolveChannelMiniProgramRelIcon,g as resolveChannelMiniProgramRelName,j as resolveChannelMiniProgramRelOpenSurface,i as resolveChannelMiniProgramRelUrl,k as resolveChannelPinnedGameCopy,o as resolveConversationListPresentation,M as resolveMediaPresentation,R as resolveMediaTransferPresentation,v as resolveMessageSearchPreview,c as resolveMiniProgramFloatLinkUrl,y as resolveMiniProgramGamePreviewLayout,b as resolveMiniProgramOpenUrl,I as resolveQuotedMessagePresentation,m as resolveVisibleChannelMiniProgramRels,l as sortChannelMiniProgramFloatingItems,T as spikeCountForDuration}from'./chunk-ZAX3Q5WO.js';export{j as DEFAULT_EMOJI_ASSET_BASE,i as EMOJI_CATALOG,c as EMOJI_GAME_DICE_STABLE_KEY,b as EMOJI_GAME_RPS_STABLE_KEY,m as EMOJI_TOKEN_RE,P as MAX_BATCH_FILES,a as MAX_RECENT_EMOJI_COUNT,g as UNICODE_EMOJI_CATALOG,O as blockReasonForChannelSession,N as blockReasonForChannelState,V as blockReasonForGroupState,Y as blockReasonForSession,I as canEditMessage,w as canPinChannelMessage,v as canPinGroupMessage,x as canPinMessage,H as canRecallMessage,fa as cancelMediaUpload,T as classifyGifFile,S as classifyMediaFile,s as countUnreadConversations,u as createChatRuntime,p as createEmojiMatcher,K as decideConversationAction,M as decideMemberTargetAction,L as decideMessageAction,l as emojiAssetUrl,n as emojiUrlByCode,Fa as fetchConversationFileBatch,Ga as fetchConversationImageBatch,Da as fetchConversationMessageBatch,Ha as fetchConversationVideoBatch,Ia as fetchConversationVoiceBatch,Ja as fetchNextConversationSearchBatch,r as formatConversationUnreadBadge,ia as forwardService,o as hasEmojiCandidate,U as isGifFile,y as isPinnedMessageProtected,aa as isVoiceStorageConfigured,Q as mediaBatchBudgetBytes,na as messageService,e as parseUnicodeEmojiCode,sa as pinnedMessageService,d as prependRecentEmoji,Ca as profileService,$ as replaceInterruptedMediaFile,W as requiresConversationEncryption,D as resolveChannelMemberAvatarUrl,C as resolveChannelMemberDisplayName,k as resolveEmojiToken,G as resolveFriendDisplayName,ta as resolveImProfileAccessDestination,A as resolveMemberDisplayName,t as resolveMessageNotificationDecision,F as resolvePublicNickname,E as resolveSenderAvatarUrl,q as resolveStandaloneEmojiMessage,h as resolveUnicodeEmoji,ga as retryMessage,R as runMediaSendBatch,ea as sendAsFilesBatch,J as sendBlockReasonForDecision,ca as sendMediaAlbum,_ as sendMediaFile,da as sendMediaFilesBatch,Z as sendText,ba as sendVoice,X as supportsConversationMention,f as unicodeEmojiTextFromCode}from'./chunk-RDTT34ZF.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-PAEBGHDI.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-ICG32ESA.js';export{e as IMAGE_MESSAGE_ACCEPT,n as IM_CHAT_FONT_SCALES,g as IM_DIAGNOSTIC_CATEGORIES,j as IM_EMOJI_CATALOG,c as ImPinnedMessageOperationError,m as buildSessionFavoritePlainBody,d as createFaceToFaceGroupQrPayload,o as createImClient,h as createImConsoleDiagnosticSink,r as createImDiagnosticMemoryBuffer,s as createImResourceUploader,i as createSdkDiagnosticWriter,f as isSupportedImageFile,a as migrateImCachePrefix,k as resolveImEmojiToken,l as resolveSessionFavoriteKindFromMessage}from'./chunk-HPS3TBSB.js';export{Ya as MediaTransferError,kb as createVoicePlayer,lb as createVoiceRecordingSession,ib as detectVoiceCapabilities,Za as mediaTransferErrorCodeOf,$a as normalizeMediaUploadCredentials,jb as voiceErrorCodeOf}from'./chunk-ELGE657I.js';export{Aa as EDIT_WINDOW_MS,p as MEDIA_ALBUM_CAPTION_MAX_LENGTH,q as MEDIA_ALBUM_MAX_ITEMS,Ia as REACTION_SUPPORTED_CONTENT_TYPES,Ja as canReactToMessage,Ea as canTransmit,Ca as canTransmitByType,Da as canTransmitContent,x as classifyStickerImageType,pa as createImTextSearchMatcher,na as extractSearchText,oa as getImTextSearchInitial,Cb as parseSessionFavoriteAlbumItems,Fb as parseSessionFavoriteFileItems,Ba as requiresForwardTypeConfirmation,La as resolveChannelAccess,r as resolveMediaAlbumSendContentType,Db as resolveSessionFavoriteAlbumCaption,Bb as resolveSessionFavoriteAlbumItemPreviewUrl,ua as resolveTextSegments,Qa as sortSessions,Ra as sumSessionsUnread}from'./chunk-FMEZINTJ.js';import'./chunk-WOT6VMZA.js';
1
+ import'./chunk-IDECJJXC.js';import'./chunk-SXY56EVC.js';export{q as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,p as DEFAULT_LOADING_SHOW_DELAY_MS,x as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,w as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,e as MINI_PROGRAM_LANG_NUMBERS,S as SPIKE_STEP,N as calculateMediaBox,E as canCopyMessageImage,t as canPromoteMediaPresentationSource,B as captureRuntimeClientOperation,A as captureRuntimeOperation,n as channelMiniProgramRelKey,z as createConversationPrefetchController,r as createDelayedLoadingIndicator,L as createLinkMatcher,F as createMessageImageCopySource,f as csvIncludes,d as decideChannelMiniProgramRelOpen,P as formatFileSize,O as formatMediaDuration,Q as getFileExtension,D as getMessageCopyImageUrl,C as getMessageCopyText,K as hasLinkCandidate,u as highlightSegments,a as isMiniProgramShowTypeOpenable,G as mediaService,J as normalizeLinkHref,V as placeholderWaveform,H as readService,U as resampleWaveform,s as resolveBestMediaPresentationSource,h as resolveChannelMiniProgramRelIcon,g as resolveChannelMiniProgramRelName,j as resolveChannelMiniProgramRelOpenSurface,i as resolveChannelMiniProgramRelUrl,k as resolveChannelPinnedGameCopy,o as resolveConversationListPresentation,M as resolveMediaPresentation,R as resolveMediaTransferPresentation,v as resolveMessageSearchPreview,c as resolveMiniProgramFloatLinkUrl,y as resolveMiniProgramGamePreviewLayout,b as resolveMiniProgramOpenUrl,I as resolveQuotedMessagePresentation,m as resolveVisibleChannelMiniProgramRels,l as sortChannelMiniProgramFloatingItems,T as spikeCountForDuration}from'./chunk-YOS2232I.js';export{j as DEFAULT_EMOJI_ASSET_BASE,i as EMOJI_CATALOG,c as EMOJI_GAME_DICE_STABLE_KEY,b as EMOJI_GAME_RPS_STABLE_KEY,m as EMOJI_TOKEN_RE,P as MAX_BATCH_FILES,a as MAX_RECENT_EMOJI_COUNT,g as UNICODE_EMOJI_CATALOG,O as blockReasonForChannelSession,N as blockReasonForChannelState,V as blockReasonForGroupState,Y as blockReasonForSession,I as canEditMessage,w as canPinChannelMessage,v as canPinGroupMessage,x as canPinMessage,H as canRecallMessage,fa as cancelMediaUpload,T as classifyGifFile,S as classifyMediaFile,s as countUnreadConversations,u as createChatRuntime,p as createEmojiMatcher,K as decideConversationAction,M as decideMemberTargetAction,L as decideMessageAction,l as emojiAssetUrl,n as emojiUrlByCode,Fa as fetchConversationFileBatch,Ga as fetchConversationImageBatch,Da as fetchConversationMessageBatch,Ha as fetchConversationVideoBatch,Ia as fetchConversationVoiceBatch,Ja as fetchNextConversationSearchBatch,r as formatConversationUnreadBadge,ia as forwardService,o as hasEmojiCandidate,U as isGifFile,y as isPinnedMessageProtected,aa as isVoiceStorageConfigured,Q as mediaBatchBudgetBytes,na as messageService,e as parseUnicodeEmojiCode,sa as pinnedMessageService,d as prependRecentEmoji,Ca as profileService,$ as replaceInterruptedMediaFile,W as requiresConversationEncryption,D as resolveChannelMemberAvatarUrl,C as resolveChannelMemberDisplayName,k as resolveEmojiToken,G as resolveFriendDisplayName,ta as resolveImProfileAccessDestination,A as resolveMemberDisplayName,t as resolveMessageNotificationDecision,F as resolvePublicNickname,E as resolveSenderAvatarUrl,q as resolveStandaloneEmojiMessage,h as resolveUnicodeEmoji,ga as retryMessage,R as runMediaSendBatch,ea as sendAsFilesBatch,J as sendBlockReasonForDecision,ca as sendMediaAlbum,_ as sendMediaFile,da as sendMediaFilesBatch,Z as sendText,ba as sendVoice,X as supportsConversationMention,f as unicodeEmojiTextFromCode}from'./chunk-A6UPH4T4.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-ZUL5OBYN.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-EQSL3SQW.js';export{e as IMAGE_MESSAGE_ACCEPT,n as IM_CHAT_FONT_SCALES,g as IM_DIAGNOSTIC_CATEGORIES,j as IM_EMOJI_CATALOG,c as ImPinnedMessageOperationError,m as buildSessionFavoritePlainBody,d as createFaceToFaceGroupQrPayload,o as createImClient,h as createImConsoleDiagnosticSink,r as createImDiagnosticMemoryBuffer,s as createImResourceUploader,i as createSdkDiagnosticWriter,f as isSupportedImageFile,a as migrateImCachePrefix,k as resolveImEmojiToken,l as resolveSessionFavoriteKindFromMessage}from'./chunk-SEFYSJSB.js';export{Ya as MediaTransferError,kb as createVoicePlayer,lb as createVoiceRecordingSession,ib as detectVoiceCapabilities,Za as mediaTransferErrorCodeOf,$a as normalizeMediaUploadCredentials,jb as voiceErrorCodeOf}from'./chunk-SWWW7C2U.js';export{Aa as EDIT_WINDOW_MS,p as MEDIA_ALBUM_CAPTION_MAX_LENGTH,q as MEDIA_ALBUM_MAX_ITEMS,Ia as REACTION_SUPPORTED_CONTENT_TYPES,Ja as canReactToMessage,Ea as canTransmit,Ca as canTransmitByType,Da as canTransmitContent,x as classifyStickerImageType,pa as createImTextSearchMatcher,na as extractSearchText,oa as getImTextSearchInitial,Cb as parseSessionFavoriteAlbumItems,Fb as parseSessionFavoriteFileItems,Ba as requiresForwardTypeConfirmation,La as resolveChannelAccess,r as resolveMediaAlbumSendContentType,Db as resolveSessionFavoriteAlbumCaption,Bb as resolveSessionFavoriteAlbumItemPreviewUrl,ua as resolveTextSegments,Qa as sortSessions,Ra as sumSessionsUnread}from'./chunk-527YCOBJ.js';import'./chunk-WOT6VMZA.js';
package/dist/sdk.d.ts CHANGED
@@ -619,20 +619,21 @@ interface ImMediaAlbumBody {
619
619
  /** 媒体项,顺序即用户选择顺序(决定宫格 index 与首项朝向)。 */
620
620
  items: readonly ImMediaAlbumItem[];
621
621
  }
622
- /** 直播间分享的直播类型。wire `liveType`:1 视频、2 语音、3 双手机、4 单手机录屏、5 语聊房。 */
622
+ /** 直播间分享的直播类型。wire `liveType`:1 视频、2 语音、3 双手机、4 单手机录屏、5 语聊房。空字符串对应 wire 0,表示调用方没有类型,不猜成某一种直播。 */
623
623
  type ImLiveRoomType = 'video' | 'voice' | 'dual-phone' | 'screen-record' | 'voice-chat';
624
624
  /** 直播间分享的房间状态。wire `liveRoomStatus`:1 预告、2 直播中、3 已结束。 */
625
625
  type ImLiveRoomStatus = 'preview' | 'live' | 'ended';
626
626
  /**
627
- * 直播间分享卡片正文(contentType==='liveRoom',协议 BMessage.contentType=30,fields 98-112)。
627
+ * 直播间分享卡片正文(contentType==='liveRoom',协议 BMessage.contentType=30,fields 98-113)。
628
628
  *
629
629
  * @remarks 调用方先拿到直播间快照再写入本结构。Core 不请求直播接口,也不把缺省枚举猜成某一种直播。
630
630
  * `uid` 是声网 SDK 初始化用的 UID,不是 IM 用户 id。
631
631
  */
632
632
  interface ImLiveRoomBody {
633
- /** 直播间 ID(BMessage.liveRoomId)。 */
633
+ /** 直播间 ID(BMessage.liveRoomId)。没有房间号时为空字符串。 */
634
634
  liveRoomId: string;
635
- liveType: ImLiveRoomType;
635
+ /** 没有直播类型时为空字符串。 */
636
+ liveType: ImLiveRoomType | '';
636
637
  liveRoomStatus: ImLiveRoomStatus;
637
638
  /** 当前账号是否已关注主播。协议 bool 无法区分未设置,false 也是有效状态。 */
638
639
  isFocus: boolean;
@@ -652,6 +653,8 @@ interface ImLiveRoomBody {
652
653
  livePreviewId?: string;
653
654
  /** 直播间人数字符串,保持协议原文,不在 Core 换算。 */
654
655
  liveRoomViewers?: string;
656
+ /** 点赞数十进制字符串,保持协议原文,不在 Core 换算。 */
657
+ liveRoomLikes?: string;
655
658
  }
656
659
  interface ImMessageBody {
657
660
  /** P0 文本内容(明文,解密后的结果)。 */
@@ -1606,10 +1609,10 @@ type ImExpressionRecentItem$1 = ImExpressionAsset$1 | ImExpressionEmojiRecent;
1606
1609
  * 会话收藏可展示的内容类型;与 iOS `isSupportCollectionMsgType` 对齐。
1607
1610
  *
1608
1611
  * @remarks 这些值与收藏接口的 `content_type` 数值一一对应,而那个数值就是消息自己的 contentType
1609
- * (1=文本 2=图片 3=视频 4=语音 5=位置 11=文件 28=媒体合集 29=文件合集),不是另一套收藏专用枚举。
1612
+ * (1=文本 2=图片 3=视频 4=语音 5=位置 11=文件 28=媒体合集 29=文件合集 30=直播间分享),不是另一套收藏专用枚举。
1610
1613
  * Android `MessageCollectExecute` 直接写 `message.getContentType()`,iOS 写 `msg.msgType`,两端一致。
1611
1614
  */
1612
- type ImSessionFavoriteKind = 'text' | 'image' | 'video' | 'voice' | 'location' | 'file' | 'mediaAlbum' | 'filesAlbum';
1615
+ type ImSessionFavoriteKind = 'text' | 'image' | 'video' | 'voice' | 'location' | 'file' | 'mediaAlbum' | 'filesAlbum' | 'liveRoom';
1613
1616
  /** 服务端一条会话收藏快照;列表以 HTTP 为准,不回写原消息。 */
1614
1617
  interface ImSessionFavoriteItem$1 {
1615
1618
  readonly collectId: string;
@@ -2222,8 +2225,10 @@ declare function canTransmit(message: ForwardCandidateMessage): boolean;
2222
2225
  */
2223
2226
 
2224
2227
  /**
2225
- * 允许被表情回应的父消息正文类型,与 iOS `SZChatReactionService.supportsReactionForMessage:` 的协议白名单一致:
2226
- * 文本、图片、视频、语音、文件、贴纸、名片、小程序、骰子/猜拳,以及转账、通话记录卡片和红包卡片本身。
2228
+ * 允许被表情回应的父消息正文类型。
2229
+ * 文本、图片、视频、语音、文件、贴纸、名片、小程序、骰子/猜拳,以及转账、通话记录卡片和红包卡片本身,
2230
+ * 与 iOS `SZChatReactionService.supportsReactionForMessage:` 一致。
2231
+ * 媒体合集和直播间分享是后续显式放行:回应挂在整条消息上。
2227
2232
  * 系统灰条(含红包领取通知、群提示、频道通知)与 unknown(未知/未来类型)不在白名单内。
2228
2233
  *
2229
2234
  * 这里刻意维持显式白名单而不是「排除 system 和 unknown」:新增 contentType 时默认拒绝,
@@ -5742,11 +5747,11 @@ interface ImSessionFavoritesApi {
5742
5747
  delete: (collectIds: readonly string[]) => Promise<void>;
5743
5748
  }
5744
5749
  /**
5745
- * 对齐 iOS Cell:文本 / 图 / 视频 / 语音 / 文件 / 媒体合集 / 文件合集可收藏;表情、名片、通话等不可。
5750
+ * 对齐 iOS Cell:文本 / 图 / 视频 / 语音 / 文件 / 媒体合集 / 文件合集 / 直播间分享可收藏;表情、名片、通话等不可。
5746
5751
  *
5747
5752
  * 两端的收藏类型判定都是**黑名单**(iOS `isSupportCollectionMsgType` 排除名片/通话/表情/游戏/未知;
5748
- * Android `isCanCollectByType` 排除通话/表情/名片/未知/解密失败),媒体合集不在黑名单里,
5749
- * 收藏接口的 `content_type` 直接用消息自己的 28。
5753
+ * Android `isCanCollectByType` 排除通话/表情/名片/未知/解密失败)。媒体合集与直播间分享不在黑名单里,
5754
+ * 收藏接口的 `content_type` 直接用消息自己的 28 / 30。
5750
5755
  */
5751
5756
  declare function resolveSessionFavoriteKindFromMessage(message: ImMessageView): ImSessionFavoriteKind | null;
5752
5757
  /**
package/dist/sdk.js CHANGED
@@ -1 +1 @@
1
- import'./chunk-IDECJJXC.js';export{e as IMAGE_MESSAGE_ACCEPT,n as IM_CHAT_FONT_SCALES,g as IM_DIAGNOSTIC_CATEGORIES,j as IM_EMOJI_CATALOG,c as ImPinnedMessageOperationError,m as buildSessionFavoritePlainBody,d as createFaceToFaceGroupQrPayload,o as createImClient,h as createImConsoleDiagnosticSink,r as createImDiagnosticMemoryBuffer,s as createImResourceUploader,i as createSdkDiagnosticWriter,f as isSupportedImageFile,a as migrateImCachePrefix,k as resolveImEmojiToken,l as resolveSessionFavoriteKindFromMessage}from'./chunk-HPS3TBSB.js';export{Ya as MediaTransferError,kb as createVoicePlayer,lb as createVoiceRecordingSession,ib as detectVoiceCapabilities,Za as mediaTransferErrorCodeOf,$a as normalizeMediaUploadCredentials,jb as voiceErrorCodeOf}from'./chunk-ELGE657I.js';export{Aa as EDIT_WINDOW_MS,p as MEDIA_ALBUM_CAPTION_MAX_LENGTH,q as MEDIA_ALBUM_MAX_ITEMS,Ia as REACTION_SUPPORTED_CONTENT_TYPES,Ja as canReactToMessage,Ea as canTransmit,Ca as canTransmitByType,Da as canTransmitContent,x as classifyStickerImageType,pa as createImTextSearchMatcher,na as extractSearchText,oa as getImTextSearchInitial,Cb as parseSessionFavoriteAlbumItems,Fb as parseSessionFavoriteFileItems,Ba as requiresForwardTypeConfirmation,La as resolveChannelAccess,r as resolveMediaAlbumSendContentType,Db as resolveSessionFavoriteAlbumCaption,Bb as resolveSessionFavoriteAlbumItemPreviewUrl,ua as resolveTextSegments,Qa as sortSessions,Ra as sumSessionsUnread}from'./chunk-FMEZINTJ.js';import'./chunk-WOT6VMZA.js';
1
+ import'./chunk-IDECJJXC.js';export{e as IMAGE_MESSAGE_ACCEPT,n as IM_CHAT_FONT_SCALES,g as IM_DIAGNOSTIC_CATEGORIES,j as IM_EMOJI_CATALOG,c as ImPinnedMessageOperationError,m as buildSessionFavoritePlainBody,d as createFaceToFaceGroupQrPayload,o as createImClient,h as createImConsoleDiagnosticSink,r as createImDiagnosticMemoryBuffer,s as createImResourceUploader,i as createSdkDiagnosticWriter,f as isSupportedImageFile,a as migrateImCachePrefix,k as resolveImEmojiToken,l as resolveSessionFavoriteKindFromMessage}from'./chunk-SEFYSJSB.js';export{Ya as MediaTransferError,kb as createVoicePlayer,lb as createVoiceRecordingSession,ib as detectVoiceCapabilities,Za as mediaTransferErrorCodeOf,$a as normalizeMediaUploadCredentials,jb as voiceErrorCodeOf}from'./chunk-SWWW7C2U.js';export{Aa as EDIT_WINDOW_MS,p as MEDIA_ALBUM_CAPTION_MAX_LENGTH,q as MEDIA_ALBUM_MAX_ITEMS,Ia as REACTION_SUPPORTED_CONTENT_TYPES,Ja as canReactToMessage,Ea as canTransmit,Ca as canTransmitByType,Da as canTransmitContent,x as classifyStickerImageType,pa as createImTextSearchMatcher,na as extractSearchText,oa as getImTextSearchInitial,Cb as parseSessionFavoriteAlbumItems,Fb as parseSessionFavoriteFileItems,Ba as requiresForwardTypeConfirmation,La as resolveChannelAccess,r as resolveMediaAlbumSendContentType,Db as resolveSessionFavoriteAlbumCaption,Bb as resolveSessionFavoriteAlbumItemPreviewUrl,ua as resolveTextSegments,Qa as sortSessions,Ra as sumSessionsUnread}from'./chunk-527YCOBJ.js';import'./chunk-WOT6VMZA.js';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "k2-im",
3
3
  "type": "module",
4
- "version": "0.1.48",
4
+ "version": "0.1.49",
5
5
  "private": false,
6
6
  "license": "MIT",
7
7
  "publishConfig": {