k2-im 0.2.3 → 0.2.5

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.
@@ -589,7 +589,7 @@ interface ImMediaAlbumItem {
589
589
  durationMs?: number;
590
590
  /** 远端缩略图地址;可能缺省,此时只能用 `thumbData`。 */
591
591
  thumbUrl?: string;
592
- /** 内嵌缩略图/封面 JPEG 字节。加密消息服务端出不了封面,宫格首屏只能靠它。 */
592
+ /** 内嵌缩略图/封面 PNG 或 JPEG 字节。加密消息服务端出不了封面,宫格首屏只能靠它。 */
593
593
  thumbData?: Uint8Array;
594
594
  /** 原文件 MD5。 */
595
595
  md5?: string;
@@ -3357,13 +3357,13 @@ interface MediaAlbumMessageOptions {
3357
3357
  * 本地视频的固有尺寸、时长与首帧封面。
3358
3358
  *
3359
3359
  * @remarks 宿主可从本地 object URL 解码首个可展示帧,使上传占位从首次渲染就使用真实比例和主图。
3360
- * `posterData` 是等比缩放后的 JPEG;存在时会作为消息 `thumbData` 随正文发送。宽高必须是有限正数,
3360
+ * `posterData` 是等比缩放后的 JPEG(兼容已有 PNG);存在时会作为消息 `thumbData` 随正文发送。宽高必须是有限正数,
3361
3361
  * duration 存在时必须是有限正数,posterData 必须是非空且不超过 16 KiB 的 Uint8Array。
3362
3362
  */
3363
3363
  interface VideoPreviewMetadata extends ImagePreviewMetadata {
3364
3364
  /** 秒。 */
3365
3365
  duration?: number;
3366
- /** 本地首个可展示帧生成的 JPEG 字节。 */
3366
+ /** 本地首个可展示帧生成的 JPEG 或已有 PNG 字节。 */
3367
3367
  posterData?: Uint8Array;
3368
3368
  }
3369
3369
  /**
@@ -5556,7 +5556,7 @@ interface ImMediaTasksApi {
5556
5556
  *
5557
5557
  * 返回的对象可以**原样**作为 `localPreviewMetadata` 交给 `sendImage` / `sendVideo` /
5558
5558
  * `sendMediaAlbum`:发送链路会跳过重复解码,上传中的气泡也从第一帧就有封面。
5559
- * posterData 保持发送规格(长边 320、JPEG);includeDisplayPoster 可在同一次解码中额外生成
5559
+ * posterData 保持发送规格(长边 320;透明图片 PNG,其余 JPEG);includeDisplayPoster 可在同一次解码中额外生成
5560
5560
  * 仅供页面显示的高清 displayPoster(长边最多 960),不得用它替换消息里的小封面。
5561
5561
  *
5562
5562
  * @param input.kind 按文件类型选解码路径;`'video'` 才会抽首帧与读时长。
@@ -5590,7 +5590,7 @@ interface ImMediaTasksApi {
5590
5590
  }) => Promise<Blob | null>;
5591
5591
  /**
5592
5592
  * 为本地图片生成仅供胶片条/相册格显示的缩略图,不上传、不写缓存、不改变发送文件与元信息。
5593
- * JPEG 按文件签名识别,最长边最多 256px 且不放大,与发送预读共用账号的图片解码预算。
5593
+ * JPEG 原文件按签名识别并生成 JPEG 显示缩略图,最长边最多 256px 且不放大,与发送预读共用账号的图片解码预算。
5594
5594
  * 其它格式直接返回原 Blob,保留透明与动画;宿主负责返回 Blob 的 object URL 生命周期。
5595
5595
  * 生成失败返回 null 并记录诊断;取消、账号失效和未装配能力保持明确错误。
5596
5596
  * @param input.file 原始本地图片;返回的显示资源不得代替它传入发送命令。
@@ -8716,6 +8716,10 @@ declare function defineImProfileDirectoryStore(pinia: Pinia): pinia.StoreDefinit
8716
8716
  channelMentionsExhausted: any;
8717
8717
  channelMentionsError: any;
8718
8718
  resolveDisplayName: (ref: ConversationRef, userId: string, fallbackName?: string) => string;
8719
+ resolveConversationListProfiles: (item: ConversationListItem, options?: {
8720
+ forceRefresh?: boolean;
8721
+ retryUnresolved?: boolean;
8722
+ }) => Promise<boolean>;
8719
8723
  resolveAvatarUrl: (ref: ConversationRef, userId: string) => string;
8720
8724
  resolvePublicNickname: (userId: string) => string;
8721
8725
  resolveSenderProfile: (userId: string, options?: {
@@ -8893,6 +8897,10 @@ declare function defineImProfileDirectoryStore(pinia: Pinia): pinia.StoreDefinit
8893
8897
  channelMentionsExhausted: any;
8894
8898
  channelMentionsError: any;
8895
8899
  resolveDisplayName: (ref: ConversationRef, userId: string, fallbackName?: string) => string;
8900
+ resolveConversationListProfiles: (item: ConversationListItem, options?: {
8901
+ forceRefresh?: boolean;
8902
+ retryUnresolved?: boolean;
8903
+ }) => Promise<boolean>;
8896
8904
  resolveAvatarUrl: (ref: ConversationRef, userId: string) => string;
8897
8905
  resolvePublicNickname: (userId: string) => string;
8898
8906
  resolveSenderProfile: (userId: string, options?: {
@@ -9070,6 +9078,10 @@ declare function defineImProfileDirectoryStore(pinia: Pinia): pinia.StoreDefinit
9070
9078
  channelMentionsExhausted: any;
9071
9079
  channelMentionsError: any;
9072
9080
  resolveDisplayName: (ref: ConversationRef, userId: string, fallbackName?: string) => string;
9081
+ resolveConversationListProfiles: (item: ConversationListItem, options?: {
9082
+ forceRefresh?: boolean;
9083
+ retryUnresolved?: boolean;
9084
+ }) => Promise<boolean>;
9073
9085
  resolveAvatarUrl: (ref: ConversationRef, userId: string) => string;
9074
9086
  resolvePublicNickname: (userId: string) => string;
9075
9087
  resolveSenderProfile: (userId: string, options?: {
@@ -567,7 +567,7 @@ interface ImMediaAlbumItem {
567
567
  durationMs?: number;
568
568
  /** 远端缩略图地址;可能缺省,此时只能用 `thumbData`。 */
569
569
  thumbUrl?: string;
570
- /** 内嵌缩略图/封面 JPEG 字节。加密消息服务端出不了封面,宫格首屏只能靠它。 */
570
+ /** 内嵌缩略图/封面 PNG 或 JPEG 字节。加密消息服务端出不了封面,宫格首屏只能靠它。 */
571
571
  thumbData?: Uint8Array;
572
572
  /** 原文件 MD5。 */
573
573
  md5?: string;
@@ -586,7 +586,7 @@ interface ImMediaAlbumItem {
586
586
  durationMs?: number;
587
587
  /** 远端缩略图地址;可能缺省,此时只能用 `thumbData`。 */
588
588
  thumbUrl?: string;
589
- /** 内嵌缩略图/封面 JPEG 字节。加密消息服务端出不了封面,宫格首屏只能靠它。 */
589
+ /** 内嵌缩略图/封面 PNG 或 JPEG 字节。加密消息服务端出不了封面,宫格首屏只能靠它。 */
590
590
  thumbData?: Uint8Array;
591
591
  /** 原文件 MD5。 */
592
592
  md5?: string;
@@ -2851,6 +2851,14 @@ declare function canTransmit(message: ForwardCandidateMessage): boolean;
2851
2851
 
2852
2852
  type RecallFailReason = 'not-found' | 'not-own' | 'pinned' | 'not-sent' | 'expired' | 'unsupported' | 'timeout' | 'server-expired' | 'failed' | 'disconnected';
2853
2853
 
2854
+ /**
2855
+ * 根据缩略图签名选择 PNG 或 JPEG 的显示类型,供 SDK 和 PC/H5 创建 Blob、data URL。
2856
+ * 输入是消息中的原始字节或纯 base64;旧消息没有独立 MIME 字段,非 PNG 沿用 JPEG 解码,
2857
+ * 损坏数据仍交给图片解码器报告失败。本函数不修改字节,也不将历史 JPEG 转码为 PNG。
2858
+ * @example resolveMediaThumbnailMimeType(new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10])) // 'image/png'
2859
+ */
2860
+ declare function resolveMediaThumbnailMimeType(source: Uint8Array | string): 'image/png' | 'image/jpeg';
2861
+
2854
2862
  /** 浏览器 PushSubscription.toJSON() 的可移植数据;不依赖 DOM 或浏览器全局。 */
2855
2863
  interface ImWebPushSubscription {
2856
2864
  endpoint?: string;
@@ -3458,13 +3466,13 @@ interface MediaAlbumMessageOptions {
3458
3466
  * 本地视频的固有尺寸、时长与首帧封面。
3459
3467
  *
3460
3468
  * @remarks 宿主可从本地 object URL 解码首个可展示帧,使上传占位从首次渲染就使用真实比例和主图。
3461
- * `posterData` 是等比缩放后的 JPEG;存在时会作为消息 `thumbData` 随正文发送。宽高必须是有限正数,
3469
+ * `posterData` 是等比缩放后的 JPEG(兼容已有 PNG);存在时会作为消息 `thumbData` 随正文发送。宽高必须是有限正数,
3462
3470
  * duration 存在时必须是有限正数,posterData 必须是非空且不超过 16 KiB 的 Uint8Array。
3463
3471
  */
3464
3472
  interface VideoPreviewMetadata extends ImagePreviewMetadata {
3465
3473
  /** 秒。 */
3466
3474
  duration?: number;
3467
- /** 本地首个可展示帧生成的 JPEG 字节。 */
3475
+ /** 本地首个可展示帧生成的 JPEG 或已有 PNG 字节。 */
3468
3476
  posterData?: Uint8Array;
3469
3477
  }
3470
3478
  /**
@@ -5659,7 +5667,7 @@ interface ImMediaTasksApi {
5659
5667
  *
5660
5668
  * 返回的对象可以**原样**作为 `localPreviewMetadata` 交给 `sendImage` / `sendVideo` /
5661
5669
  * `sendMediaAlbum`:发送链路会跳过重复解码,上传中的气泡也从第一帧就有封面。
5662
- * posterData 保持发送规格(长边 320、JPEG);includeDisplayPoster 可在同一次解码中额外生成
5670
+ * posterData 保持发送规格(长边 320;透明图片 PNG,其余 JPEG);includeDisplayPoster 可在同一次解码中额外生成
5663
5671
  * 仅供页面显示的高清 displayPoster(长边最多 960),不得用它替换消息里的小封面。
5664
5672
  *
5665
5673
  * @param input.kind 按文件类型选解码路径;`'video'` 才会抽首帧与读时长。
@@ -5693,7 +5701,7 @@ interface ImMediaTasksApi {
5693
5701
  }) => Promise<Blob | null>;
5694
5702
  /**
5695
5703
  * 为本地图片生成仅供胶片条/相册格显示的缩略图,不上传、不写缓存、不改变发送文件与元信息。
5696
- * JPEG 按文件签名识别,最长边最多 256px 且不放大,与发送预读共用账号的图片解码预算。
5704
+ * JPEG 原文件按签名识别并生成 JPEG 显示缩略图,最长边最多 256px 且不放大,与发送预读共用账号的图片解码预算。
5697
5705
  * 其它格式直接返回原 Blob,保留透明与动画;宿主负责返回 Blob 的 object URL 生命周期。
5698
5706
  * 生成失败返回 null 并记录诊断;取消、账号失效和未装配能力保持明确错误。
5699
5707
  * @param input.file 原始本地图片;返回的显示资源不得代替它传入发送命令。
@@ -7421,20 +7429,20 @@ interface MiniProgramGamePreviewInput {
7421
7429
  gamePreviewUrl?: string;
7422
7430
  gamePreviewWidth?: number;
7423
7431
  gamePreviewHeight?: number;
7424
- /** 宿主已经观察到 `<img>` 加载失败,说明该地址其实是文档,翻回 document。 */
7432
+ /** 宿主已经观察到 `<img>` 加载失败,HTTP(S) 地址可按文档重试;data 图片失败后必须拒绝加载。 */
7425
7433
  imageLoadFailed?: boolean;
7426
7434
  }
7427
7435
  interface MiniProgramGamePreviewLayout {
7428
- /** 去空白后的 proto 94;为空串时 `render` 恒为 `empty`。 */
7436
+ /** 允许加载的 proto 94;empty 或 blocked 状态不会暴露可加载地址。 */
7429
7437
  url: string;
7430
7438
  /** 按源尺寸等比缩放用的作者宽高,永远是正数。 */
7431
7439
  sourceWidth: number;
7432
7440
  sourceHeight: number;
7433
7441
  /**
7434
7442
  * `document` 顶层加载远程页面(对应原生 WebView);`image` 地址明确是图片资源;
7435
- * `empty` 无地址,画占位卡——占位本身是合法终态,不是待修复状态。
7443
+ * `empty` 无地址,画占位卡;`blocked` 地址不允许加载或 data 图片失败,展示失败提示。
7436
7444
  */
7437
- render: 'document' | 'image' | 'empty';
7445
+ render: 'document' | 'image' | 'empty' | 'blocked';
7438
7446
  }
7439
7447
  /**
7440
7448
  * 默认按 document 处理:线上真实地址形如 `…/p2p-share?lang=zh&banker_order_id=905`,
@@ -9714,5 +9722,5 @@ declare function resampleWaveform(data: readonly number[], targetCount: number):
9714
9722
  */
9715
9723
  declare function placeholderWaveform(seed: string, count: number): number[];
9716
9724
 
9717
- export { DEFAULT_EMOJI_ASSET_BASE, DEFAULT_LOADING_MINIMUM_VISIBLE_MS, DEFAULT_LOADING_SHOW_DELAY_MS, EMOJI_CATALOG, EMOJI_GAME_DICE_STABLE_KEY, EMOJI_GAME_RPS_STABLE_KEY, EMOJI_TOKEN_RE, MAX_BATCH_FILES, MAX_RECENT_EMOJI_COUNT, MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT, MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH, MINI_PROGRAM_LANG_NUMBERS, SPIKE_STEP, UNICODE_EMOJI_CATALOG, blockReasonForChannelSession, blockReasonForChannelState, blockReasonForGroupState, blockReasonForSession, calculateMediaBox, canCopyMessageImage, canEditMessage, canPinChannelMessage, canPinGroupMessage, canPinMessage, canPromoteMediaPresentationSource, canRecallMessage, canTransmit, canTransmitByType, canTransmitContent, cancelMediaUpload, captureRuntimeClientOperation, captureRuntimeOperation, channelMiniProgramRelKey, classifyGifFile, classifyMediaFile, countUnreadConversations, createChatRuntime, createConversationPrefetchController, createDelayedLoadingIndicator, createEmojiMatcher, createLinkMatcher, createMessageImageCopySource, createNewMessageBadgeController, createThreadItems, csvIncludes, decideChannelMiniProgramRelOpen, decideConversationAction, decideMemberTargetAction, decideMessageAction, emojiAssetUrl, emojiUrlByCode, fetchConversationFileBatch, fetchConversationImageBatch, fetchConversationMessageBatch, fetchConversationVideoBatch, fetchConversationVoiceBatch, fetchNextConversationSearchBatch, formatChatDateSeparator, formatConversationDisplayTime, formatConversationUnreadBadge, formatFileSize, formatMediaDuration, forward_service as forwardService, getFileExtension, getLocalDayKey, getMessageCopyImageUrl, getMessageCopyText, hasEmojiCandidate, hasLinkCandidate, highlightSegments, isGifFile, isMessageLocateScrollProtected, isMessageTailChangeFromOlderWindowTrim, isMessageViewportMeasurable, isMessageVisibleForNewMessageBadge, isMiniProgramShowTypeOpenable, isPinnedMessageProtected, isVoiceStorageConfigured, loadOlderUntilBoundary, mediaBatchBudgetBytes, media_service as mediaService, message_service as messageService, normalizeLinkHref, parseUnicodeEmojiCode, pinnedMessage_service as pinnedMessageService, placeholderWaveform, prependRecentEmoji, profile_service as profileService, read_service as readService, refreshPrependMessageAnchorPosition, replaceInterruptedMediaFile, requiresConversationEncryption, requiresForwardTypeConfirmation, resampleWaveform, resolveBestMediaPresentationSource, resolveCenteredMessageScrollTop, resolveChannelMemberAvatarUrl, resolveChannelMemberDisplayName, resolveChannelMiniProgramRelIcon, resolveChannelMiniProgramRelName, resolveChannelMiniProgramRelOpenSurface, resolveChannelMiniProgramRelUrl, resolveChannelPinnedGameCopy, resolveConversationListPresentation, resolveDisplayTimestamp, resolveEmojiToken, resolveFriendDisplayName, resolveImProfileAccessDestination, resolveImThreadActiveDate, resolveMediaPresentation, resolveMediaTransferPresentation, resolveMemberDisplayName, resolveMessageBodyKind, resolveMessageNotificationDecision, resolveMessageSearchPreview, resolveMessageTimelineTimestamp, resolveMiniProgramFloatLinkUrl, resolveMiniProgramGamePreviewLayout, resolveMiniProgramOpenUrl, resolvePrependMessageAnchor, resolvePrependMessageAnchorAdjustment, resolvePrependMessageAnchorPosition, resolvePublicNickname, resolveQuotedMessagePresentation, resolveSenderAvatarUrl, resolveStandaloneEmojiMessage, resolveSurvivingMessageAnchorAdjustment, resolveUnicodeEmoji, resolveVisibleChannelMiniProgramRels, resolveVisibleMessageAnchorPositions, retryMessage, runMediaSendBatch, sendAsFilesBatch, sendBlockReasonForDecision, sendMediaAlbum, sendMediaFile, sendMediaFilesBatch, sendText, sendVoice, shouldCompleteInitialViewport, shouldFillInitialHistoryViewport, shouldFollowIncomingMessage, shouldLoadNewerHistoryPage, shouldPrefetchOlderHistory, shouldRestoreMessageViewportFocus, shouldShowChatDateSeparator, shouldTrackRemoteMessageForBadge, sortChannelMiniProgramFloatingItems, spikeCountForDuration, supportsConversationMention, unicodeEmojiTextFromCode };
9725
+ export { DEFAULT_EMOJI_ASSET_BASE, DEFAULT_LOADING_MINIMUM_VISIBLE_MS, DEFAULT_LOADING_SHOW_DELAY_MS, EMOJI_CATALOG, EMOJI_GAME_DICE_STABLE_KEY, EMOJI_GAME_RPS_STABLE_KEY, EMOJI_TOKEN_RE, MAX_BATCH_FILES, MAX_RECENT_EMOJI_COUNT, MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT, MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH, MINI_PROGRAM_LANG_NUMBERS, SPIKE_STEP, UNICODE_EMOJI_CATALOG, blockReasonForChannelSession, blockReasonForChannelState, blockReasonForGroupState, blockReasonForSession, calculateMediaBox, canCopyMessageImage, canEditMessage, canPinChannelMessage, canPinGroupMessage, canPinMessage, canPromoteMediaPresentationSource, canRecallMessage, canTransmit, canTransmitByType, canTransmitContent, cancelMediaUpload, captureRuntimeClientOperation, captureRuntimeOperation, channelMiniProgramRelKey, classifyGifFile, classifyMediaFile, countUnreadConversations, createChatRuntime, createConversationPrefetchController, createDelayedLoadingIndicator, createEmojiMatcher, createLinkMatcher, createMessageImageCopySource, createNewMessageBadgeController, createThreadItems, csvIncludes, decideChannelMiniProgramRelOpen, decideConversationAction, decideMemberTargetAction, decideMessageAction, emojiAssetUrl, emojiUrlByCode, fetchConversationFileBatch, fetchConversationImageBatch, fetchConversationMessageBatch, fetchConversationVideoBatch, fetchConversationVoiceBatch, fetchNextConversationSearchBatch, formatChatDateSeparator, formatConversationDisplayTime, formatConversationUnreadBadge, formatFileSize, formatMediaDuration, forward_service as forwardService, getFileExtension, getLocalDayKey, getMessageCopyImageUrl, getMessageCopyText, hasEmojiCandidate, hasLinkCandidate, highlightSegments, isGifFile, isMessageLocateScrollProtected, isMessageTailChangeFromOlderWindowTrim, isMessageViewportMeasurable, isMessageVisibleForNewMessageBadge, isMiniProgramShowTypeOpenable, isPinnedMessageProtected, isVoiceStorageConfigured, loadOlderUntilBoundary, mediaBatchBudgetBytes, media_service as mediaService, message_service as messageService, normalizeLinkHref, parseUnicodeEmojiCode, pinnedMessage_service as pinnedMessageService, placeholderWaveform, prependRecentEmoji, profile_service as profileService, read_service as readService, refreshPrependMessageAnchorPosition, replaceInterruptedMediaFile, requiresConversationEncryption, requiresForwardTypeConfirmation, resampleWaveform, resolveBestMediaPresentationSource, resolveCenteredMessageScrollTop, resolveChannelMemberAvatarUrl, resolveChannelMemberDisplayName, resolveChannelMiniProgramRelIcon, resolveChannelMiniProgramRelName, resolveChannelMiniProgramRelOpenSurface, resolveChannelMiniProgramRelUrl, resolveChannelPinnedGameCopy, resolveConversationListPresentation, resolveDisplayTimestamp, resolveEmojiToken, resolveFriendDisplayName, resolveImProfileAccessDestination, resolveImThreadActiveDate, resolveMediaPresentation, resolveMediaThumbnailMimeType, resolveMediaTransferPresentation, resolveMemberDisplayName, resolveMessageBodyKind, resolveMessageNotificationDecision, resolveMessageSearchPreview, resolveMessageTimelineTimestamp, resolveMiniProgramFloatLinkUrl, resolveMiniProgramGamePreviewLayout, resolveMiniProgramOpenUrl, resolvePrependMessageAnchor, resolvePrependMessageAnchorAdjustment, resolvePrependMessageAnchorPosition, resolvePublicNickname, resolveQuotedMessagePresentation, resolveSenderAvatarUrl, resolveStandaloneEmojiMessage, resolveSurvivingMessageAnchorAdjustment, resolveUnicodeEmoji, resolveVisibleChannelMiniProgramRels, resolveVisibleMessageAnchorPositions, retryMessage, runMediaSendBatch, sendAsFilesBatch, sendBlockReasonForDecision, sendMediaAlbum, sendMediaFile, sendMediaFilesBatch, sendText, sendVoice, shouldCompleteInitialViewport, shouldFillInitialHistoryViewport, shouldFollowIncomingMessage, shouldLoadNewerHistoryPage, shouldPrefetchOlderHistory, shouldRestoreMessageViewportFocus, shouldShowChatDateSeparator, shouldTrackRemoteMessageForBadge, sortChannelMiniProgramFloatingItems, spikeCountForDuration, supportsConversationMention, unicodeEmojiTextFromCode };
9718
9726
  export type { ApplySessionResult, BrowseMessagesInput, CanPinMessageInput, CenteredMessageScrollInput, ChannelMiniProgramOpenGame, ChannelMiniProgramRelOpenDecision, ChannelMiniProgramRelOpenSurface, ChatMediaMessageRef, ChatProfileAdapter, ChatRuntime, ChatRuntimeCredentials, ChatRuntimeFactories, ChatRuntimeHostDeps, ChatRuntimeOpResult, ConversationCapabilityAction, ConversationListPresentation, ConversationListPresentationLabels, ConversationListPresentationOptions, ConversationListPreviewMediaKind, ConversationListPreviewSegment, ConversationPrefetchController, ConversationPrefetchControllerOptions, ConversationSearchCategory, CreateThreadItemsInput, DelayedLoadingIndicator, DelayedLoadingIndicatorOptions, EmojiEntry, EmojiRecentItem, EmojiSegment, FormatTimeDisplayContext, ForwardCommandHooks, GifFileClassification, HighlightSegment, ImChannelMemberPresentation, ImChannelMentionPresentation, ImChannelProfilePresentation, ImForwardOperationResult, ImGroupMemberPresentation, ImMediaBatchSendResult, ImMessageActionResult, ImMessageBodyKind, ImMessageView, ImPinnedMessageActionResult, ImPinnedMessageSnapshot, ImProfileAccessDestination, ImQuotedMessagePresentation, ImTextResolver, ImThreadActiveDateSnapshot, ImThreadDateMarkerMetric, ImThreadDecoration, ImThreadEncryptionItem, ImThreadIntent, ImThreadItem, ImThreadPresentationAdapter, ImThreadReadActions, ImThreadReadTargetResolver, ImThreadViewportMetrics, IncomingMessageFollowInput, InitialHistoryViewportFillInput, InitialViewportCompletionInput, LinkSegment, MediaBatchBudgetOptions, MediaBatchLimitInfo, MediaFileClassification, MediaLimitItem, MediaObjectUrlLease, MediaPresentationFit, MediaPresentationPolicy, MediaPresentationRule, MediaPresentationSourceCandidate, MediaPresentationSourceQuality, MediaSendBatchResult, MediaTransferPresentation, MemberTargetCapabilityAction, MemberTargetCapabilityInput, MessageCapabilityAction, MessageCapabilityInput, MessageLocateScrollProtectionInput, MessageNotificationDecision, MessageNotificationInput, MessageSearchPreviewOptions, MessageSearchPreviewSegment, MiniProgramGamePreviewInput, MiniProgramGamePreviewLayout, MiniProgramHostLocale, MiniProgramOpenUrlInput, NewMessageBadgeController, NewMessageBadgeCountListener, NewMessageBadgeVisibilityInput, NewerHistoryPageTriggerInput, OlderHistoryPrefetchInput, PrependAnchorCandidate, PrependAnchorViewport, PrependMessageAnchorPosition, RemoteMessageBadgeTrackingInput, ResolveMediaPresentationInput, ResolvedMediaPresentation, RichExtraSegment, RuntimeClientOperation, RuntimeOperation, SearchBatchResult, SearchFilesInput, SearchMessagesInput, SearchTextMessagesInput, SendCapabilityMode, SendCommandHooks, SendVoicePayload, SenderProfileEntry, ServiceNoteHooks, StandaloneEmojiMessage, UnicodeEmojiEntry, VisibleChannelMiniProgramRels };
package/dist/chat-kit.js CHANGED
@@ -1 +1 @@
1
- import{DEFAULT_EMOJI_ASSET_BASE as s,EMOJI_CATALOG as i,EMOJI_TOKEN_RE as r,createEmojiMatcher as e,emojiAssetUrl as m,emojiUrlByCode as t,hasEmojiCandidate as o,resolveEmojiToken as c,resolveStandaloneEmojiMessage as a}from"./modules/im-chat-kit/src/utils/emoji/index.js";import{DEFAULT_LOADING_MINIMUM_VISIBLE_MS as d,DEFAULT_LOADING_SHOW_DELAY_MS as l,createDelayedLoadingIndicator as p}from"./modules/im-chat-kit/src/presentation/delayed-loading-indicator.js";import{EMOJI_GAME_DICE_STABLE_KEY as n,EMOJI_GAME_RPS_STABLE_KEY as u,MAX_RECENT_EMOJI_COUNT as h,prependRecentEmoji as f}from"./modules/im-chat-kit/src/utils/emoji/recent.js";import{MAX_BATCH_FILES as j,mediaBatchBudgetBytes as k,runMediaSendBatch as v}from"./modules/im-chat-kit/src/utils/media-batch.js";import{MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT as g,MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH as w,resolveMiniProgramGamePreviewLayout as y}from"./modules/im-chat-kit/src/presentation/mini-program-game-preview.js";import{MINI_PROGRAM_LANG_NUMBERS as S,channelMiniProgramRelKey as b,csvIncludes as x,resolveChannelMiniProgramRelIcon as q,resolveChannelMiniProgramRelName as M,resolveChannelMiniProgramRelOpenSurface as z,resolveChannelMiniProgramRelUrl as A,resolveChannelPinnedGameCopy as B,resolveVisibleChannelMiniProgramRels as C,sortChannelMiniProgramFloatingItems as D}from"./modules/im-chat-kit/src/presentation/channel-mini-program-rels.js";import{SPIKE_STEP as E,placeholderWaveform as F,resampleWaveform as G,spikeCountForDuration as H}from"./modules/im-chat-kit/src/utils/waveform.js";import{UNICODE_EMOJI_CATALOG as I,parseUnicodeEmojiCode as J,resolveUnicodeEmoji as K,unicodeEmojiTextFromCode as L}from"./modules/im-chat-kit/src/utils/emoji/unicode.js";import{blockReasonForChannelSession as N,blockReasonForChannelState as O}from"./modules/im-chat-kit/src/services/channel-send-restriction.js";import{blockReasonForGroupState as P,blockReasonForSession as Q,cancelMediaUpload as R,isVoiceStorageConfigured as T,replaceInterruptedMediaFile as U,requiresConversationEncryption as V,retryMessage as W,sendAsFilesBatch as X,sendMediaAlbum as Y,sendMediaFile as Z,sendMediaFilesBatch as $,sendText as _,sendVoice as ss,supportsConversationMention as is}from"./modules/im-chat-kit/src/services/send.service.js";import{calculateMediaBox as rs,resolveMediaPresentation as es}from"./modules/im-chat-kit/src/utils/media-dimensions.js";import{canCopyMessageImage as ms,createMessageImageCopySource as ts,getMessageCopyImageUrl as os,getMessageCopyText as cs}from"./modules/im-chat-kit/src/services/image-copy.service.js";import{canEditMessage as as,canRecallMessage as ds,resolveChannelMemberAvatarUrl as ls,resolveChannelMemberDisplayName as ps,resolveFriendDisplayName as ns,resolveMemberDisplayName as us,resolvePublicNickname as hs,resolveSenderAvatarUrl as fs}from"./modules/im-chat-kit/src/services/profile-display.js";import{canPinChannelMessage as js,canPinGroupMessage as ks,canPinMessage as vs,isPinnedMessageProtected as gs}from"./modules/im-chat-kit/src/services/pinned-message-rules.js";import{canPromoteMediaPresentationSource as ws,resolveBestMediaPresentationSource as ys}from"./modules/im-chat-kit/src/presentation/media-source-priority.js";import{canTransmit as Ss,canTransmitByType as bs,canTransmitContent as xs,requiresForwardTypeConfirmation as qs}from"./modules/im-core/src/message-flow/forward/can-transmit.js";import{captureRuntimeClientOperation as Ms,captureRuntimeOperation as zs}from"./modules/im-chat-kit/src/runtime/runtime-operation.js";import{classifyGifFile as As,classifyMediaFile as Bs,isGifFile as Cs}from"./modules/im-chat-kit/src/services/media-file-classification.js";import{countUnreadConversations as Ds,formatConversationUnreadBadge as Es}from"./modules/im-chat-kit/src/presentation/conversation-unread.js";import{createChatRuntime as Fs}from"./modules/im-chat-kit/src/runtime/chat-runtime.js";import{createConversationPrefetchController as Gs}from"./modules/im-chat-kit/src/runtime/conversation-prefetch-controller.js";import{createLinkMatcher as Hs,hasLinkCandidate as Is,normalizeLinkHref as Js}from"./modules/im-chat-kit/src/utils/link.js";import{createNewMessageBadgeController as Ks}from"./modules/im-chat-kit/src/thread/new-message-badge.js";import{createThreadItems as Ls}from"./modules/im-chat-kit/src/thread/create-thread-items.js";import{decideChannelMiniProgramRelOpen as Ns}from"./modules/im-chat-kit/src/presentation/channel-mini-program-open.js";import{decideConversationAction as Os,decideMemberTargetAction as Ps,decideMessageAction as Qs,sendBlockReasonForDecision as Rs}from"./modules/im-chat-kit/src/services/capabilities.js";import{fetchConversationFileBatch as Ts,fetchConversationImageBatch as Us,fetchConversationMessageBatch as Vs,fetchConversationVideoBatch as Ws,fetchConversationVoiceBatch as Xs,fetchNextConversationSearchBatch as Ys}from"./modules/im-chat-kit/src/services/search.service.js";import{formatChatDateSeparator as Zs,formatConversationDisplayTime as $s,getLocalDayKey as _s,resolveDisplayTimestamp as si,resolveMessageTimelineTimestamp as ii,shouldShowChatDateSeparator as ri}from"./modules/im-chat-kit/src/utils/time-display.js";import{formatFileSize as ei,formatMediaDuration as mi,getFileExtension as ti}from"./modules/im-chat-kit/src/utils/media-format.js";import*as oi from"./modules/im-chat-kit/src/services/forward.service.js";import{highlightSegments as ci}from"./modules/im-chat-kit/src/utils/highlight.js";import{isMessageLocateScrollProtected as ai,isMessageTailChangeFromOlderWindowTrim as di,isMessageViewportMeasurable as li,isMessageVisibleForNewMessageBadge as pi,loadOlderUntilBoundary as ni,refreshPrependMessageAnchorPosition as ui,resolveCenteredMessageScrollTop as hi,resolvePrependMessageAnchor as fi,resolvePrependMessageAnchorAdjustment as ji,resolvePrependMessageAnchorPosition as ki,resolveSurvivingMessageAnchorAdjustment as vi,resolveVisibleMessageAnchorPositions as gi,shouldCompleteInitialViewport as wi,shouldFillInitialHistoryViewport as yi,shouldFollowIncomingMessage as Si,shouldLoadNewerHistoryPage as bi,shouldPrefetchOlderHistory as xi,shouldRestoreMessageViewportFocus as qi,shouldTrackRemoteMessageForBadge as Mi}from"./modules/im-chat-kit/src/thread/viewport-rules.js";import{isMiniProgramShowTypeOpenable as zi,resolveMiniProgramFloatLinkUrl as Ai,resolveMiniProgramOpenUrl as Bi}from"./modules/im-chat-kit/src/presentation/mini-program-open-url.js";import*as Ci from"./modules/im-chat-kit/src/services/media.service.js";import*as Di from"./modules/im-chat-kit/src/services/message.service.js";import*as Ei from"./modules/im-chat-kit/src/services/pinned-message.service.js";import*as Fi from"./modules/im-chat-kit/src/services/profile.service.js";import*as Gi from"./modules/im-chat-kit/src/services/read.service.js";import{resolveConversationListPresentation as Hi}from"./modules/im-chat-kit/src/presentation/conversation-list.js";import{resolveImProfileAccessDestination as Ii}from"./modules/im-chat-kit/src/services/profile-access.service.js";import{resolveImThreadActiveDate as Ji}from"./modules/im-chat-kit/src/thread/active-date.js";import{resolveMediaTransferPresentation as Ki}from"./modules/im-chat-kit/src/utils/media-transfer-presentation.js";import{resolveMessageBodyKind as Li}from"./modules/im-chat-kit/src/thread/resolve-message-body-kind.js";import{resolveMessageNotificationDecision as Ni}from"./modules/im-chat-kit/src/presentation/message-notification.js";import{resolveMessageSearchPreview as Oi}from"./modules/im-chat-kit/src/presentation/message-search.js";import{resolveQuotedMessagePresentation as Pi}from"./modules/im-chat-kit/src/thread/resolve-quoted-message-presentation.js";export{s as DEFAULT_EMOJI_ASSET_BASE,d as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,l as DEFAULT_LOADING_SHOW_DELAY_MS,i as EMOJI_CATALOG,n as EMOJI_GAME_DICE_STABLE_KEY,u as EMOJI_GAME_RPS_STABLE_KEY,r as EMOJI_TOKEN_RE,j as MAX_BATCH_FILES,h as MAX_RECENT_EMOJI_COUNT,g as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,w as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,S as MINI_PROGRAM_LANG_NUMBERS,E as SPIKE_STEP,I as UNICODE_EMOJI_CATALOG,N as blockReasonForChannelSession,O as blockReasonForChannelState,P as blockReasonForGroupState,Q as blockReasonForSession,rs as calculateMediaBox,ms as canCopyMessageImage,as as canEditMessage,js as canPinChannelMessage,ks as canPinGroupMessage,vs as canPinMessage,ws as canPromoteMediaPresentationSource,ds as canRecallMessage,Ss as canTransmit,bs as canTransmitByType,xs as canTransmitContent,R as cancelMediaUpload,Ms as captureRuntimeClientOperation,zs as captureRuntimeOperation,b as channelMiniProgramRelKey,As as classifyGifFile,Bs as classifyMediaFile,Ds as countUnreadConversations,Fs as createChatRuntime,Gs as createConversationPrefetchController,p as createDelayedLoadingIndicator,e as createEmojiMatcher,Hs as createLinkMatcher,ts as createMessageImageCopySource,Ks as createNewMessageBadgeController,Ls as createThreadItems,x as csvIncludes,Ns as decideChannelMiniProgramRelOpen,Os as decideConversationAction,Ps as decideMemberTargetAction,Qs as decideMessageAction,m as emojiAssetUrl,t as emojiUrlByCode,Ts as fetchConversationFileBatch,Us as fetchConversationImageBatch,Vs as fetchConversationMessageBatch,Ws as fetchConversationVideoBatch,Xs as fetchConversationVoiceBatch,Ys as fetchNextConversationSearchBatch,Zs as formatChatDateSeparator,$s as formatConversationDisplayTime,Es as formatConversationUnreadBadge,ei as formatFileSize,mi as formatMediaDuration,oi as forwardService,ti as getFileExtension,_s as getLocalDayKey,os as getMessageCopyImageUrl,cs as getMessageCopyText,o as hasEmojiCandidate,Is as hasLinkCandidate,ci as highlightSegments,Cs as isGifFile,ai as isMessageLocateScrollProtected,di as isMessageTailChangeFromOlderWindowTrim,li as isMessageViewportMeasurable,pi as isMessageVisibleForNewMessageBadge,zi as isMiniProgramShowTypeOpenable,gs as isPinnedMessageProtected,T as isVoiceStorageConfigured,ni as loadOlderUntilBoundary,k as mediaBatchBudgetBytes,Ci as mediaService,Di as messageService,Js as normalizeLinkHref,J as parseUnicodeEmojiCode,Ei as pinnedMessageService,F as placeholderWaveform,f as prependRecentEmoji,Fi as profileService,Gi as readService,ui as refreshPrependMessageAnchorPosition,U as replaceInterruptedMediaFile,V as requiresConversationEncryption,qs as requiresForwardTypeConfirmation,G as resampleWaveform,ys as resolveBestMediaPresentationSource,hi as resolveCenteredMessageScrollTop,ls as resolveChannelMemberAvatarUrl,ps as resolveChannelMemberDisplayName,q as resolveChannelMiniProgramRelIcon,M as resolveChannelMiniProgramRelName,z as resolveChannelMiniProgramRelOpenSurface,A as resolveChannelMiniProgramRelUrl,B as resolveChannelPinnedGameCopy,Hi as resolveConversationListPresentation,si as resolveDisplayTimestamp,c as resolveEmojiToken,ns as resolveFriendDisplayName,Ii as resolveImProfileAccessDestination,Ji as resolveImThreadActiveDate,es as resolveMediaPresentation,Ki as resolveMediaTransferPresentation,us as resolveMemberDisplayName,Li as resolveMessageBodyKind,Ni as resolveMessageNotificationDecision,Oi as resolveMessageSearchPreview,ii as resolveMessageTimelineTimestamp,Ai as resolveMiniProgramFloatLinkUrl,y as resolveMiniProgramGamePreviewLayout,Bi as resolveMiniProgramOpenUrl,fi as resolvePrependMessageAnchor,ji as resolvePrependMessageAnchorAdjustment,ki as resolvePrependMessageAnchorPosition,hs as resolvePublicNickname,Pi as resolveQuotedMessagePresentation,fs as resolveSenderAvatarUrl,a as resolveStandaloneEmojiMessage,vi as resolveSurvivingMessageAnchorAdjustment,K as resolveUnicodeEmoji,C as resolveVisibleChannelMiniProgramRels,gi as resolveVisibleMessageAnchorPositions,W as retryMessage,v as runMediaSendBatch,X as sendAsFilesBatch,Rs as sendBlockReasonForDecision,Y as sendMediaAlbum,Z as sendMediaFile,$ as sendMediaFilesBatch,_ as sendText,ss as sendVoice,wi as shouldCompleteInitialViewport,yi as shouldFillInitialHistoryViewport,Si as shouldFollowIncomingMessage,bi as shouldLoadNewerHistoryPage,xi as shouldPrefetchOlderHistory,qi as shouldRestoreMessageViewportFocus,ri as shouldShowChatDateSeparator,Mi as shouldTrackRemoteMessageForBadge,D as sortChannelMiniProgramFloatingItems,H as spikeCountForDuration,is as supportsConversationMention,L as unicodeEmojiTextFromCode};
1
+ import{DEFAULT_EMOJI_ASSET_BASE as i,EMOJI_CATALOG as s,EMOJI_TOKEN_RE as r,createEmojiMatcher as e,emojiAssetUrl as m,emojiUrlByCode as t,hasEmojiCandidate as o,resolveEmojiToken as c,resolveStandaloneEmojiMessage as a}from"./modules/im-chat-kit/src/utils/emoji/index.js";import{DEFAULT_LOADING_MINIMUM_VISIBLE_MS as d,DEFAULT_LOADING_SHOW_DELAY_MS as l,createDelayedLoadingIndicator as p}from"./modules/im-chat-kit/src/presentation/delayed-loading-indicator.js";import{EMOJI_GAME_DICE_STABLE_KEY as n,EMOJI_GAME_RPS_STABLE_KEY as u,MAX_RECENT_EMOJI_COUNT as h,prependRecentEmoji as f}from"./modules/im-chat-kit/src/utils/emoji/recent.js";import{MAX_BATCH_FILES as j,mediaBatchBudgetBytes as k,runMediaSendBatch as v}from"./modules/im-chat-kit/src/utils/media-batch.js";import{MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT as g,MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH as w,resolveMiniProgramGamePreviewLayout as y}from"./modules/im-chat-kit/src/presentation/mini-program-game-preview.js";import{MINI_PROGRAM_LANG_NUMBERS as S,channelMiniProgramRelKey as b,csvIncludes as x,resolveChannelMiniProgramRelIcon as q,resolveChannelMiniProgramRelName as M,resolveChannelMiniProgramRelOpenSurface as z,resolveChannelMiniProgramRelUrl as A,resolveChannelPinnedGameCopy as B,resolveVisibleChannelMiniProgramRels as C,sortChannelMiniProgramFloatingItems as D}from"./modules/im-chat-kit/src/presentation/channel-mini-program-rels.js";import{SPIKE_STEP as E,placeholderWaveform as F,resampleWaveform as G,spikeCountForDuration as H}from"./modules/im-chat-kit/src/utils/waveform.js";import{UNICODE_EMOJI_CATALOG as I,parseUnicodeEmojiCode as J,resolveUnicodeEmoji as K,unicodeEmojiTextFromCode as L}from"./modules/im-chat-kit/src/utils/emoji/unicode.js";import{blockReasonForChannelSession as N,blockReasonForChannelState as O}from"./modules/im-chat-kit/src/services/channel-send-restriction.js";import{blockReasonForGroupState as P,blockReasonForSession as Q,cancelMediaUpload as R,isVoiceStorageConfigured as T,replaceInterruptedMediaFile as U,requiresConversationEncryption as V,retryMessage as W,sendAsFilesBatch as X,sendMediaAlbum as Y,sendMediaFile as Z,sendMediaFilesBatch as $,sendText as _,sendVoice as ii,supportsConversationMention as si}from"./modules/im-chat-kit/src/services/send.service.js";import{calculateMediaBox as ri,resolveMediaPresentation as ei}from"./modules/im-chat-kit/src/utils/media-dimensions.js";import{canCopyMessageImage as mi,createMessageImageCopySource as ti,getMessageCopyImageUrl as oi,getMessageCopyText as ci}from"./modules/im-chat-kit/src/services/image-copy.service.js";import{canEditMessage as ai,canRecallMessage as di,resolveChannelMemberAvatarUrl as li,resolveChannelMemberDisplayName as pi,resolveFriendDisplayName as ni,resolveMemberDisplayName as ui,resolvePublicNickname as hi,resolveSenderAvatarUrl as fi}from"./modules/im-chat-kit/src/services/profile-display.js";import{canPinChannelMessage as ji,canPinGroupMessage as ki,canPinMessage as vi,isPinnedMessageProtected as gi}from"./modules/im-chat-kit/src/services/pinned-message-rules.js";import{canPromoteMediaPresentationSource as wi,resolveBestMediaPresentationSource as yi}from"./modules/im-chat-kit/src/presentation/media-source-priority.js";import{canTransmit as Si,canTransmitByType as bi,canTransmitContent as xi,requiresForwardTypeConfirmation as qi}from"./modules/im-core/src/message-flow/forward/can-transmit.js";import{captureRuntimeClientOperation as Mi,captureRuntimeOperation as zi}from"./modules/im-chat-kit/src/runtime/runtime-operation.js";import{classifyGifFile as Ai,classifyMediaFile as Bi,isGifFile as Ci}from"./modules/im-chat-kit/src/services/media-file-classification.js";import{countUnreadConversations as Di,formatConversationUnreadBadge as Ei}from"./modules/im-chat-kit/src/presentation/conversation-unread.js";import{createChatRuntime as Fi}from"./modules/im-chat-kit/src/runtime/chat-runtime.js";import{createConversationPrefetchController as Gi}from"./modules/im-chat-kit/src/runtime/conversation-prefetch-controller.js";import{createLinkMatcher as Hi,hasLinkCandidate as Ii,normalizeLinkHref as Ji}from"./modules/im-chat-kit/src/utils/link.js";import{createNewMessageBadgeController as Ki}from"./modules/im-chat-kit/src/thread/new-message-badge.js";import{createThreadItems as Li}from"./modules/im-chat-kit/src/thread/create-thread-items.js";import{decideChannelMiniProgramRelOpen as Ni}from"./modules/im-chat-kit/src/presentation/channel-mini-program-open.js";import{decideConversationAction as Oi,decideMemberTargetAction as Pi,decideMessageAction as Qi,sendBlockReasonForDecision as Ri}from"./modules/im-chat-kit/src/services/capabilities.js";import{fetchConversationFileBatch as Ti,fetchConversationImageBatch as Ui,fetchConversationMessageBatch as Vi,fetchConversationVideoBatch as Wi,fetchConversationVoiceBatch as Xi,fetchNextConversationSearchBatch as Yi}from"./modules/im-chat-kit/src/services/search.service.js";import{formatChatDateSeparator as Zi,formatConversationDisplayTime as $i,getLocalDayKey as _i,resolveDisplayTimestamp as is,resolveMessageTimelineTimestamp as ss,shouldShowChatDateSeparator as rs}from"./modules/im-chat-kit/src/utils/time-display.js";import{formatFileSize as es,formatMediaDuration as ms,getFileExtension as ts}from"./modules/im-chat-kit/src/utils/media-format.js";import*as os from"./modules/im-chat-kit/src/services/forward.service.js";import{highlightSegments as cs}from"./modules/im-chat-kit/src/utils/highlight.js";import{isMessageLocateScrollProtected as as,isMessageTailChangeFromOlderWindowTrim as ds,isMessageViewportMeasurable as ls,isMessageVisibleForNewMessageBadge as ps,loadOlderUntilBoundary as ns,refreshPrependMessageAnchorPosition as us,resolveCenteredMessageScrollTop as hs,resolvePrependMessageAnchor as fs,resolvePrependMessageAnchorAdjustment as js,resolvePrependMessageAnchorPosition as ks,resolveSurvivingMessageAnchorAdjustment as vs,resolveVisibleMessageAnchorPositions as gs,shouldCompleteInitialViewport as ws,shouldFillInitialHistoryViewport as ys,shouldFollowIncomingMessage as Ss,shouldLoadNewerHistoryPage as bs,shouldPrefetchOlderHistory as xs,shouldRestoreMessageViewportFocus as qs,shouldTrackRemoteMessageForBadge as Ms}from"./modules/im-chat-kit/src/thread/viewport-rules.js";import{isMiniProgramShowTypeOpenable as zs,resolveMiniProgramFloatLinkUrl as As,resolveMiniProgramOpenUrl as Bs}from"./modules/im-chat-kit/src/presentation/mini-program-open-url.js";import*as Cs from"./modules/im-chat-kit/src/services/media.service.js";import*as Ds from"./modules/im-chat-kit/src/services/message.service.js";import*as Es from"./modules/im-chat-kit/src/services/pinned-message.service.js";import*as Fs from"./modules/im-chat-kit/src/services/profile.service.js";import*as Gs from"./modules/im-chat-kit/src/services/read.service.js";import{resolveConversationListPresentation as Hs}from"./modules/im-chat-kit/src/presentation/conversation-list.js";import{resolveImProfileAccessDestination as Is}from"./modules/im-chat-kit/src/services/profile-access.service.js";import{resolveImThreadActiveDate as Js}from"./modules/im-chat-kit/src/thread/active-date.js";import{resolveMediaThumbnailMimeType as Ks}from"./modules/im-core/src/media-thumbnail.js";import{resolveMediaTransferPresentation as Ls}from"./modules/im-chat-kit/src/utils/media-transfer-presentation.js";import{resolveMessageBodyKind as Ns}from"./modules/im-chat-kit/src/thread/resolve-message-body-kind.js";import{resolveMessageNotificationDecision as Os}from"./modules/im-chat-kit/src/presentation/message-notification.js";import{resolveMessageSearchPreview as Ps}from"./modules/im-chat-kit/src/presentation/message-search.js";import{resolveQuotedMessagePresentation as Qs}from"./modules/im-chat-kit/src/thread/resolve-quoted-message-presentation.js";export{i as DEFAULT_EMOJI_ASSET_BASE,d as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,l as DEFAULT_LOADING_SHOW_DELAY_MS,s as EMOJI_CATALOG,n as EMOJI_GAME_DICE_STABLE_KEY,u as EMOJI_GAME_RPS_STABLE_KEY,r as EMOJI_TOKEN_RE,j as MAX_BATCH_FILES,h as MAX_RECENT_EMOJI_COUNT,g as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,w as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,S as MINI_PROGRAM_LANG_NUMBERS,E as SPIKE_STEP,I as UNICODE_EMOJI_CATALOG,N as blockReasonForChannelSession,O as blockReasonForChannelState,P as blockReasonForGroupState,Q as blockReasonForSession,ri as calculateMediaBox,mi as canCopyMessageImage,ai as canEditMessage,ji as canPinChannelMessage,ki as canPinGroupMessage,vi as canPinMessage,wi as canPromoteMediaPresentationSource,di as canRecallMessage,Si as canTransmit,bi as canTransmitByType,xi as canTransmitContent,R as cancelMediaUpload,Mi as captureRuntimeClientOperation,zi as captureRuntimeOperation,b as channelMiniProgramRelKey,Ai as classifyGifFile,Bi as classifyMediaFile,Di as countUnreadConversations,Fi as createChatRuntime,Gi as createConversationPrefetchController,p as createDelayedLoadingIndicator,e as createEmojiMatcher,Hi as createLinkMatcher,ti as createMessageImageCopySource,Ki as createNewMessageBadgeController,Li as createThreadItems,x as csvIncludes,Ni as decideChannelMiniProgramRelOpen,Oi as decideConversationAction,Pi as decideMemberTargetAction,Qi as decideMessageAction,m as emojiAssetUrl,t as emojiUrlByCode,Ti as fetchConversationFileBatch,Ui as fetchConversationImageBatch,Vi as fetchConversationMessageBatch,Wi as fetchConversationVideoBatch,Xi as fetchConversationVoiceBatch,Yi as fetchNextConversationSearchBatch,Zi as formatChatDateSeparator,$i as formatConversationDisplayTime,Ei as formatConversationUnreadBadge,es as formatFileSize,ms as formatMediaDuration,os as forwardService,ts as getFileExtension,_i as getLocalDayKey,oi as getMessageCopyImageUrl,ci as getMessageCopyText,o as hasEmojiCandidate,Ii as hasLinkCandidate,cs as highlightSegments,Ci as isGifFile,as as isMessageLocateScrollProtected,ds as isMessageTailChangeFromOlderWindowTrim,ls as isMessageViewportMeasurable,ps as isMessageVisibleForNewMessageBadge,zs as isMiniProgramShowTypeOpenable,gi as isPinnedMessageProtected,T as isVoiceStorageConfigured,ns as loadOlderUntilBoundary,k as mediaBatchBudgetBytes,Cs as mediaService,Ds as messageService,Ji as normalizeLinkHref,J as parseUnicodeEmojiCode,Es as pinnedMessageService,F as placeholderWaveform,f as prependRecentEmoji,Fs as profileService,Gs as readService,us as refreshPrependMessageAnchorPosition,U as replaceInterruptedMediaFile,V as requiresConversationEncryption,qi as requiresForwardTypeConfirmation,G as resampleWaveform,yi as resolveBestMediaPresentationSource,hs as resolveCenteredMessageScrollTop,li as resolveChannelMemberAvatarUrl,pi as resolveChannelMemberDisplayName,q as resolveChannelMiniProgramRelIcon,M as resolveChannelMiniProgramRelName,z as resolveChannelMiniProgramRelOpenSurface,A as resolveChannelMiniProgramRelUrl,B as resolveChannelPinnedGameCopy,Hs as resolveConversationListPresentation,is as resolveDisplayTimestamp,c as resolveEmojiToken,ni as resolveFriendDisplayName,Is as resolveImProfileAccessDestination,Js as resolveImThreadActiveDate,ei as resolveMediaPresentation,Ks as resolveMediaThumbnailMimeType,Ls as resolveMediaTransferPresentation,ui as resolveMemberDisplayName,Ns as resolveMessageBodyKind,Os as resolveMessageNotificationDecision,Ps as resolveMessageSearchPreview,ss as resolveMessageTimelineTimestamp,As as resolveMiniProgramFloatLinkUrl,y as resolveMiniProgramGamePreviewLayout,Bs as resolveMiniProgramOpenUrl,fs as resolvePrependMessageAnchor,js as resolvePrependMessageAnchorAdjustment,ks as resolvePrependMessageAnchorPosition,hi as resolvePublicNickname,Qs as resolveQuotedMessagePresentation,fi as resolveSenderAvatarUrl,a as resolveStandaloneEmojiMessage,vs as resolveSurvivingMessageAnchorAdjustment,K as resolveUnicodeEmoji,C as resolveVisibleChannelMiniProgramRels,gs as resolveVisibleMessageAnchorPositions,W as retryMessage,v as runMediaSendBatch,X as sendAsFilesBatch,Ri as sendBlockReasonForDecision,Y as sendMediaAlbum,Z as sendMediaFile,$ as sendMediaFilesBatch,_ as sendText,ii as sendVoice,ws as shouldCompleteInitialViewport,ys as shouldFillInitialHistoryViewport,Ss as shouldFollowIncomingMessage,bs as shouldLoadNewerHistoryPage,xs as shouldPrefetchOlderHistory,qs as shouldRestoreMessageViewportFocus,rs as shouldShowChatDateSeparator,Ms as shouldTrackRemoteMessageForBadge,D as sortChannelMiniProgramFloatingItems,H as spikeCountForDuration,si as supportsConversationMention,L as unicodeEmojiTextFromCode};
package/dist/i18n.d.ts CHANGED
@@ -572,7 +572,7 @@ interface ImMediaAlbumItem {
572
572
  durationMs?: number;
573
573
  /** 远端缩略图地址;可能缺省,此时只能用 `thumbData`。 */
574
574
  thumbUrl?: string;
575
- /** 内嵌缩略图/封面 JPEG 字节。加密消息服务端出不了封面,宫格首屏只能靠它。 */
575
+ /** 内嵌缩略图/封面 PNG 或 JPEG 字节。加密消息服务端出不了封面,宫格首屏只能靠它。 */
576
576
  thumbData?: Uint8Array;
577
577
  /** 原文件 MD5。 */
578
578
  md5?: string;
package/dist/index.d.ts CHANGED
@@ -594,7 +594,7 @@ interface ImMediaAlbumItem {
594
594
  durationMs?: number;
595
595
  /** 远端缩略图地址;可能缺省,此时只能用 `thumbData`。 */
596
596
  thumbUrl?: string;
597
- /** 内嵌缩略图/封面 JPEG 字节。加密消息服务端出不了封面,宫格首屏只能靠它。 */
597
+ /** 内嵌缩略图/封面 PNG 或 JPEG 字节。加密消息服务端出不了封面,宫格首屏只能靠它。 */
598
598
  thumbData?: Uint8Array;
599
599
  /** 原文件 MD5。 */
600
600
  md5?: string;
@@ -3077,6 +3077,14 @@ declare function canReactToMessage(message: ReactionParentMessage): boolean;
3077
3077
 
3078
3078
  type RecallFailReason = 'not-found' | 'not-own' | 'pinned' | 'not-sent' | 'expired' | 'unsupported' | 'timeout' | 'server-expired' | 'failed' | 'disconnected';
3079
3079
 
3080
+ /**
3081
+ * 根据缩略图签名选择 PNG 或 JPEG 的显示类型,供 SDK 和 PC/H5 创建 Blob、data URL。
3082
+ * 输入是消息中的原始字节或纯 base64;旧消息没有独立 MIME 字段,非 PNG 沿用 JPEG 解码,
3083
+ * 损坏数据仍交给图片解码器报告失败。本函数不修改字节,也不将历史 JPEG 转码为 PNG。
3084
+ * @example resolveMediaThumbnailMimeType(new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10])) // 'image/png'
3085
+ */
3086
+ declare function resolveMediaThumbnailMimeType(source: Uint8Array | string): 'image/png' | 'image/jpeg';
3087
+
3080
3088
  /** 浏览器 PushSubscription.toJSON() 的可移植数据;不依赖 DOM 或浏览器全局。 */
3081
3089
  interface ImWebPushSubscription {
3082
3090
  endpoint?: string;
@@ -3991,13 +3999,13 @@ interface MediaAlbumMessageOptions {
3991
3999
  * 本地视频的固有尺寸、时长与首帧封面。
3992
4000
  *
3993
4001
  * @remarks 宿主可从本地 object URL 解码首个可展示帧,使上传占位从首次渲染就使用真实比例和主图。
3994
- * `posterData` 是等比缩放后的 JPEG;存在时会作为消息 `thumbData` 随正文发送。宽高必须是有限正数,
4002
+ * `posterData` 是等比缩放后的 JPEG(兼容已有 PNG);存在时会作为消息 `thumbData` 随正文发送。宽高必须是有限正数,
3995
4003
  * duration 存在时必须是有限正数,posterData 必须是非空且不超过 16 KiB 的 Uint8Array。
3996
4004
  */
3997
4005
  interface VideoPreviewMetadata extends ImagePreviewMetadata {
3998
4006
  /** 秒。 */
3999
4007
  duration?: number;
4000
- /** 本地首个可展示帧生成的 JPEG 字节。 */
4008
+ /** 本地首个可展示帧生成的 JPEG 或已有 PNG 字节。 */
4001
4009
  posterData?: Uint8Array;
4002
4010
  }
4003
4011
  /**
@@ -6231,7 +6239,7 @@ interface ImMediaTasksApi {
6231
6239
  *
6232
6240
  * 返回的对象可以**原样**作为 `localPreviewMetadata` 交给 `sendImage` / `sendVideo` /
6233
6241
  * `sendMediaAlbum`:发送链路会跳过重复解码,上传中的气泡也从第一帧就有封面。
6234
- * posterData 保持发送规格(长边 320、JPEG);includeDisplayPoster 可在同一次解码中额外生成
6242
+ * posterData 保持发送规格(长边 320;透明图片 PNG,其余 JPEG);includeDisplayPoster 可在同一次解码中额外生成
6235
6243
  * 仅供页面显示的高清 displayPoster(长边最多 960),不得用它替换消息里的小封面。
6236
6244
  *
6237
6245
  * @param input.kind 按文件类型选解码路径;`'video'` 才会抽首帧与读时长。
@@ -6265,7 +6273,7 @@ interface ImMediaTasksApi {
6265
6273
  }) => Promise<Blob | null>;
6266
6274
  /**
6267
6275
  * 为本地图片生成仅供胶片条/相册格显示的缩略图,不上传、不写缓存、不改变发送文件与元信息。
6268
- * JPEG 按文件签名识别,最长边最多 256px 且不放大,与发送预读共用账号的图片解码预算。
6276
+ * JPEG 原文件按签名识别并生成 JPEG 显示缩略图,最长边最多 256px 且不放大,与发送预读共用账号的图片解码预算。
6269
6277
  * 其它格式直接返回原 Blob,保留透明与动画;宿主负责返回 Blob 的 object URL 生命周期。
6270
6278
  * 生成失败返回 null 并记录诊断;取消、账号失效和未装配能力保持明确错误。
6271
6279
  * @param input.file 原始本地图片;返回的显示资源不得代替它传入发送命令。
@@ -8692,20 +8700,20 @@ interface MiniProgramGamePreviewInput {
8692
8700
  gamePreviewUrl?: string;
8693
8701
  gamePreviewWidth?: number;
8694
8702
  gamePreviewHeight?: number;
8695
- /** 宿主已经观察到 `<img>` 加载失败,说明该地址其实是文档,翻回 document。 */
8703
+ /** 宿主已经观察到 `<img>` 加载失败,HTTP(S) 地址可按文档重试;data 图片失败后必须拒绝加载。 */
8696
8704
  imageLoadFailed?: boolean;
8697
8705
  }
8698
8706
  interface MiniProgramGamePreviewLayout {
8699
- /** 去空白后的 proto 94;为空串时 `render` 恒为 `empty`。 */
8707
+ /** 允许加载的 proto 94;empty 或 blocked 状态不会暴露可加载地址。 */
8700
8708
  url: string;
8701
8709
  /** 按源尺寸等比缩放用的作者宽高,永远是正数。 */
8702
8710
  sourceWidth: number;
8703
8711
  sourceHeight: number;
8704
8712
  /**
8705
8713
  * `document` 顶层加载远程页面(对应原生 WebView);`image` 地址明确是图片资源;
8706
- * `empty` 无地址,画占位卡——占位本身是合法终态,不是待修复状态。
8714
+ * `empty` 无地址,画占位卡;`blocked` 地址不允许加载或 data 图片失败,展示失败提示。
8707
8715
  */
8708
- render: 'document' | 'image' | 'empty';
8716
+ render: 'document' | 'image' | 'empty' | 'blocked';
8709
8717
  }
8710
8718
  /**
8711
8719
  * 默认按 document 处理:线上真实地址形如 `…/p2p-share?lang=zh&banker_order_id=905`,
@@ -10985,5 +10993,5 @@ declare function resampleWaveform(data: readonly number[], targetCount: number):
10985
10993
  */
10986
10994
  declare function placeholderWaveform(seed: string, count: number): number[];
10987
10995
 
10988
- export { DEFAULT_EMOJI_ASSET_BASE, DEFAULT_LOADING_MINIMUM_VISIBLE_MS, DEFAULT_LOADING_SHOW_DELAY_MS, DEFAULT_LOCALE, EDIT_WINDOW_MS, EMOJI_CATALOG, EMOJI_GAME_DICE_STABLE_KEY, EMOJI_GAME_RPS_STABLE_KEY, EMOJI_TOKEN_RE, IMAGE_MESSAGE_ACCEPT, IM_CHAT_FONT_SCALES, IM_DIAGNOSTIC_CATEGORIES, IM_EMOJI_CATALOG, ImPinnedMessageOperationError, MAX_BATCH_FILES, MAX_RECENT_EMOJI_COUNT, MEDIA_ALBUM_CAPTION_MAX_LENGTH, MEDIA_ALBUM_MAX_ITEMS, MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT, MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH, MINI_PROGRAM_LANG_NUMBERS, MediaTransferError, REACTION_SUPPORTED_CONTENT_TYPES, SPIKE_STEP, UNICODE_EMOJI_CATALOG, blockReasonForChannelSession, blockReasonForChannelState, blockReasonForGroupState, blockReasonForSession, buildSessionFavoritePlainBody, calculateMediaBox, canCopyMessageImage, canEditMessage, canPinChannelMessage, canPinGroupMessage, canPinMessage, canPromoteMediaPresentationSource, canReactToMessage, canRecallMessage, canTransmit, canTransmitByType, canTransmitContent, cancelMediaUpload, captureRuntimeClientOperation, captureRuntimeOperation, channelMiniProgramRelKey, classifyGifFile, classifyMediaFile, classifyStickerImageType, countUnreadConversations, createChatRuntime, createConversationPrefetchController, createDelayedLoadingIndicator, createEmojiMatcher, createFaceToFaceGroupQrPayload, createImClient, createImConsoleDiagnosticSink, createImDiagnosticMemoryBuffer, createImI18n, createImResourceUploader, createImTextSearchMatcher, createLinkMatcher, createMessageImageCopySource, createNewMessageBadgeController, createSdkDiagnosticWriter, createThreadItems, createVoicePlayer, createVoiceRecordingSession, csvIncludes, decideChannelMiniProgramRelOpen, decideConversationAction, decideMemberTargetAction, decideMessageAction, detectVoiceCapabilities, emojiAssetUrl, emojiUrlByCode, extractSearchText, fetchConversationFileBatch, fetchConversationImageBatch, fetchConversationMessageBatch, fetchConversationVideoBatch, fetchConversationVoiceBatch, fetchNextConversationSearchBatch, formatChatDateSeparator, formatConversationDisplayTime, formatConversationUnreadBadge, formatFailure, formatFileSize, formatLastMessageSummary, formatMediaDuration, formatMediaPlaceholder, formatMentionAll, formatServiceText, formatSystemMessage, forward_service as forwardService, getFileExtension, getImTextSearchInitial, getImTimeCatalog, getLocalDayKey, getMessageCopyImageUrl, getMessageCopyText, hasEmojiCandidate, hasLinkCandidate, highlightSegments, isGifFile, isMessageLocateScrollProtected, isMessageTailChangeFromOlderWindowTrim, isMessageViewportMeasurable, isMessageVisibleForNewMessageBadge, isMiniProgramShowTypeOpenable, isPinnedMessageProtected, isSupportedImageFile, isVoiceStorageConfigured, loadOlderUntilBoundary, mediaBatchBudgetBytes, media_service as mediaService, mediaTransferErrorCodeOf, message_service as messageService, migrateImCachePrefix, normalizeImLocale, normalizeLinkHref, normalizeMediaUploadCredentials, parseSessionFavoriteAlbumItems, parseSessionFavoriteFileItems, parseUnicodeEmojiCode, pinnedMessage_service as pinnedMessageService, placeholderWaveform, prependRecentEmoji, profile_service as profileService, read_service as readService, refreshPrependMessageAnchorPosition, registerImCatalogOverrides, replaceInterruptedMediaFile, requiresConversationEncryption, requiresForwardTypeConfirmation, resampleWaveform, resetImCatalogOverrides, resolveBestMediaPresentationSource, resolveCenteredMessageScrollTop, resolveChannelAccess, resolveChannelMemberAvatarUrl, resolveChannelMemberDisplayName, resolveChannelMiniProgramRelIcon, resolveChannelMiniProgramRelName, resolveChannelMiniProgramRelOpenSurface, resolveChannelMiniProgramRelUrl, resolveChannelPinnedGameCopy, resolveConversationListPresentation, resolveDisplayTimestamp, resolveEmojiToken, resolveFriendDisplayName, resolveImEmojiToken, resolveImProfileAccessDestination, resolveImThreadActiveDate, resolveMediaAlbumSendContentType, resolveMediaPresentation, resolveMediaTransferPresentation, resolveMemberDisplayName, resolveMessageBodyKind, resolveMessageNotificationDecision, resolveMessageSearchPreview, resolveMessageTimelineTimestamp, resolveMiniProgramFloatLinkUrl, resolveMiniProgramGamePreviewLayout, resolveMiniProgramOpenUrl, resolvePrependMessageAnchor, resolvePrependMessageAnchorAdjustment, resolvePrependMessageAnchorPosition, resolvePublicNickname, resolveQuotedMessagePresentation, resolveSenderAvatarUrl, resolveSessionFavoriteAlbumCaption, resolveSessionFavoriteAlbumItemPreviewUrl, resolveSessionFavoriteKindFromMessage, resolveStandaloneEmojiMessage, resolveSurvivingMessageAnchorAdjustment, resolveTextSegments, resolveUnicodeEmoji, resolveVisibleChannelMiniProgramRels, resolveVisibleMessageAnchorPositions, retryMessage, runMediaSendBatch, sendAsFilesBatch, sendBlockReasonForDecision, sendMediaAlbum, sendMediaFile, sendMediaFilesBatch, sendText, sendVoice, shouldCompleteInitialViewport, shouldFillInitialHistoryViewport, shouldFollowIncomingMessage, shouldLoadNewerHistoryPage, shouldPrefetchOlderHistory, shouldRestoreMessageViewportFocus, shouldShowChatDateSeparator, shouldTrackRemoteMessageForBadge, sortChannelMiniProgramFloatingItems, sortSessions, spikeCountForDuration, sumSessionsUnread, supportsConversationMention, unicodeEmojiTextFromCode, voiceErrorCodeOf };
10996
+ export { DEFAULT_EMOJI_ASSET_BASE, DEFAULT_LOADING_MINIMUM_VISIBLE_MS, DEFAULT_LOADING_SHOW_DELAY_MS, DEFAULT_LOCALE, EDIT_WINDOW_MS, EMOJI_CATALOG, EMOJI_GAME_DICE_STABLE_KEY, EMOJI_GAME_RPS_STABLE_KEY, EMOJI_TOKEN_RE, IMAGE_MESSAGE_ACCEPT, IM_CHAT_FONT_SCALES, IM_DIAGNOSTIC_CATEGORIES, IM_EMOJI_CATALOG, ImPinnedMessageOperationError, MAX_BATCH_FILES, MAX_RECENT_EMOJI_COUNT, MEDIA_ALBUM_CAPTION_MAX_LENGTH, MEDIA_ALBUM_MAX_ITEMS, MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT, MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH, MINI_PROGRAM_LANG_NUMBERS, MediaTransferError, REACTION_SUPPORTED_CONTENT_TYPES, SPIKE_STEP, UNICODE_EMOJI_CATALOG, blockReasonForChannelSession, blockReasonForChannelState, blockReasonForGroupState, blockReasonForSession, buildSessionFavoritePlainBody, calculateMediaBox, canCopyMessageImage, canEditMessage, canPinChannelMessage, canPinGroupMessage, canPinMessage, canPromoteMediaPresentationSource, canReactToMessage, canRecallMessage, canTransmit, canTransmitByType, canTransmitContent, cancelMediaUpload, captureRuntimeClientOperation, captureRuntimeOperation, channelMiniProgramRelKey, classifyGifFile, classifyMediaFile, classifyStickerImageType, countUnreadConversations, createChatRuntime, createConversationPrefetchController, createDelayedLoadingIndicator, createEmojiMatcher, createFaceToFaceGroupQrPayload, createImClient, createImConsoleDiagnosticSink, createImDiagnosticMemoryBuffer, createImI18n, createImResourceUploader, createImTextSearchMatcher, createLinkMatcher, createMessageImageCopySource, createNewMessageBadgeController, createSdkDiagnosticWriter, createThreadItems, createVoicePlayer, createVoiceRecordingSession, csvIncludes, decideChannelMiniProgramRelOpen, decideConversationAction, decideMemberTargetAction, decideMessageAction, detectVoiceCapabilities, emojiAssetUrl, emojiUrlByCode, extractSearchText, fetchConversationFileBatch, fetchConversationImageBatch, fetchConversationMessageBatch, fetchConversationVideoBatch, fetchConversationVoiceBatch, fetchNextConversationSearchBatch, formatChatDateSeparator, formatConversationDisplayTime, formatConversationUnreadBadge, formatFailure, formatFileSize, formatLastMessageSummary, formatMediaDuration, formatMediaPlaceholder, formatMentionAll, formatServiceText, formatSystemMessage, forward_service as forwardService, getFileExtension, getImTextSearchInitial, getImTimeCatalog, getLocalDayKey, getMessageCopyImageUrl, getMessageCopyText, hasEmojiCandidate, hasLinkCandidate, highlightSegments, isGifFile, isMessageLocateScrollProtected, isMessageTailChangeFromOlderWindowTrim, isMessageViewportMeasurable, isMessageVisibleForNewMessageBadge, isMiniProgramShowTypeOpenable, isPinnedMessageProtected, isSupportedImageFile, isVoiceStorageConfigured, loadOlderUntilBoundary, mediaBatchBudgetBytes, media_service as mediaService, mediaTransferErrorCodeOf, message_service as messageService, migrateImCachePrefix, normalizeImLocale, normalizeLinkHref, normalizeMediaUploadCredentials, parseSessionFavoriteAlbumItems, parseSessionFavoriteFileItems, parseUnicodeEmojiCode, pinnedMessage_service as pinnedMessageService, placeholderWaveform, prependRecentEmoji, profile_service as profileService, read_service as readService, refreshPrependMessageAnchorPosition, registerImCatalogOverrides, replaceInterruptedMediaFile, requiresConversationEncryption, requiresForwardTypeConfirmation, resampleWaveform, resetImCatalogOverrides, resolveBestMediaPresentationSource, resolveCenteredMessageScrollTop, resolveChannelAccess, resolveChannelMemberAvatarUrl, resolveChannelMemberDisplayName, resolveChannelMiniProgramRelIcon, resolveChannelMiniProgramRelName, resolveChannelMiniProgramRelOpenSurface, resolveChannelMiniProgramRelUrl, resolveChannelPinnedGameCopy, resolveConversationListPresentation, resolveDisplayTimestamp, resolveEmojiToken, resolveFriendDisplayName, resolveImEmojiToken, resolveImProfileAccessDestination, resolveImThreadActiveDate, resolveMediaAlbumSendContentType, resolveMediaPresentation, resolveMediaThumbnailMimeType, resolveMediaTransferPresentation, resolveMemberDisplayName, resolveMessageBodyKind, resolveMessageNotificationDecision, resolveMessageSearchPreview, resolveMessageTimelineTimestamp, resolveMiniProgramFloatLinkUrl, resolveMiniProgramGamePreviewLayout, resolveMiniProgramOpenUrl, resolvePrependMessageAnchor, resolvePrependMessageAnchorAdjustment, resolvePrependMessageAnchorPosition, resolvePublicNickname, resolveQuotedMessagePresentation, resolveSenderAvatarUrl, resolveSessionFavoriteAlbumCaption, resolveSessionFavoriteAlbumItemPreviewUrl, resolveSessionFavoriteKindFromMessage, resolveStandaloneEmojiMessage, resolveSurvivingMessageAnchorAdjustment, resolveTextSegments, resolveUnicodeEmoji, resolveVisibleChannelMiniProgramRels, resolveVisibleMessageAnchorPositions, retryMessage, runMediaSendBatch, sendAsFilesBatch, sendBlockReasonForDecision, sendMediaAlbum, sendMediaFile, sendMediaFilesBatch, sendText, sendVoice, shouldCompleteInitialViewport, shouldFillInitialHistoryViewport, shouldFollowIncomingMessage, shouldLoadNewerHistoryPage, shouldPrefetchOlderHistory, shouldRestoreMessageViewportFocus, shouldShowChatDateSeparator, shouldTrackRemoteMessageForBadge, sortChannelMiniProgramFloatingItems, sortSessions, spikeCountForDuration, sumSessionsUnread, supportsConversationMention, unicodeEmojiTextFromCode, voiceErrorCodeOf };
10989
10997
  export type { ApplySessionResult, BrowseMessagesInput, CanPinMessageInput, CapabilityAvailability, CapabilityDecision, CapabilityReason, CenteredMessageScrollInput, ChannelAccessSnapshot, ChannelBaseSessionState, ChannelConversationCapabilities, ChannelConversationMessageApi, ChannelJoinApplication, ChannelJoinApplicationNotification, ChannelJoinApplicationPage, ChannelMember, ChannelMemberPage, ChannelMentionMember, ChannelMentionMemberPage, ChannelMiniProgramOpenGame, ChannelMiniProgramRel, ChannelMiniProgramRelConfigType, ChannelMiniProgramRelOpenDecision, ChannelMiniProgramRelOpenSurface, ChannelMuteReason, ChannelPermissionSet, ChannelProfile, ChannelRole, ChannelSessionState, ChatMediaMessageRef, ChatProfileAdapter, ChatRuntime, ChatRuntimeCredentials, ChatRuntimeFactories, ChatRuntimeHostDeps, ChatRuntimeOpResult, ContactCardInput, ContactMessageOptions, ConversationBackgroundPreset, ConversationBackgroundSelection, ConversationCapabilityAction, ConversationCapabilitySnapshot, ConversationDraft, ConversationDraftApi, ConversationEntryUnreadNavigation, ConversationEntryUnreadSnapshot, ConversationHandle, ConversationHandleSnapshot, ConversationInitialPosition, ConversationLastMessageSummary, ConversationListItem, ConversationListMention, ConversationListPresentation, ConversationListPresentationLabels, ConversationListPresentationOptions, ConversationListPreviewMediaKind, ConversationListPreviewSegment, ConversationMessageApi, ConversationOpenOptions, ConversationPrefetchController, ConversationPrefetchControllerOptions, ConversationPrefetchOptions, ConversationPrefetchResult, ConversationRef, ConversationSearchCategory, ConversationSearchPage, ConversationSearchResult, ConversationSystemSummary, ConversationType, CreateThreadItemsInput, CustomerServiceConversationCapabilities, DelayedLoadingIndicator, DelayedLoadingIndicatorOptions, DirectConversationCapabilities, DirectConversationMessageApi, DraftInput, EditTextOptions, EmojiEntry, EmojiRecentItem, EmojiSegment, ExpressionMessageOptions, FileMessageOptions, FormatFailureContext, FormatLastMessageContext, FormatMediaPlaceholderContext, FormatServiceTextContext, FormatSystemMessageContext, FormatTimeDisplayContext, ForwardCommandHooks, ForwardFailReason, ForwardItemStatus, ForwardMessageFailure, ForwardMessagesInput, ForwardMessagesResult, ForwardTarget, ForwardedMessageRef, GameMessageOptions, GifFileClassification, GifMessageOptions, GiftMessageOptions, GroupConversationCapabilities, GroupConversationMessageApi, GroupMemberItem, GroupProfile, HighlightSegment, ImAppearanceSettingsApi, ImApplicationItem, ImApplicationRef, ImApplicationsApi, ImAuthIssue, ImAuthProvider, ImBlockedContact, ImCacheOptions, ImCachePrefixMigrationContext, ImCachePrefixMigrator, ImCallKind, ImCallOutcome, ImCallRecordBody, ImCatalog, ImCatalogOverrides, ImChannelConversationAccessSnapshot, ImChannelMemberPresentation, ImChannelMentionApi, ImChannelMentionPresentation, ImChannelMiniProgramRel, ImChannelPermissions, ImChannelPinnedMessage, ImChannelProfile, ImChannelProfilePresentation, ImChannelRole, ImChannelState, ImChannelsApi, ImChatFontScale, ImClientActivityApi, ImClientActivitySnapshot, ImClientOptions, ImConnectionState, ImContactBody, ImContactKind, ImContactProfile, ImContactRelationship, ImContactRemarkPhone, ImContactSearchResult, ImContactsApi, ImConversationBackgroundApi, ImConversationCapabilitiesApi, ImConversationListApi, ImConversationListSnapshot, ImConversationListState, ImConversationSearchApi, ImCoreApiOptions, ImCreateChannelInput, ImCreateChannelResult, ImCreateFaceToFaceGroupResult, ImCreateGroupInput, ImCreateGroupResult, ImCreatedChannel, ImCreatedGroup, ImCustomerServiceApi, ImDebugOptions, ImDiagnosticCategory, ImDiagnosticError, ImDiagnosticLayer, ImDiagnosticLevel, ImDiagnosticMemoryBuffer, ImDiagnosticMemoryBufferFilter, ImDiagnosticMemoryBufferOptions, ImDiagnosticMemoryBufferSnapshot, ImDiagnosticMessage, ImDiagnosticRecord, ImDiagnosticSink, ImDiagnosticWriter, ImDirectCallAnswerResult, ImDirectCallFailReason, ImDirectCallHangupInput, ImDirectCallHangupReason, ImDirectCallInviteInput, ImDirectCallNotifyAudioInput, ImDirectCallTargetInput, ImDirectCallsApi, ImDirectReadReceiptSettings, ImDirectoryApi, ImDirectoryFieldMatch, ImDirectoryItem, ImDirectoryKind, ImDirectoryPage, ImDirectorySearchApi, ImDirectorySearchItem, ImDirectorySearchResult, ImDraftsApi, ImEmojiCatalogEntry, ImEndpointProvider, ImEventsApi, ImExpressionAsset, ImExpressionAssetInput, ImExpressionEmojiRecentInput, ImExpressionFavoriteKind, ImExpressionOptions, ImExpressionRecentInput, ImExpressionRecentItem, ImExpressionRecentItemKind, ImExpressionsApi, ImFaceToFaceGroup, ImFailureCatalog, ImFileBody, ImFilesAlbumBody, ImForwardOperationResult, ImFriendshipRequestResult, ImGameBody, ImGameType, ImGifAssetInput, ImGiftBody, ImGiftSessionType, ImGiftStatus, ImGiftType, ImGiphyAsset, ImGiphyPage, ImGiphyPageOptions, ImGroupCallAnswerInput, ImGroupCallBusyInput, ImGroupCallCreateInput, ImGroupCallJoinInput, ImGroupCallMeetingSnapshot, ImGroupCallMember, ImGroupCallMemberStatus, ImGroupCallStatusInput, ImGroupCallTargetInput, ImGroupCallsApi, ImGroupConversationState, ImGroupMemberPresentation, ImGroupMentionApi, ImGroupPinnedMessage, ImGroupProfile, ImGroupsApi, ImI18n, ImImageBody, ImLastMessageCatalog, ImLifecycleSnapshot, ImLiveRoomBody, ImLiveRoomStatus, ImLiveRoomType, ImLocalDataApi, ImLocalDataInfo, ImLocale, ImLogoutOptions, ImMediaAlbumBody, ImMediaAlbumItem, ImMediaBatchSendResult, ImMediaCatalog, ImMediaConfig, ImMediaTask, ImMediaTasksApi, ImMembershipJoinResult, ImMentionCatalog, ImMessageActionResult, ImMessageBodyKind, ImMessageMention, ImMessageReactionAggregate, ImMessageReactions, ImMessageRef, ImMessageSearchApi, ImMessageView, ImMessageViewBody, ImMessagesByIdResult, ImMiniProgramBody, ImMiniProgramShowType, ImOutboxApi, ImOutboxItem, ImPageToken, ImPartialCatalog, ImPinnedMessageActionResult, ImPinnedMessageErrorKind, ImPinnedMessageOperation, ImPinnedMessageSnapshot, ImProductApplicationUpdate, ImProductAuthInvalidReason, ImProductClient, ImProductEvent, ImProductEventError, ImProductEventMap, ImProductMessage, ImProfileAccessDestination, ImPushApi, ImPushSnapshot, ImQuotedMessagePresentation, ImReactionChangeAction, ImReactionChangeResult, ImReadReceiptSettingsApi, ImRedPacketBody, ImRedPacketType, ImRequestError, ImRequestErrorHandler, ImResourceKind, ImResourceUploadInput, ImResourceUploadProgress, ImResourceUploadResult, ImResourceUploader, ImResourceUploaderConfig, ImRobotBody, ImRobotChatMenuItem, ImRobotCommand, ImRobotConversationBindInput, ImRobotDirectoryItem, ImRobotDirectoryPage, ImRobotDirectoryScope, ImRobotMenuReplyInput, ImRobotModule, ImRobotProfile, ImRobotProfileInput, ImRobotsApi, ImSdkErrorCategory, ImSdkErrorShape, ImSearchApi, ImServiceCatalog, ImServiceTextKey, ImSessionApi, ImSessionFavoriteAlbumItem, ImSessionFavoriteFileItem, ImSessionFavoriteItem, ImSessionFavoriteKind, ImSessionFavoritesApi, ImSessionLifecycleState, ImSettingsApi, ImStickerAssetInput, ImStickerBody, ImStickerPack, ImSupportedConversationRef, ImSystemCatalog, ImTextResolver, ImTextSearchMatch, ImTextSearchMatchOptions, ImTextSearchMatcher, ImTextSearchRange, ImThreadActiveDateSnapshot, ImThreadDateMarkerMetric, ImThreadDecoration, ImThreadEncryptionItem, ImThreadIntent, ImThreadItem, ImThreadPresentationAdapter, ImThreadReadActions, ImThreadReadTargetResolver, ImThreadViewportMetrics, ImTimeCatalog, ImTransferBody, ImTransferSessionType, ImTransferStatus, ImVideoBody, ImVoiceBody, ImWebPushSubscription, ImWeekdayKey, ImageMessageOptions, ImagePreviewMetadata, IncomingMessageFollowInput, InitialHistoryViewportFillInput, InitialViewportCompletionInput, LinkSegment, LiveRoomMessageOptions, LocalConversationHistoryClearResult, LocalMessageDeletionResult, LocalVideoPreviewMetadata, MediaAlbumItemInput, MediaAlbumMessageOptions, MediaBatchBudgetOptions, MediaBatchLimitInfo, MediaFileClassification, MediaLimitItem, MediaObjectUrlLease, MediaPresentationFit, MediaPresentationPolicy, MediaPresentationRule, MediaPresentationSourceCandidate, MediaPresentationSourceQuality, MediaSendBatchResult, MediaTransferErrorCode, MediaTransferPresentation, MediaUploadCredentials, MediaUploadCredentialsProvider, MediaUploadCredentialsRequest, MemberTargetCapabilityAction, MemberTargetCapabilityInput, MentionCandidate, MentionCandidatePage, MentionInput, MessageCapabilityAction, MessageCapabilityInput, MessageContentType, MessageLocateScrollProtectionInput, MessageNotificationDecision, MessageNotificationInput, MessageSearchPreviewOptions, MessageSearchPreviewSegment, MessageWindowInfo, MessageWindowPage, MessagesByIdFailure, MigrateImCachePrefixInput, MiniProgramGamePreviewInput, MiniProgramGamePreviewLayout, MiniProgramHostLocale, MiniProgramMessageOptions, MiniProgramOpenUrlInput, NewMessageBadgeController, NewMessageBadgeCountListener, NewMessageBadgeVisibilityInput, NewerHistoryPageTriggerInput, OlderHistoryPrefetchInput, PrependAnchorCandidate, PrependAnchorViewport, PrependMessageAnchorPosition, ProductConversationListType, ProductHandleConversationType, ProductMessageSearchPage, ProductMessageSearchPreviewPart, ProductMessageSearchResult, RemoteMessageBadgeTrackingInput, ResolveMediaPresentationInput, ResolveTextOptions, ResolvedConversationBackground, ResolvedMediaPresentation, RichExtraSegment, RobotConversationCapabilities, RuntimeClientOperation, RuntimeOperation, SearchBatchResult, SearchFilesInput, SearchMessagesInput, SearchTextMessagesInput, SegmentMatch, SegmentMatcher, SendCapabilityMode, SendCommandHooks, SendMessageResult, SendVoicePayload, SenderProfileEntry, ServiceNoteHooks, StandaloneEmojiMessage, StickerAssetKind, TextMessageOptions, TextSegment, TransferMessageOptions, UnicodeEmojiEntry, UnknownMessageBody, UserProfile, VideoMessageOptions, VideoPreviewMetadata, VisibleChannelMiniProgramRels, VoiceCapabilities, VoiceErrorCode, VoiceMessageMetadata, VoicePlayer, VoicePlayerOptions, VoicePlayerState, VoiceRecordingResult, VoiceRecordingSession, VoiceRecordingSessionOptions, VoiceRecordingState, VoiceToggleOptions };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{DEFAULT_EMOJI_ASSET_BASE as s,EMOJI_CATALOG as r,EMOJI_TOKEN_RE as m,createEmojiMatcher as i,emojiAssetUrl as o,emojiUrlByCode as e,hasEmojiCandidate as t,resolveEmojiToken as c,resolveStandaloneEmojiMessage as a}from"./modules/im-chat-kit/src/utils/emoji/index.js";import{DEFAULT_LOADING_MINIMUM_VISIBLE_MS as d,DEFAULT_LOADING_SHOW_DELAY_MS as p,createDelayedLoadingIndicator as l}from"./modules/im-chat-kit/src/presentation/delayed-loading-indicator.js";import{DEFAULT_LOCALE as u,normalizeImLocale as f}from"./modules/im-i18n/src/locale.js";import{EDIT_WINDOW_MS as n}from"./modules/im-core/src/message-flow/edit/edit-manager.js";import{EMOJI_GAME_DICE_STABLE_KEY as j,EMOJI_GAME_RPS_STABLE_KEY as h,MAX_RECENT_EMOJI_COUNT as k,prependRecentEmoji as v}from"./modules/im-chat-kit/src/utils/emoji/recent.js";import{IMAGE_MESSAGE_ACCEPT as g,isSupportedImageFile as b}from"./modules/im-sdk/src/product/image-format.js";import{IM_CHAT_FONT_SCALES as w}from"./modules/im-sdk/src/product/settings.js";import{IM_DIAGNOSTIC_CATEGORIES as y,createImConsoleDiagnosticSink as x,createSdkDiagnosticWriter as S}from"./modules/im-sdk/src/product/diagnostics.js";import{IM_EMOJI_CATALOG as q,resolveImEmojiToken as M}from"./modules/im-sdk/src/product/emoji-catalog.js";import{ImPinnedMessageOperationError as z}from"./modules/im-sdk/src/domains/pinned-message.js";import{MAX_BATCH_FILES as A,mediaBatchBudgetBytes as B,runMediaSendBatch as C}from"./modules/im-chat-kit/src/utils/media-batch.js";import{MEDIA_ALBUM_CAPTION_MAX_LENGTH as D,MEDIA_ALBUM_MAX_ITEMS as E,resolveMediaAlbumSendContentType as F}from"./modules/im-core/src/mapping/media-album-body.js";import{MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT as G,MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH as H,resolveMiniProgramGamePreviewLayout as I}from"./modules/im-chat-kit/src/presentation/mini-program-game-preview.js";import{MINI_PROGRAM_LANG_NUMBERS as J,channelMiniProgramRelKey as K,csvIncludes as L,resolveChannelMiniProgramRelIcon as N,resolveChannelMiniProgramRelName as O,resolveChannelMiniProgramRelOpenSurface as P,resolveChannelMiniProgramRelUrl as Q,resolveChannelPinnedGameCopy as R,resolveVisibleChannelMiniProgramRels as T,sortChannelMiniProgramFloatingItems as U}from"./modules/im-chat-kit/src/presentation/channel-mini-program-rels.js";import{MediaTransferError as V,mediaTransferErrorCodeOf as W}from"./modules/im-browser/src/media/media-transfer-errors.js";import{REACTION_SUPPORTED_CONTENT_TYPES as X,canReactToMessage as Y}from"./modules/im-core/src/message-flow/reaction/can-react.js";import{SPIKE_STEP as Z,placeholderWaveform as $,resampleWaveform as _,spikeCountForDuration as ss}from"./modules/im-chat-kit/src/utils/waveform.js";import{UNICODE_EMOJI_CATALOG as rs,parseUnicodeEmojiCode as ms,resolveUnicodeEmoji as is,unicodeEmojiTextFromCode as os}from"./modules/im-chat-kit/src/utils/emoji/unicode.js";import{blockReasonForChannelSession as es,blockReasonForChannelState as ts}from"./modules/im-chat-kit/src/services/channel-send-restriction.js";import{blockReasonForGroupState as cs,blockReasonForSession as as,cancelMediaUpload as ds,isVoiceStorageConfigured as ps,replaceInterruptedMediaFile as ls,requiresConversationEncryption as us,retryMessage as fs,sendAsFilesBatch as ns,sendMediaAlbum as js,sendMediaFile as hs,sendMediaFilesBatch as ks,sendText as vs,sendVoice as gs,supportsConversationMention as bs}from"./modules/im-chat-kit/src/services/send.service.js";import{buildSessionFavoritePlainBody as ws,resolveSessionFavoriteKindFromMessage as ys}from"./modules/im-sdk/src/product/session-favorites.js";import{calculateMediaBox as xs,resolveMediaPresentation as Ss}from"./modules/im-chat-kit/src/utils/media-dimensions.js";import{canCopyMessageImage as qs,createMessageImageCopySource as Ms,getMessageCopyImageUrl as zs,getMessageCopyText as As}from"./modules/im-chat-kit/src/services/image-copy.service.js";import{canEditMessage as Bs,canRecallMessage as Cs,resolveChannelMemberAvatarUrl as Ds,resolveChannelMemberDisplayName as Es,resolveFriendDisplayName as Fs,resolveMemberDisplayName as Gs,resolvePublicNickname as Hs,resolveSenderAvatarUrl as Is}from"./modules/im-chat-kit/src/services/profile-display.js";import{canPinChannelMessage as Js,canPinGroupMessage as Ks,canPinMessage as Ls,isPinnedMessageProtected as Ns}from"./modules/im-chat-kit/src/services/pinned-message-rules.js";import{canPromoteMediaPresentationSource as Os,resolveBestMediaPresentationSource as Ps}from"./modules/im-chat-kit/src/presentation/media-source-priority.js";import{canTransmit as Qs,canTransmitByType as Rs,canTransmitContent as Ts,requiresForwardTypeConfirmation as Us}from"./modules/im-core/src/message-flow/forward/can-transmit.js";import{captureRuntimeClientOperation as Vs,captureRuntimeOperation as Ws}from"./modules/im-chat-kit/src/runtime/runtime-operation.js";import{classifyGifFile as Xs,classifyMediaFile as Ys,isGifFile as Zs}from"./modules/im-chat-kit/src/services/media-file-classification.js";import{classifyStickerImageType as $s}from"./modules/im-core/src/mapping/sticker-body.js";import{countUnreadConversations as _s,formatConversationUnreadBadge as sr}from"./modules/im-chat-kit/src/presentation/conversation-unread.js";import{createChatRuntime as rr}from"./modules/im-chat-kit/src/runtime/chat-runtime.js";import{createConversationPrefetchController as mr}from"./modules/im-chat-kit/src/runtime/conversation-prefetch-controller.js";import{createFaceToFaceGroupQrPayload as ir}from"./modules/im-sdk/src/product/face-to-face-group.js";import{createImClient as or}from"./modules/im-sdk/src/create-im-client.js";import{createImDiagnosticMemoryBuffer as er}from"./modules/im-sdk/src/product/diagnostic-memory-buffer.js";import{createImI18n as tr}from"./modules/im-i18n/src/create-im-i18n.js";import{createImResourceUploader as cr}from"./modules/im-sdk/src/product/resource-uploader.js";import{createImTextSearchMatcher as ar,extractSearchText as dr,getImTextSearchInitial as pr}from"./modules/im-core/src/mapping/search-text.js";import{createLinkMatcher as lr,hasLinkCandidate as ur,normalizeLinkHref as fr}from"./modules/im-chat-kit/src/utils/link.js";import{createNewMessageBadgeController as nr}from"./modules/im-chat-kit/src/thread/new-message-badge.js";import{createThreadItems as jr}from"./modules/im-chat-kit/src/thread/create-thread-items.js";import{createVoicePlayer as hr}from"./modules/im-browser/src/voice/voice-player.js";import{createVoiceRecordingSession as kr}from"./modules/im-browser/src/voice/voice-recorder.js";import{decideChannelMiniProgramRelOpen as vr}from"./modules/im-chat-kit/src/presentation/channel-mini-program-open.js";import{decideConversationAction as gr,decideMemberTargetAction as br,decideMessageAction as wr,sendBlockReasonForDecision as yr}from"./modules/im-chat-kit/src/services/capabilities.js";import{detectVoiceCapabilities as xr}from"./modules/im-browser/src/voice/voice-capabilities.js";import{fetchConversationFileBatch as Sr,fetchConversationImageBatch as qr,fetchConversationMessageBatch as Mr,fetchConversationVideoBatch as zr,fetchConversationVoiceBatch as Ar,fetchNextConversationSearchBatch as Br}from"./modules/im-chat-kit/src/services/search.service.js";import{formatChatDateSeparator as Cr,formatConversationDisplayTime as Dr,getLocalDayKey as Er,resolveDisplayTimestamp as Fr,resolveMessageTimelineTimestamp as Gr,shouldShowChatDateSeparator as Hr}from"./modules/im-chat-kit/src/utils/time-display.js";import{formatFailure as Ir}from"./modules/im-i18n/src/format/failure.js";import{formatFileSize as Jr,formatMediaDuration as Kr,getFileExtension as Lr}from"./modules/im-chat-kit/src/utils/media-format.js";import{formatLastMessageSummary as Nr}from"./modules/im-i18n/src/format/last-message.js";import{formatMediaPlaceholder as Or}from"./modules/im-i18n/src/format/media.js";import{formatMentionAll as Pr}from"./modules/im-i18n/src/format/mention.js";import{formatServiceText as Qr}from"./modules/im-i18n/src/format/service-text.js";import{formatSystemMessage as Rr}from"./modules/im-i18n/src/format/system-message.js";import*as Tr from"./modules/im-chat-kit/src/services/forward.service.js";import{getImTimeCatalog as Ur,registerImCatalogOverrides as Vr,resetImCatalogOverrides as Wr}from"./modules/im-i18n/src/catalog/index.js";import{highlightSegments as Xr}from"./modules/im-chat-kit/src/utils/highlight.js";import{isMessageLocateScrollProtected as Yr,isMessageTailChangeFromOlderWindowTrim as Zr,isMessageViewportMeasurable as $r,isMessageVisibleForNewMessageBadge as _r,loadOlderUntilBoundary as sm,refreshPrependMessageAnchorPosition as rm,resolveCenteredMessageScrollTop as mm,resolvePrependMessageAnchor as im,resolvePrependMessageAnchorAdjustment as om,resolvePrependMessageAnchorPosition as em,resolveSurvivingMessageAnchorAdjustment as tm,resolveVisibleMessageAnchorPositions as cm,shouldCompleteInitialViewport as am,shouldFillInitialHistoryViewport as dm,shouldFollowIncomingMessage as pm,shouldLoadNewerHistoryPage as lm,shouldPrefetchOlderHistory as um,shouldRestoreMessageViewportFocus as fm,shouldTrackRemoteMessageForBadge as nm}from"./modules/im-chat-kit/src/thread/viewport-rules.js";import{isMiniProgramShowTypeOpenable as jm,resolveMiniProgramFloatLinkUrl as hm,resolveMiniProgramOpenUrl as km}from"./modules/im-chat-kit/src/presentation/mini-program-open-url.js";import*as vm from"./modules/im-chat-kit/src/services/media.service.js";import*as gm from"./modules/im-chat-kit/src/services/message.service.js";import{migrateImCachePrefix as bm}from"./modules/im-sdk/src/cache-prefix-migration.js";import{normalizeMediaUploadCredentials as wm}from"./modules/im-browser/src/media/media-upload-credentials.js";import{parseSessionFavoriteAlbumItems as ym,resolveSessionFavoriteAlbumCaption as xm,resolveSessionFavoriteAlbumItemPreviewUrl as Sm}from"./modules/im-core/src/session-favorite-album.js";import{parseSessionFavoriteFileItems as qm}from"./modules/im-core/src/session-favorite-files.js";import*as Mm from"./modules/im-chat-kit/src/services/pinned-message.service.js";import*as zm from"./modules/im-chat-kit/src/services/profile.service.js";import*as Am from"./modules/im-chat-kit/src/services/read.service.js";import{resolveChannelAccess as Bm}from"./modules/im-core/src/state/channel-permissions.js";import{resolveConversationListPresentation as Cm}from"./modules/im-chat-kit/src/presentation/conversation-list.js";import{resolveImProfileAccessDestination as Dm}from"./modules/im-chat-kit/src/services/profile-access.service.js";import{resolveImThreadActiveDate as Em}from"./modules/im-chat-kit/src/thread/active-date.js";import{resolveMediaTransferPresentation as Fm}from"./modules/im-chat-kit/src/utils/media-transfer-presentation.js";import{resolveMessageBodyKind as Gm}from"./modules/im-chat-kit/src/thread/resolve-message-body-kind.js";import{resolveMessageNotificationDecision as Hm}from"./modules/im-chat-kit/src/presentation/message-notification.js";import{resolveMessageSearchPreview as Im}from"./modules/im-chat-kit/src/presentation/message-search.js";import{resolveQuotedMessagePresentation as Jm}from"./modules/im-chat-kit/src/thread/resolve-quoted-message-presentation.js";import{resolveTextSegments as Km}from"./modules/im-core/src/mapping/text-segments.js";import{sortSessions as Lm}from"./modules/im-core/src/state/session-sort.js";import{sumSessionsUnread as Nm}from"./modules/im-core/src/state/domain-state.js";import{voiceErrorCodeOf as Om}from"./modules/im-browser/src/voice/voice-errors.js";export{s as DEFAULT_EMOJI_ASSET_BASE,d as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,p as DEFAULT_LOADING_SHOW_DELAY_MS,u as DEFAULT_LOCALE,n as EDIT_WINDOW_MS,r as EMOJI_CATALOG,j as EMOJI_GAME_DICE_STABLE_KEY,h as EMOJI_GAME_RPS_STABLE_KEY,m as EMOJI_TOKEN_RE,g as IMAGE_MESSAGE_ACCEPT,w as IM_CHAT_FONT_SCALES,y as IM_DIAGNOSTIC_CATEGORIES,q as IM_EMOJI_CATALOG,z as ImPinnedMessageOperationError,A as MAX_BATCH_FILES,k as MAX_RECENT_EMOJI_COUNT,D as MEDIA_ALBUM_CAPTION_MAX_LENGTH,E as MEDIA_ALBUM_MAX_ITEMS,G as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,H as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,J as MINI_PROGRAM_LANG_NUMBERS,V as MediaTransferError,X as REACTION_SUPPORTED_CONTENT_TYPES,Z as SPIKE_STEP,rs as UNICODE_EMOJI_CATALOG,es as blockReasonForChannelSession,ts as blockReasonForChannelState,cs as blockReasonForGroupState,as as blockReasonForSession,ws as buildSessionFavoritePlainBody,xs as calculateMediaBox,qs as canCopyMessageImage,Bs as canEditMessage,Js as canPinChannelMessage,Ks as canPinGroupMessage,Ls as canPinMessage,Os as canPromoteMediaPresentationSource,Y as canReactToMessage,Cs as canRecallMessage,Qs as canTransmit,Rs as canTransmitByType,Ts as canTransmitContent,ds as cancelMediaUpload,Vs as captureRuntimeClientOperation,Ws as captureRuntimeOperation,K as channelMiniProgramRelKey,Xs as classifyGifFile,Ys as classifyMediaFile,$s as classifyStickerImageType,_s as countUnreadConversations,rr as createChatRuntime,mr as createConversationPrefetchController,l as createDelayedLoadingIndicator,i as createEmojiMatcher,ir as createFaceToFaceGroupQrPayload,or as createImClient,x as createImConsoleDiagnosticSink,er as createImDiagnosticMemoryBuffer,tr as createImI18n,cr as createImResourceUploader,ar as createImTextSearchMatcher,lr as createLinkMatcher,Ms as createMessageImageCopySource,nr as createNewMessageBadgeController,S as createSdkDiagnosticWriter,jr as createThreadItems,hr as createVoicePlayer,kr as createVoiceRecordingSession,L as csvIncludes,vr as decideChannelMiniProgramRelOpen,gr as decideConversationAction,br as decideMemberTargetAction,wr as decideMessageAction,xr as detectVoiceCapabilities,o as emojiAssetUrl,e as emojiUrlByCode,dr as extractSearchText,Sr as fetchConversationFileBatch,qr as fetchConversationImageBatch,Mr as fetchConversationMessageBatch,zr as fetchConversationVideoBatch,Ar as fetchConversationVoiceBatch,Br as fetchNextConversationSearchBatch,Cr as formatChatDateSeparator,Dr as formatConversationDisplayTime,sr as formatConversationUnreadBadge,Ir as formatFailure,Jr as formatFileSize,Nr as formatLastMessageSummary,Kr as formatMediaDuration,Or as formatMediaPlaceholder,Pr as formatMentionAll,Qr as formatServiceText,Rr as formatSystemMessage,Tr as forwardService,Lr as getFileExtension,pr as getImTextSearchInitial,Ur as getImTimeCatalog,Er as getLocalDayKey,zs as getMessageCopyImageUrl,As as getMessageCopyText,t as hasEmojiCandidate,ur as hasLinkCandidate,Xr as highlightSegments,Zs as isGifFile,Yr as isMessageLocateScrollProtected,Zr as isMessageTailChangeFromOlderWindowTrim,$r as isMessageViewportMeasurable,_r as isMessageVisibleForNewMessageBadge,jm as isMiniProgramShowTypeOpenable,Ns as isPinnedMessageProtected,b as isSupportedImageFile,ps as isVoiceStorageConfigured,sm as loadOlderUntilBoundary,B as mediaBatchBudgetBytes,vm as mediaService,W as mediaTransferErrorCodeOf,gm as messageService,bm as migrateImCachePrefix,f as normalizeImLocale,fr as normalizeLinkHref,wm as normalizeMediaUploadCredentials,ym as parseSessionFavoriteAlbumItems,qm as parseSessionFavoriteFileItems,ms as parseUnicodeEmojiCode,Mm as pinnedMessageService,$ as placeholderWaveform,v as prependRecentEmoji,zm as profileService,Am as readService,rm as refreshPrependMessageAnchorPosition,Vr as registerImCatalogOverrides,ls as replaceInterruptedMediaFile,us as requiresConversationEncryption,Us as requiresForwardTypeConfirmation,_ as resampleWaveform,Wr as resetImCatalogOverrides,Ps as resolveBestMediaPresentationSource,mm as resolveCenteredMessageScrollTop,Bm as resolveChannelAccess,Ds as resolveChannelMemberAvatarUrl,Es as resolveChannelMemberDisplayName,N as resolveChannelMiniProgramRelIcon,O as resolveChannelMiniProgramRelName,P as resolveChannelMiniProgramRelOpenSurface,Q as resolveChannelMiniProgramRelUrl,R as resolveChannelPinnedGameCopy,Cm as resolveConversationListPresentation,Fr as resolveDisplayTimestamp,c as resolveEmojiToken,Fs as resolveFriendDisplayName,M as resolveImEmojiToken,Dm as resolveImProfileAccessDestination,Em as resolveImThreadActiveDate,F as resolveMediaAlbumSendContentType,Ss as resolveMediaPresentation,Fm as resolveMediaTransferPresentation,Gs as resolveMemberDisplayName,Gm as resolveMessageBodyKind,Hm as resolveMessageNotificationDecision,Im as resolveMessageSearchPreview,Gr as resolveMessageTimelineTimestamp,hm as resolveMiniProgramFloatLinkUrl,I as resolveMiniProgramGamePreviewLayout,km as resolveMiniProgramOpenUrl,im as resolvePrependMessageAnchor,om as resolvePrependMessageAnchorAdjustment,em as resolvePrependMessageAnchorPosition,Hs as resolvePublicNickname,Jm as resolveQuotedMessagePresentation,Is as resolveSenderAvatarUrl,xm as resolveSessionFavoriteAlbumCaption,Sm as resolveSessionFavoriteAlbumItemPreviewUrl,ys as resolveSessionFavoriteKindFromMessage,a as resolveStandaloneEmojiMessage,tm as resolveSurvivingMessageAnchorAdjustment,Km as resolveTextSegments,is as resolveUnicodeEmoji,T as resolveVisibleChannelMiniProgramRels,cm as resolveVisibleMessageAnchorPositions,fs as retryMessage,C as runMediaSendBatch,ns as sendAsFilesBatch,yr as sendBlockReasonForDecision,js as sendMediaAlbum,hs as sendMediaFile,ks as sendMediaFilesBatch,vs as sendText,gs as sendVoice,am as shouldCompleteInitialViewport,dm as shouldFillInitialHistoryViewport,pm as shouldFollowIncomingMessage,lm as shouldLoadNewerHistoryPage,um as shouldPrefetchOlderHistory,fm as shouldRestoreMessageViewportFocus,Hr as shouldShowChatDateSeparator,nm as shouldTrackRemoteMessageForBadge,U as sortChannelMiniProgramFloatingItems,Lm as sortSessions,ss as spikeCountForDuration,Nm as sumSessionsUnread,bs as supportsConversationMention,os as unicodeEmojiTextFromCode,Om as voiceErrorCodeOf};
1
+ import{DEFAULT_EMOJI_ASSET_BASE as s,EMOJI_CATALOG as r,EMOJI_TOKEN_RE as m,createEmojiMatcher as i,emojiAssetUrl as o,emojiUrlByCode as e,hasEmojiCandidate as t,resolveEmojiToken as c,resolveStandaloneEmojiMessage as a}from"./modules/im-chat-kit/src/utils/emoji/index.js";import{DEFAULT_LOADING_MINIMUM_VISIBLE_MS as d,DEFAULT_LOADING_SHOW_DELAY_MS as p,createDelayedLoadingIndicator as l}from"./modules/im-chat-kit/src/presentation/delayed-loading-indicator.js";import{DEFAULT_LOCALE as u,normalizeImLocale as f}from"./modules/im-i18n/src/locale.js";import{EDIT_WINDOW_MS as n}from"./modules/im-core/src/message-flow/edit/edit-manager.js";import{EMOJI_GAME_DICE_STABLE_KEY as j,EMOJI_GAME_RPS_STABLE_KEY as h,MAX_RECENT_EMOJI_COUNT as k,prependRecentEmoji as v}from"./modules/im-chat-kit/src/utils/emoji/recent.js";import{IMAGE_MESSAGE_ACCEPT as g,isSupportedImageFile as b}from"./modules/im-sdk/src/product/image-format.js";import{IM_CHAT_FONT_SCALES as w}from"./modules/im-sdk/src/product/settings.js";import{IM_DIAGNOSTIC_CATEGORIES as y,createImConsoleDiagnosticSink as x,createSdkDiagnosticWriter as S}from"./modules/im-sdk/src/product/diagnostics.js";import{IM_EMOJI_CATALOG as q,resolveImEmojiToken as M}from"./modules/im-sdk/src/product/emoji-catalog.js";import{ImPinnedMessageOperationError as z}from"./modules/im-sdk/src/domains/pinned-message.js";import{MAX_BATCH_FILES as A,mediaBatchBudgetBytes as B,runMediaSendBatch as C}from"./modules/im-chat-kit/src/utils/media-batch.js";import{MEDIA_ALBUM_CAPTION_MAX_LENGTH as D,MEDIA_ALBUM_MAX_ITEMS as E,resolveMediaAlbumSendContentType as F}from"./modules/im-core/src/mapping/media-album-body.js";import{MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT as G,MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH as H,resolveMiniProgramGamePreviewLayout as I}from"./modules/im-chat-kit/src/presentation/mini-program-game-preview.js";import{MINI_PROGRAM_LANG_NUMBERS as J,channelMiniProgramRelKey as K,csvIncludes as L,resolveChannelMiniProgramRelIcon as N,resolveChannelMiniProgramRelName as O,resolveChannelMiniProgramRelOpenSurface as P,resolveChannelMiniProgramRelUrl as Q,resolveChannelPinnedGameCopy as R,resolveVisibleChannelMiniProgramRels as T,sortChannelMiniProgramFloatingItems as U}from"./modules/im-chat-kit/src/presentation/channel-mini-program-rels.js";import{MediaTransferError as V,mediaTransferErrorCodeOf as W}from"./modules/im-browser/src/media/media-transfer-errors.js";import{REACTION_SUPPORTED_CONTENT_TYPES as X,canReactToMessage as Y}from"./modules/im-core/src/message-flow/reaction/can-react.js";import{SPIKE_STEP as Z,placeholderWaveform as $,resampleWaveform as _,spikeCountForDuration as ss}from"./modules/im-chat-kit/src/utils/waveform.js";import{UNICODE_EMOJI_CATALOG as rs,parseUnicodeEmojiCode as ms,resolveUnicodeEmoji as is,unicodeEmojiTextFromCode as os}from"./modules/im-chat-kit/src/utils/emoji/unicode.js";import{blockReasonForChannelSession as es,blockReasonForChannelState as ts}from"./modules/im-chat-kit/src/services/channel-send-restriction.js";import{blockReasonForGroupState as cs,blockReasonForSession as as,cancelMediaUpload as ds,isVoiceStorageConfigured as ps,replaceInterruptedMediaFile as ls,requiresConversationEncryption as us,retryMessage as fs,sendAsFilesBatch as ns,sendMediaAlbum as js,sendMediaFile as hs,sendMediaFilesBatch as ks,sendText as vs,sendVoice as gs,supportsConversationMention as bs}from"./modules/im-chat-kit/src/services/send.service.js";import{buildSessionFavoritePlainBody as ws,resolveSessionFavoriteKindFromMessage as ys}from"./modules/im-sdk/src/product/session-favorites.js";import{calculateMediaBox as xs,resolveMediaPresentation as Ss}from"./modules/im-chat-kit/src/utils/media-dimensions.js";import{canCopyMessageImage as qs,createMessageImageCopySource as Ms,getMessageCopyImageUrl as zs,getMessageCopyText as As}from"./modules/im-chat-kit/src/services/image-copy.service.js";import{canEditMessage as Bs,canRecallMessage as Cs,resolveChannelMemberAvatarUrl as Ds,resolveChannelMemberDisplayName as Es,resolveFriendDisplayName as Fs,resolveMemberDisplayName as Gs,resolvePublicNickname as Hs,resolveSenderAvatarUrl as Is}from"./modules/im-chat-kit/src/services/profile-display.js";import{canPinChannelMessage as Js,canPinGroupMessage as Ks,canPinMessage as Ls,isPinnedMessageProtected as Ns}from"./modules/im-chat-kit/src/services/pinned-message-rules.js";import{canPromoteMediaPresentationSource as Os,resolveBestMediaPresentationSource as Ps}from"./modules/im-chat-kit/src/presentation/media-source-priority.js";import{canTransmit as Qs,canTransmitByType as Rs,canTransmitContent as Ts,requiresForwardTypeConfirmation as Us}from"./modules/im-core/src/message-flow/forward/can-transmit.js";import{captureRuntimeClientOperation as Vs,captureRuntimeOperation as Ws}from"./modules/im-chat-kit/src/runtime/runtime-operation.js";import{classifyGifFile as Xs,classifyMediaFile as Ys,isGifFile as Zs}from"./modules/im-chat-kit/src/services/media-file-classification.js";import{classifyStickerImageType as $s}from"./modules/im-core/src/mapping/sticker-body.js";import{countUnreadConversations as _s,formatConversationUnreadBadge as sr}from"./modules/im-chat-kit/src/presentation/conversation-unread.js";import{createChatRuntime as rr}from"./modules/im-chat-kit/src/runtime/chat-runtime.js";import{createConversationPrefetchController as mr}from"./modules/im-chat-kit/src/runtime/conversation-prefetch-controller.js";import{createFaceToFaceGroupQrPayload as ir}from"./modules/im-sdk/src/product/face-to-face-group.js";import{createImClient as or}from"./modules/im-sdk/src/create-im-client.js";import{createImDiagnosticMemoryBuffer as er}from"./modules/im-sdk/src/product/diagnostic-memory-buffer.js";import{createImI18n as tr}from"./modules/im-i18n/src/create-im-i18n.js";import{createImResourceUploader as cr}from"./modules/im-sdk/src/product/resource-uploader.js";import{createImTextSearchMatcher as ar,extractSearchText as dr,getImTextSearchInitial as pr}from"./modules/im-core/src/mapping/search-text.js";import{createLinkMatcher as lr,hasLinkCandidate as ur,normalizeLinkHref as fr}from"./modules/im-chat-kit/src/utils/link.js";import{createNewMessageBadgeController as nr}from"./modules/im-chat-kit/src/thread/new-message-badge.js";import{createThreadItems as jr}from"./modules/im-chat-kit/src/thread/create-thread-items.js";import{createVoicePlayer as hr}from"./modules/im-browser/src/voice/voice-player.js";import{createVoiceRecordingSession as kr}from"./modules/im-browser/src/voice/voice-recorder.js";import{decideChannelMiniProgramRelOpen as vr}from"./modules/im-chat-kit/src/presentation/channel-mini-program-open.js";import{decideConversationAction as gr,decideMemberTargetAction as br,decideMessageAction as wr,sendBlockReasonForDecision as yr}from"./modules/im-chat-kit/src/services/capabilities.js";import{detectVoiceCapabilities as xr}from"./modules/im-browser/src/voice/voice-capabilities.js";import{fetchConversationFileBatch as Sr,fetchConversationImageBatch as qr,fetchConversationMessageBatch as Mr,fetchConversationVideoBatch as zr,fetchConversationVoiceBatch as Ar,fetchNextConversationSearchBatch as Br}from"./modules/im-chat-kit/src/services/search.service.js";import{formatChatDateSeparator as Cr,formatConversationDisplayTime as Dr,getLocalDayKey as Er,resolveDisplayTimestamp as Fr,resolveMessageTimelineTimestamp as Gr,shouldShowChatDateSeparator as Hr}from"./modules/im-chat-kit/src/utils/time-display.js";import{formatFailure as Ir}from"./modules/im-i18n/src/format/failure.js";import{formatFileSize as Jr,formatMediaDuration as Kr,getFileExtension as Lr}from"./modules/im-chat-kit/src/utils/media-format.js";import{formatLastMessageSummary as Nr}from"./modules/im-i18n/src/format/last-message.js";import{formatMediaPlaceholder as Or}from"./modules/im-i18n/src/format/media.js";import{formatMentionAll as Pr}from"./modules/im-i18n/src/format/mention.js";import{formatServiceText as Qr}from"./modules/im-i18n/src/format/service-text.js";import{formatSystemMessage as Rr}from"./modules/im-i18n/src/format/system-message.js";import*as Tr from"./modules/im-chat-kit/src/services/forward.service.js";import{getImTimeCatalog as Ur,registerImCatalogOverrides as Vr,resetImCatalogOverrides as Wr}from"./modules/im-i18n/src/catalog/index.js";import{highlightSegments as Xr}from"./modules/im-chat-kit/src/utils/highlight.js";import{isMessageLocateScrollProtected as Yr,isMessageTailChangeFromOlderWindowTrim as Zr,isMessageViewportMeasurable as $r,isMessageVisibleForNewMessageBadge as _r,loadOlderUntilBoundary as sm,refreshPrependMessageAnchorPosition as rm,resolveCenteredMessageScrollTop as mm,resolvePrependMessageAnchor as im,resolvePrependMessageAnchorAdjustment as om,resolvePrependMessageAnchorPosition as em,resolveSurvivingMessageAnchorAdjustment as tm,resolveVisibleMessageAnchorPositions as cm,shouldCompleteInitialViewport as am,shouldFillInitialHistoryViewport as dm,shouldFollowIncomingMessage as pm,shouldLoadNewerHistoryPage as lm,shouldPrefetchOlderHistory as um,shouldRestoreMessageViewportFocus as fm,shouldTrackRemoteMessageForBadge as nm}from"./modules/im-chat-kit/src/thread/viewport-rules.js";import{isMiniProgramShowTypeOpenable as jm,resolveMiniProgramFloatLinkUrl as hm,resolveMiniProgramOpenUrl as km}from"./modules/im-chat-kit/src/presentation/mini-program-open-url.js";import*as vm from"./modules/im-chat-kit/src/services/media.service.js";import*as gm from"./modules/im-chat-kit/src/services/message.service.js";import{migrateImCachePrefix as bm}from"./modules/im-sdk/src/cache-prefix-migration.js";import{normalizeMediaUploadCredentials as wm}from"./modules/im-browser/src/media/media-upload-credentials.js";import{parseSessionFavoriteAlbumItems as ym,resolveSessionFavoriteAlbumCaption as xm,resolveSessionFavoriteAlbumItemPreviewUrl as Sm}from"./modules/im-core/src/session-favorite-album.js";import{parseSessionFavoriteFileItems as qm}from"./modules/im-core/src/session-favorite-files.js";import*as Mm from"./modules/im-chat-kit/src/services/pinned-message.service.js";import*as zm from"./modules/im-chat-kit/src/services/profile.service.js";import*as Am from"./modules/im-chat-kit/src/services/read.service.js";import{resolveChannelAccess as Bm}from"./modules/im-core/src/state/channel-permissions.js";import{resolveConversationListPresentation as Cm}from"./modules/im-chat-kit/src/presentation/conversation-list.js";import{resolveImProfileAccessDestination as Dm}from"./modules/im-chat-kit/src/services/profile-access.service.js";import{resolveImThreadActiveDate as Em}from"./modules/im-chat-kit/src/thread/active-date.js";import{resolveMediaThumbnailMimeType as Fm}from"./modules/im-core/src/media-thumbnail.js";import{resolveMediaTransferPresentation as Gm}from"./modules/im-chat-kit/src/utils/media-transfer-presentation.js";import{resolveMessageBodyKind as Hm}from"./modules/im-chat-kit/src/thread/resolve-message-body-kind.js";import{resolveMessageNotificationDecision as Im}from"./modules/im-chat-kit/src/presentation/message-notification.js";import{resolveMessageSearchPreview as Jm}from"./modules/im-chat-kit/src/presentation/message-search.js";import{resolveQuotedMessagePresentation as Km}from"./modules/im-chat-kit/src/thread/resolve-quoted-message-presentation.js";import{resolveTextSegments as Lm}from"./modules/im-core/src/mapping/text-segments.js";import{sortSessions as Nm}from"./modules/im-core/src/state/session-sort.js";import{sumSessionsUnread as Om}from"./modules/im-core/src/state/domain-state.js";import{voiceErrorCodeOf as Pm}from"./modules/im-browser/src/voice/voice-errors.js";export{s as DEFAULT_EMOJI_ASSET_BASE,d as DEFAULT_LOADING_MINIMUM_VISIBLE_MS,p as DEFAULT_LOADING_SHOW_DELAY_MS,u as DEFAULT_LOCALE,n as EDIT_WINDOW_MS,r as EMOJI_CATALOG,j as EMOJI_GAME_DICE_STABLE_KEY,h as EMOJI_GAME_RPS_STABLE_KEY,m as EMOJI_TOKEN_RE,g as IMAGE_MESSAGE_ACCEPT,w as IM_CHAT_FONT_SCALES,y as IM_DIAGNOSTIC_CATEGORIES,q as IM_EMOJI_CATALOG,z as ImPinnedMessageOperationError,A as MAX_BATCH_FILES,k as MAX_RECENT_EMOJI_COUNT,D as MEDIA_ALBUM_CAPTION_MAX_LENGTH,E as MEDIA_ALBUM_MAX_ITEMS,G as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_HEIGHT,H as MINI_PROGRAM_GAME_PREVIEW_FALLBACK_WIDTH,J as MINI_PROGRAM_LANG_NUMBERS,V as MediaTransferError,X as REACTION_SUPPORTED_CONTENT_TYPES,Z as SPIKE_STEP,rs as UNICODE_EMOJI_CATALOG,es as blockReasonForChannelSession,ts as blockReasonForChannelState,cs as blockReasonForGroupState,as as blockReasonForSession,ws as buildSessionFavoritePlainBody,xs as calculateMediaBox,qs as canCopyMessageImage,Bs as canEditMessage,Js as canPinChannelMessage,Ks as canPinGroupMessage,Ls as canPinMessage,Os as canPromoteMediaPresentationSource,Y as canReactToMessage,Cs as canRecallMessage,Qs as canTransmit,Rs as canTransmitByType,Ts as canTransmitContent,ds as cancelMediaUpload,Vs as captureRuntimeClientOperation,Ws as captureRuntimeOperation,K as channelMiniProgramRelKey,Xs as classifyGifFile,Ys as classifyMediaFile,$s as classifyStickerImageType,_s as countUnreadConversations,rr as createChatRuntime,mr as createConversationPrefetchController,l as createDelayedLoadingIndicator,i as createEmojiMatcher,ir as createFaceToFaceGroupQrPayload,or as createImClient,x as createImConsoleDiagnosticSink,er as createImDiagnosticMemoryBuffer,tr as createImI18n,cr as createImResourceUploader,ar as createImTextSearchMatcher,lr as createLinkMatcher,Ms as createMessageImageCopySource,nr as createNewMessageBadgeController,S as createSdkDiagnosticWriter,jr as createThreadItems,hr as createVoicePlayer,kr as createVoiceRecordingSession,L as csvIncludes,vr as decideChannelMiniProgramRelOpen,gr as decideConversationAction,br as decideMemberTargetAction,wr as decideMessageAction,xr as detectVoiceCapabilities,o as emojiAssetUrl,e as emojiUrlByCode,dr as extractSearchText,Sr as fetchConversationFileBatch,qr as fetchConversationImageBatch,Mr as fetchConversationMessageBatch,zr as fetchConversationVideoBatch,Ar as fetchConversationVoiceBatch,Br as fetchNextConversationSearchBatch,Cr as formatChatDateSeparator,Dr as formatConversationDisplayTime,sr as formatConversationUnreadBadge,Ir as formatFailure,Jr as formatFileSize,Nr as formatLastMessageSummary,Kr as formatMediaDuration,Or as formatMediaPlaceholder,Pr as formatMentionAll,Qr as formatServiceText,Rr as formatSystemMessage,Tr as forwardService,Lr as getFileExtension,pr as getImTextSearchInitial,Ur as getImTimeCatalog,Er as getLocalDayKey,zs as getMessageCopyImageUrl,As as getMessageCopyText,t as hasEmojiCandidate,ur as hasLinkCandidate,Xr as highlightSegments,Zs as isGifFile,Yr as isMessageLocateScrollProtected,Zr as isMessageTailChangeFromOlderWindowTrim,$r as isMessageViewportMeasurable,_r as isMessageVisibleForNewMessageBadge,jm as isMiniProgramShowTypeOpenable,Ns as isPinnedMessageProtected,b as isSupportedImageFile,ps as isVoiceStorageConfigured,sm as loadOlderUntilBoundary,B as mediaBatchBudgetBytes,vm as mediaService,W as mediaTransferErrorCodeOf,gm as messageService,bm as migrateImCachePrefix,f as normalizeImLocale,fr as normalizeLinkHref,wm as normalizeMediaUploadCredentials,ym as parseSessionFavoriteAlbumItems,qm as parseSessionFavoriteFileItems,ms as parseUnicodeEmojiCode,Mm as pinnedMessageService,$ as placeholderWaveform,v as prependRecentEmoji,zm as profileService,Am as readService,rm as refreshPrependMessageAnchorPosition,Vr as registerImCatalogOverrides,ls as replaceInterruptedMediaFile,us as requiresConversationEncryption,Us as requiresForwardTypeConfirmation,_ as resampleWaveform,Wr as resetImCatalogOverrides,Ps as resolveBestMediaPresentationSource,mm as resolveCenteredMessageScrollTop,Bm as resolveChannelAccess,Ds as resolveChannelMemberAvatarUrl,Es as resolveChannelMemberDisplayName,N as resolveChannelMiniProgramRelIcon,O as resolveChannelMiniProgramRelName,P as resolveChannelMiniProgramRelOpenSurface,Q as resolveChannelMiniProgramRelUrl,R as resolveChannelPinnedGameCopy,Cm as resolveConversationListPresentation,Fr as resolveDisplayTimestamp,c as resolveEmojiToken,Fs as resolveFriendDisplayName,M as resolveImEmojiToken,Dm as resolveImProfileAccessDestination,Em as resolveImThreadActiveDate,F as resolveMediaAlbumSendContentType,Ss as resolveMediaPresentation,Fm as resolveMediaThumbnailMimeType,Gm as resolveMediaTransferPresentation,Gs as resolveMemberDisplayName,Hm as resolveMessageBodyKind,Im as resolveMessageNotificationDecision,Jm as resolveMessageSearchPreview,Gr as resolveMessageTimelineTimestamp,hm as resolveMiniProgramFloatLinkUrl,I as resolveMiniProgramGamePreviewLayout,km as resolveMiniProgramOpenUrl,im as resolvePrependMessageAnchor,om as resolvePrependMessageAnchorAdjustment,em as resolvePrependMessageAnchorPosition,Hs as resolvePublicNickname,Km as resolveQuotedMessagePresentation,Is as resolveSenderAvatarUrl,xm as resolveSessionFavoriteAlbumCaption,Sm as resolveSessionFavoriteAlbumItemPreviewUrl,ys as resolveSessionFavoriteKindFromMessage,a as resolveStandaloneEmojiMessage,tm as resolveSurvivingMessageAnchorAdjustment,Lm as resolveTextSegments,is as resolveUnicodeEmoji,T as resolveVisibleChannelMiniProgramRels,cm as resolveVisibleMessageAnchorPositions,fs as retryMessage,C as runMediaSendBatch,ns as sendAsFilesBatch,yr as sendBlockReasonForDecision,js as sendMediaAlbum,hs as sendMediaFile,ks as sendMediaFilesBatch,vs as sendText,gs as sendVoice,am as shouldCompleteInitialViewport,dm as shouldFillInitialHistoryViewport,pm as shouldFollowIncomingMessage,lm as shouldLoadNewerHistoryPage,um as shouldPrefetchOlderHistory,fm as shouldRestoreMessageViewportFocus,Hr as shouldShowChatDateSeparator,nm as shouldTrackRemoteMessageForBadge,U as sortChannelMiniProgramFloatingItems,Nm as sortSessions,ss as spikeCountForDuration,Om as sumSessionsUnread,bs as supportsConversationMention,os as unicodeEmojiTextFromCode,Pm as voiceErrorCodeOf};
@@ -1 +1 @@
1
- import{fileMd5 as e}from"./file-md5.js";const i="image/jpeg";function t(e,i){return""!==e.type||void 0===i||""===i?e:new Blob([e],{type:i})}function a(a){let r=0;return{fileMd5:e,async imageDimensions(e,i,o){const n=await a.prepare({operationId:"core-image-dimensions-"+ ++r,generation:0,kind:"image",file:t(e,i),includePoster:!1},o);return{width:n.width,height:n.height}},async imageThumbnail(e,o,n){const m=await a.prepare({operationId:"core-image-thumbnail-"+ ++r,generation:0,kind:"image",file:t(e,o?.mimeType),...void 0===o?.maxSize?{}:{maxSize:o.maxSize},...void 0===o?.targetBytes?{}:{targetBytes:o.targetBytes},...void 0===o?.maxBytes?{}:{maxBytes:o.maxBytes},...void 0===o?.quality?{}:{quality:o.quality},...void 0===o?.minQuality?{}:{minQuality:o.minQuality}},n);if(void 0===m.posterData)throw new Error("图片缩略图生成失败:执行器未返回 poster");return{data:new Uint8Array(m.posterData),width:m.width,height:m.height,mimeType:i}},async videoPoster(e,o,n){const m=await a.prepare({operationId:"core-video-poster-"+ ++r,generation:0,kind:"video",file:t(e,o?.mimeType),...void 0===o?.maxSize?{}:{maxSize:o.maxSize},...void 0===o?.targetBytes?{}:{targetBytes:o.targetBytes},...void 0===o?.maxBytes?{}:{maxBytes:o.maxBytes},...void 0===o?.quality?{}:{quality:o.quality},...void 0===o?.minQuality?{}:{minQuality:o.minQuality},...void 0===o?.atTime?{}:{atTime:o.atTime}},n);if(void 0===m.posterData)throw new Error("视频封面生成失败:执行器未返回 poster");return{data:new Uint8Array(m.posterData),width:m.width,height:m.height,duration:Math.round(m.duration??0),mimeType:i}}}}export{a as createMediaPreviewAdapter};
1
+ import{fileMd5 as t}from"./file-md5.js";import{resolveMediaThumbnailMimeType as e}from"../../../im-core/src/media-thumbnail.js";function i(t,e){return""!==t.type||void 0===e||""===e?t:new Blob([t],{type:e})}function a(a){let r=0;return{fileMd5:t,async imageDimensions(t,e,o){const n=await a.prepare({operationId:"core-image-dimensions-"+ ++r,generation:0,kind:"image",file:i(t,e),includePoster:!1},o);return{width:n.width,height:n.height}},async imageThumbnail(t,o,n){const m=await a.prepare({operationId:"core-image-thumbnail-"+ ++r,generation:0,kind:"image",file:i(t,o?.mimeType),...void 0===o?.maxSize?{}:{maxSize:o.maxSize},...void 0===o?.targetBytes?{}:{targetBytes:o.targetBytes},...void 0===o?.maxBytes?{}:{maxBytes:o.maxBytes},...void 0===o?.quality?{}:{quality:o.quality},...void 0===o?.minQuality?{}:{minQuality:o.minQuality}},n);if(void 0===m.posterData)throw new Error("图片缩略图生成失败:执行器未返回 poster");return{data:new Uint8Array(m.posterData),width:m.width,height:m.height,mimeType:e(new Uint8Array(m.posterData))}},async videoPoster(t,o,n){const m=await a.prepare({operationId:"core-video-poster-"+ ++r,generation:0,kind:"video",file:i(t,o?.mimeType),...void 0===o?.maxSize?{}:{maxSize:o.maxSize},...void 0===o?.targetBytes?{}:{targetBytes:o.targetBytes},...void 0===o?.maxBytes?{}:{maxBytes:o.maxBytes},...void 0===o?.quality?{}:{quality:o.quality},...void 0===o?.minQuality?{}:{minQuality:o.minQuality},...void 0===o?.atTime?{}:{atTime:o.atTime}},n);if(void 0===m.posterData)throw new Error("视频封面生成失败:执行器未返回 poster");return{data:new Uint8Array(m.posterData),width:m.width,height:m.height,duration:Math.round(m.duration??0),mimeType:e(new Uint8Array(m.posterData))}}}}export{a as createMediaPreviewAdapter};
@@ -1 +1 @@
1
- import{readImageDimensionsFromHeader as t}from"./image-header-dimensions.js";function e(t){const e={active:0,disposed:!1},r=[];function i(){for(;!e.disposed&&e.active<t&&r.length>0;){const t=r.shift();if(t.signal?.aborted){t.reject(new DOMException("媒体预览准备已取消","AbortError"));continue}void 0!==t.onAbort&&t.signal?.removeEventListener("abort",t.onAbort),e.active+=1;let o=!1;t.resolve(()=>{o||(o=!0,e.active-=1,i())})}}return{acquire:t=>e.disposed?Promise.reject(new Error("媒体预览执行器已释放")):new Promise((e,o)=>{const a={resolve:e,reject:o,...void 0===t?{}:{signal:t}};void 0!==t&&(a.onAbort=()=>{const t=r.indexOf(a);t>=0&&r.splice(t,1),o(new DOMException("媒体预览准备已取消","AbortError"))},t.addEventListener("abort",a.onAbort,{once:!0})),r.push(a),i()}),dispose(){e.disposed=!0;for(const t of r.splice(0))void 0!==t.onAbort&&t.signal?.removeEventListener("abort",t.onAbort),t.reject(new Error("媒体预览执行器已释放"))}}}function r(t){if(t?.aborted)throw new DOMException("媒体预览准备已取消","AbortError")}const i=16777216;function o(t,e,r){const o=Math.min(1,r/Math.max(t,e));return function(t,e){const r=Math.min(1,4096/Math.max(t,e));let o=Math.max(1,Math.round(t*r)),a=Math.max(1,Math.round(e*r));const n=o*a;if(n>i){const t=Math.sqrt(i/n);o=Math.max(1,Math.floor(o*t)),a=Math.max(1,Math.floor(a*t))}return{width:o,height:a}}(Math.max(1,Math.round(t*o)),Math.max(1,Math.round(e*o)))}async function a(t,e,i){r(i);const o=await new Promise(r=>t.toBlob(r,"image/jpeg",e));if(r(i),null===o)throw new Error("媒体预览准备失败:Canvas 编码返回空结果");return await o.arrayBuffer()}function n(t,e){if(!Number.isInteger(t)||t<=0)throw new RangeError(`${e}必须是正整数`)}function s(t,e){if(!Number.isFinite(t)||t<=0||t>1)throw new RangeError(`${e}必须大于 0 且不超过 1`)}async function d(t,e,i,d,h){const c="video"===d.kind,u=c?"视频封面":"图片缩略图",l=d.maxSize??320,f=d.targetBytes??(c?10240:12288),m=d.maxBytes??(c?16384:20480),w=d.quality??(c?.84:.9),g=d.minQuality??(c?.68:.72);if(n(l,`${u}最大边长`),n(f,`${u}目标字节数`),n(m,`${u}最大字节数`),s(w,`${u}初始质量`),s(g,`${u}最低质量`),f>m)throw new RangeError(`${u}目标字节数不能超过最大字节数`);if(g>w)throw new RangeError(`${u}最低质量不能高于初始质量`);r(h);const v=document.createElement("canvas");try{const n=v.getContext("2d");if(null===n)throw new Error("媒体预览准备失败:无法创建 Canvas 2D 上下文");const s=e=>{r(h),v.width=e.width,v.height=e.height,n.drawImage(t,0,0,e.width,e.height)};let d=o(e,i,l);s(d);const c=Math.min(200,Math.max(d.width,d.height));let y;const b=[.../* @__PURE__ */new Set([w,Math.max(g,w-.12),g])];for(const t of b){const e=await a(v,t,h);if((void 0===y||e.byteLength<y.byteLength)&&(y=e),e.byteLength<=f)return e}const E=Math.max(d.width,d.height);if(E>c&&void 0!==y){const t=Math.sqrt(f/y.byteLength);d=o(e,i,Math.max(c,Math.floor(E*Math.min(.9,Math.max(.5,t))))),s(d);for(const t of[w,g]){const e=await a(v,t,h);if(e.byteLength<y.byteLength&&(y=e),e.byteLength<=f)return e}}if(void 0!==y&&y.byteLength<=m)return y;throw new Error(`${u}生成失败:编码结果超过 ${m} 字节硬上限`)}finally{v.width=0,v.height=0}}function h(t,e,i,o){return r(i),new Promise((r,a)=>{let n,s,d,h;const c=()=>{void 0!==n&&clearTimeout(n),t.removeEventListener(e,s),t.removeEventListener("error",d),i?.removeEventListener("abort",h)};s=()=>{("seeked"===e?!t.seeking:t.readyState>=("loadedmetadata"===e?1:2))&&(c(),r())},d=()=>{c(),a(new Error(`视频预览准备失败:${e} 前解码错误`))},h=()=>{c(),a(new DOMException("媒体预览准备已取消","AbortError"))},n=setTimeout(()=>{c(),a(new Error(`视频预览准备失败:${e} 超时`))},15e3),t.addEventListener(e,s),t.addEventListener("error",d,{once:!0}),i?.addEventListener("abort",h,{once:!0});try{o?.(),i?.aborted?h():null!==t.error?d():s()}catch(t){c(),a(t)}})}function c(i={}){const a=i.maxConcurrency??function(){if("undefined"==typeof navigator)return 2;const t=navigator.userAgent;if(/iPad|iPhone|iPod/.test(t)||/Macintosh/.test(t)&&(navigator.maxTouchPoints??0)>1)return 1;const e=navigator.deviceMemory;return void 0!==e&&e<=2?1:2}();if(!Number.isInteger(a)||a<1||a>4)throw new RangeError("媒体预览并发数必须是 1-4 的整数");const n=e(a),s=e(1);let c=!1;return{async prepare(e,i){if(c)throw new Error("媒体预览执行器已释放");const a="video"===e.kind,u=await(a?s:n).acquire(i);try{return a?await async function(t,e){const r=URL.createObjectURL(t.file),i=document.createElement("video");i.muted=!0,i.preload="metadata",i.playsInline=!0;try{await h(i,"loadedmetadata",e,()=>{i.src=r,i.load()});const o=i.videoWidth,a=i.videoHeight;if(o<=0||a<=0)throw new Error("视频预览准备失败:视频尺寸无效");const n=Number.isFinite(i.duration)&&i.duration>0?i.duration:void 0,s=void 0===t.atTime?void 0===n?0:Math.min(1,n/2):Math.max(0,Math.min(t.atTime,n??t.atTime));s>0&&await h(i,"seeked",e,()=>{i.currentTime=s}),await h(i,"loadeddata",e,()=>{i.preload="auto"});const c=void 0===n?void 0:n;let u,l;try{u=await d(i,o,a,t,e)}catch(t){if(e?.aborted||t instanceof RangeError)throw t}if(t.includeDisplayPoster)try{l=await d(i,o,a,{...t,maxSize:960,targetBytes:163840,maxBytes:262144,quality:.9,minQuality:.8},e)}catch(t){if(e?.aborted||t instanceof RangeError)throw t}return{width:o,height:a,...void 0===c?{}:{duration:c},...void 0===u?{}:{posterData:u},...void 0===l?{}:{displayPosterData:l}}}finally{i.pause(),i.removeAttribute("src"),i.load(),URL.revokeObjectURL(r)}}(e,i):await async function(e,i){r(i);const a=e.maxSize??320,n=e.maxBytes??20480,s=await t(e.file);function h(t,r){return"image/jpeg"===e.file.type&&e.file.size<=n&&Math.max(t,r)<=a}if(r(i),void 0!==s){if(!1===e.includePoster)return s;if(h(s.width,s.height))return{...s,posterData:await e.file.arrayBuffer()}}const c=void 0===s?void 0:o(s.width,s.height,a);let u;try{u=void 0===c?await createImageBitmap(e.file):await createImageBitmap(e.file,{resizeWidth:c.width,resizeHeight:c.height,resizeQuality:"high"})}catch(t){if(i?.aborted)throw t}if(void 0!==u)try{r(i);const t=s??{width:u.width,height:u.height};return!1===e.includePoster?t:void 0===s&&h(u.width,u.height)?{...t,posterData:await e.file.arrayBuffer()}:{...t,posterData:await d(u,u.width,u.height,e,i)}}finally{u.close()}const l=URL.createObjectURL(e.file),f=new Image;try{await new Promise((t,e)=>{let r,o;const a=()=>{void 0!==r&&clearTimeout(r),f.onload=null,f.onerror=null,i?.removeEventListener("abort",o)};o=()=>{a(),e(new DOMException("媒体预览准备已取消","AbortError"))},f.onload=()=>{a(),t()},f.onerror=()=>{a(),e(new Error("图片预览准备失败:Image 解码错误"))},r=setTimeout(()=>{a(),e(new Error("图片预览准备失败:Image 解码超时"))},15e3),i?.addEventListener("abort",o,{once:!0}),f.src=l});const t=s??{width:f.naturalWidth,height:f.naturalHeight};return!1===e.includePoster?t:h(f.naturalWidth,f.naturalHeight)?{...t,posterData:await e.file.arrayBuffer()}:{...t,posterData:await d(f,f.naturalWidth,f.naturalHeight,e,i)}}finally{f.removeAttribute("src"),URL.revokeObjectURL(l)}}(e,i)}finally{u()}},dispose(){c||(c=!0,n.dispose(),s.dispose())}}}export{c as createMediaPreviewPreparationExecutor};
1
+ import{readImageDimensionsFromHeader as t}from"./image-header-dimensions.js";function e(t){const e={active:0,disposed:!1},r=[];function i(){for(;!e.disposed&&e.active<t&&r.length>0;){const t=r.shift();if(t.signal?.aborted){t.reject(new DOMException("媒体预览准备已取消","AbortError"));continue}void 0!==t.onAbort&&t.signal?.removeEventListener("abort",t.onAbort),e.active+=1;let a=!1;t.resolve(()=>{a||(a=!0,e.active-=1,i())})}}return{acquire:t=>e.disposed?Promise.reject(new Error("媒体预览执行器已释放")):new Promise((e,a)=>{const o={resolve:e,reject:a,...void 0===t?{}:{signal:t}};void 0!==t&&(o.onAbort=()=>{const t=r.indexOf(o);t>=0&&r.splice(t,1),a(new DOMException("媒体预览准备已取消","AbortError"))},t.addEventListener("abort",o.onAbort,{once:!0})),r.push(o),i()}),dispose(){e.disposed=!0;for(const t of r.splice(0))void 0!==t.onAbort&&t.signal?.removeEventListener("abort",t.onAbort),t.reject(new Error("媒体预览执行器已释放"))}}}function r(t){if(t?.aborted)throw new DOMException("媒体预览准备已取消","AbortError")}const i=16777216;function a(t,e,r){const a=Math.min(1,r/Math.max(t,e));return function(t,e){const r=Math.min(1,4096/Math.max(t,e));let a=Math.max(1,Math.round(t*r)),o=Math.max(1,Math.round(e*r));const n=a*o;if(n>i){const t=Math.sqrt(i/n);a=Math.max(1,Math.floor(a*t)),o=Math.max(1,Math.floor(o*t))}return{width:a,height:o}}(Math.max(1,Math.round(t*a)),Math.max(1,Math.round(e*a)))}async function o(t,e){r(e);const i=await new Promise(e=>t.toBlob(e,"image/png"));if(r(e),null===i)throw new Error("媒体预览准备失败:Canvas 编码返回空结果");return await i.arrayBuffer()}async function n(t,e,i){r(i);const a=await new Promise(r=>t.toBlob(r,"image/jpeg",e));if(r(i),null===a)throw new Error("媒体预览准备失败:Canvas 编码返回空结果");return await a.arrayBuffer()}function s(t,e){if(!Number.isInteger(t)||t<=0)throw new RangeError(`${e}必须是正整数`)}function h(t,e){if(!Number.isFinite(t)||t<=0||t>1)throw new RangeError(`${e}必须大于 0 且不超过 1`)}async function d(t,e,i,d,c){const u="video"===d.kind,f=u?"视频封面":"图片缩略图",l=d.maxSize??320,w=d.targetBytes??(u?10240:12288),m=d.maxBytes??(u?16384:20480),g=d.quality??(u?.84:.9),v=d.minQuality??(u?.68:.72);if(s(l,`${f}最大边长`),s(w,`${f}目标字节数`),s(m,`${f}最大字节数`),h(g,`${f}初始质量`),h(v,`${f}最低质量`),w>m)throw new RangeError(`${f}目标字节数不能超过最大字节数`);if(v>g)throw new RangeError(`${f}最低质量不能高于初始质量`);r(c);const y=document.createElement("canvas");try{const s=y.getContext("2d");if(null===s)throw new Error("媒体预览准备失败:无法创建 Canvas 2D 上下文");const h=e=>{r(c),y.width=e.width,y.height=e.height,s.drawImage(t,0,0,e.width,e.height)};let d=a(e,i,l);h(d);const b=u?void 0:s.getImageData(0,0,d.width,d.height).data;let M=!1;if(void 0!==b)for(let t=3;t<b.length;t+=4)if(b[t]<255){M=!0;break}if(M){const t=Math.min(32,Math.max(d.width,d.height));let r;for(let n=0;n<6;n+=1){const s=await o(y,c);if((void 0===r||s.byteLength<r.byteLength)&&(r=s),s.byteLength<=w)return s;const u=Math.max(d.width,d.height);if(u<=t||5===n)break;const f=Math.min(.8,Math.max(.35,.9*Math.sqrt(w/s.byteLength)));d=a(e,i,Math.max(t,Math.floor(u*f))),h(d)}if(void 0!==r&&r.byteLength<=m)return r;throw new Error(`${f}生成失败:编码结果超过 ${m} 字节硬上限`)}const E=Math.min(200,Math.max(d.width,d.height));let p;const x=[.../* @__PURE__ */new Set([g,Math.max(v,g-.12),v])];for(const t of x){const e=await n(y,t,c);if((void 0===p||e.byteLength<p.byteLength)&&(p=e),e.byteLength<=w)return e}const L=Math.max(d.width,d.height);if(L>E&&void 0!==p){const t=Math.sqrt(w/p.byteLength);d=a(e,i,Math.max(E,Math.floor(L*Math.min(.9,Math.max(.5,t))))),h(d);for(const t of[g,v]){const e=await n(y,t,c);if(e.byteLength<p.byteLength&&(p=e),e.byteLength<=w)return e}}if(void 0!==p&&p.byteLength<=m)return p;throw new Error(`${f}生成失败:编码结果超过 ${m} 字节硬上限`)}finally{y.width=0,y.height=0}}function c(t,e,i,a){return r(i),new Promise((r,o)=>{let n,s,h,d;const c=()=>{void 0!==n&&clearTimeout(n),t.removeEventListener(e,s),t.removeEventListener("error",h),i?.removeEventListener("abort",d)};s=()=>{("seeked"===e?!t.seeking:t.readyState>=("loadedmetadata"===e?1:2))&&(c(),r())},h=()=>{c(),o(new Error(`视频预览准备失败:${e} 前解码错误`))},d=()=>{c(),o(new DOMException("媒体预览准备已取消","AbortError"))},n=setTimeout(()=>{c(),o(new Error(`视频预览准备失败:${e} 超时`))},15e3),t.addEventListener(e,s),t.addEventListener("error",h,{once:!0}),i?.addEventListener("abort",d,{once:!0});try{a?.(),i?.aborted?d():null!==t.error?h():s()}catch(t){c(),o(t)}})}function u(i={}){const o=i.maxConcurrency??function(){if("undefined"==typeof navigator)return 2;const t=navigator.userAgent;if(/iPad|iPhone|iPod/.test(t)||/Macintosh/.test(t)&&(navigator.maxTouchPoints??0)>1)return 1;const e=navigator.deviceMemory;return void 0!==e&&e<=2?1:2}();if(!Number.isInteger(o)||o<1||o>4)throw new RangeError("媒体预览并发数必须是 1-4 的整数");const n=e(o),s=e(1);let h=!1;return{async prepare(e,i){if(h)throw new Error("媒体预览执行器已释放");const o="video"===e.kind,u=await(o?s:n).acquire(i);try{const n=o?await async function(t,e){const r=URL.createObjectURL(t.file),i=document.createElement("video");i.muted=!0,i.preload="metadata",i.playsInline=!0;try{await c(i,"loadedmetadata",e,()=>{i.src=r,i.load()});const a=i.videoWidth,o=i.videoHeight;if(a<=0||o<=0)throw new Error("视频预览准备失败:视频尺寸无效");const n=Number.isFinite(i.duration)&&i.duration>0?i.duration:void 0,s=void 0===t.atTime?void 0===n?0:Math.min(1,n/2):Math.max(0,Math.min(t.atTime,n??t.atTime));s>0&&await c(i,"seeked",e,()=>{i.currentTime=s}),await c(i,"loadeddata",e,()=>{i.preload="auto"});const h=void 0===n?void 0:n;let u,f;try{u=await d(i,a,o,t,e)}catch(t){if(e?.aborted||t instanceof RangeError)throw t}if(t.includeDisplayPoster)try{f=await d(i,a,o,{...t,maxSize:960,targetBytes:163840,maxBytes:262144,quality:.9,minQuality:.8},e)}catch(t){if(e?.aborted||t instanceof RangeError)throw t}return{width:a,height:o,...void 0===h?{}:{duration:h},...void 0===u?{}:{posterData:u},...void 0===f?{}:{displayPosterData:f}}}finally{i.pause(),i.removeAttribute("src"),i.load(),URL.revokeObjectURL(r)}}(e,i):await async function(e,i){r(i);const o=e.maxSize??320,n=e.maxBytes??20480,s=await t(e.file);function h(t,r){return"image/jpeg"===e.file.type&&e.file.size<=n&&Math.max(t,r)<=o}if(r(i),void 0!==s){if(!1===e.includePoster)return s;if(h(s.width,s.height))return{...s,posterData:await e.file.arrayBuffer()}}const c=void 0===s?void 0:a(s.width,s.height,o);let u;try{u=void 0===c?await createImageBitmap(e.file):await createImageBitmap(e.file,{resizeWidth:c.width,resizeHeight:c.height,resizeQuality:"high"})}catch(t){if(i?.aborted)throw t}if(void 0!==u)try{r(i);const t=s??{width:u.width,height:u.height};return!1===e.includePoster?t:void 0===s&&h(u.width,u.height)?{...t,posterData:await e.file.arrayBuffer()}:{...t,posterData:await d(u,u.width,u.height,e,i)}}finally{u.close()}const f=URL.createObjectURL(e.file),l=new Image;try{await new Promise((t,e)=>{let r,a;const o=()=>{void 0!==r&&clearTimeout(r),l.onload=null,l.onerror=null,i?.removeEventListener("abort",a)};a=()=>{o(),e(new DOMException("媒体预览准备已取消","AbortError"))},l.onload=()=>{o(),t()},l.onerror=()=>{o(),e(new Error("图片预览准备失败:Image 解码错误"))},r=setTimeout(()=>{o(),e(new Error("图片预览准备失败:Image 解码超时"))},15e3),i?.addEventListener("abort",a,{once:!0}),l.src=f});const t=s??{width:l.naturalWidth,height:l.naturalHeight};return!1===e.includePoster?t:h(l.naturalWidth,l.naturalHeight)?{...t,posterData:await e.file.arrayBuffer()}:{...t,posterData:await d(l,l.naturalWidth,l.naturalHeight,e,i)}}finally{l.removeAttribute("src"),URL.revokeObjectURL(f)}}(e,i);return r(i),n}finally{u()}},dispose(){h||(h=!0,n.dispose(),s.dispose())}}}export{u as createMediaPreviewPreparationExecutor};