k2-im 0.1.57 → 0.2.0

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.
Files changed (471) hide show
  1. package/README.md +3 -1
  2. package/dist/browser.d.ts +1 -1
  3. package/dist/browser.js +1 -1
  4. package/dist/chat-kit-pinia.d.ts +227 -170
  5. package/dist/chat-kit-pinia.js +1 -1
  6. package/dist/chat-kit-vue.d.ts +64 -44
  7. package/dist/chat-kit-vue.js +1 -1
  8. package/dist/chat-kit.d.ts +244 -173
  9. package/dist/chat-kit.js +1 -1
  10. package/dist/crypto.worker.js +17 -25
  11. package/dist/i18n.d.ts +61 -41
  12. package/dist/i18n.js +1 -1
  13. package/dist/index.d.ts +259 -188
  14. package/dist/index.js +1 -1
  15. package/dist/modules/api-protocol-client/src/bi-feedback.js +1 -0
  16. package/dist/modules/api-protocol-client/src/browser.js +1 -0
  17. package/dist/modules/api-protocol-client/src/client.js +1 -0
  18. package/dist/modules/api-protocol-client/src/config.js +1 -0
  19. package/dist/modules/api-protocol-client/src/constants.js +1 -0
  20. package/dist/modules/api-protocol-client/src/json.js +1 -0
  21. package/dist/modules/api-protocol-client/src/nonce.js +1 -0
  22. package/dist/modules/api-protocol-client/src/transports/axios.js +1 -0
  23. package/dist/modules/api-protocol-client/src/utils.js +1 -0
  24. package/dist/modules/crypto/browser.js +1 -0
  25. package/dist/modules/crypto/driver.js +1 -0
  26. package/dist/modules/crypto/vendor/crypto/index_bg.js +1 -0
  27. package/dist/modules/im-browser/src/crypto/channel-key-service.js +1 -0
  28. package/dist/modules/im-browser/src/crypto/collect-tea.js +1 -0
  29. package/dist/modules/im-browser/src/crypto/crypto-task-executor.js +1 -0
  30. package/dist/modules/im-browser/src/crypto/crypto-worker-factory.js +1 -0
  31. package/dist/modules/im-browser/src/crypto/crypto-worker-protocol.js +1 -0
  32. package/dist/modules/im-browser/src/crypto/encrypt-key-service.js +1 -0
  33. package/dist/modules/im-browser/src/crypto/group-key-service.js +1 -0
  34. package/dist/modules/im-browser/src/crypto/peer-public-key-service.js +1 -0
  35. package/dist/modules/im-browser/src/crypto/rsa-private-key.js +1 -0
  36. package/dist/modules/im-browser/src/crypto/rsa-tea-crypto-adapter.js +1 -0
  37. package/dist/modules/im-browser/src/crypto/stale-key-refresh.js +1 -0
  38. package/dist/modules/im-browser/src/crypto/tea.js +1 -0
  39. package/dist/modules/im-browser/src/crypto/wait-for-key-signal.js +1 -0
  40. package/dist/modules/im-browser/src/http/application-http-adapters.js +1 -0
  41. package/dist/modules/im-browser/src/http/channel-http-adapter.js +1 -0
  42. package/dist/modules/im-browser/src/http/channel-join-application-http-adapter.js +1 -0
  43. package/dist/modules/im-browser/src/http/channel-member-http-adapter.js +1 -0
  44. package/dist/modules/im-browser/src/http/channel-mention-member-http-adapter.js +1 -0
  45. package/dist/modules/im-browser/src/http/cm-http-adapter.js +1 -0
  46. package/dist/modules/im-browser/src/http/directory-http-adapter.js +1 -0
  47. package/dist/modules/im-browser/src/http/expression-http-adapter.js +1 -0
  48. package/dist/modules/im-browser/src/http/lazy-api-protocol-client.js +1 -0
  49. package/dist/modules/im-browser/src/http/profile-http-adapter.js +1 -0
  50. package/dist/modules/im-browser/src/http/requests/applications.js +1 -0
  51. package/dist/modules/im-browser/src/http/requests/bind-robot-conversation.js +1 -0
  52. package/dist/modules/im-browser/src/http/requests/board-pinned-message-validation.js +1 -0
  53. package/dist/modules/im-browser/src/http/requests/channel-join-applications.js +1 -0
  54. package/dist/modules/im-browser/src/http/requests/channel-management.js +1 -0
  55. package/dist/modules/im-browser/src/http/requests/channel-members.js +1 -0
  56. package/dist/modules/im-browser/src/http/requests/channel-mention-members.js +1 -0
  57. package/dist/modules/im-browser/src/http/requests/channel-message-context.js +1 -0
  58. package/dist/modules/im-browser/src/http/requests/channel-mini-program-rel.js +1 -0
  59. package/dist/modules/im-browser/src/http/requests/channel-profile.js +1 -0
  60. package/dist/modules/im-browser/src/http/requests/channel-read-index.js +1 -0
  61. package/dist/modules/im-browser/src/http/requests/contact-blocklist.js +1 -0
  62. package/dist/modules/im-browser/src/http/requests/contact-friendship.js +1 -0
  63. package/dist/modules/im-browser/src/http/requests/contact-report.js +1 -0
  64. package/dist/modules/im-browser/src/http/requests/core-json-request.js +1 -0
  65. package/dist/modules/im-browser/src/http/requests/create-channel.js +1 -0
  66. package/dist/modules/im-browser/src/http/requests/create-face-to-face-group.js +1 -0
  67. package/dist/modules/im-browser/src/http/requests/create-group.js +1 -0
  68. package/dist/modules/im-browser/src/http/requests/customer-service-profile.js +1 -0
  69. package/dist/modules/im-browser/src/http/requests/get-board-pinned-message.js +1 -0
  70. package/dist/modules/im-browser/src/http/requests/get-channel-board-pinned-message.js +1 -0
  71. package/dist/modules/im-browser/src/http/requests/get-channel-secret-key.js +1 -0
  72. package/dist/modules/im-browser/src/http/requests/get-conversation-background-presets.js +1 -0
  73. package/dist/modules/im-browser/src/http/requests/get-group-encrypt-info.js +1 -0
  74. package/dist/modules/im-browser/src/http/requests/get-group-info.js +1 -0
  75. package/dist/modules/im-browser/src/http/requests/get-group-member-list.js +1 -0
  76. package/dist/modules/im-browser/src/http/requests/get-user-encrypt-info.js +1 -0
  77. package/dist/modules/im-browser/src/http/requests/get-user-info-friend.js +1 -0
  78. package/dist/modules/im-browser/src/http/requests/get-user-info-other.js +1 -0
  79. package/dist/modules/im-browser/src/http/requests/group-management.js +1 -0
  80. package/dist/modules/im-browser/src/http/requests/mark-group-read-all.js +1 -0
  81. package/dist/modules/im-browser/src/http/requests/membership-join.js +1 -0
  82. package/dist/modules/im-browser/src/http/requests/pin-board-message.js +1 -0
  83. package/dist/modules/im-browser/src/http/requests/pin-channel-board-message.js +1 -0
  84. package/dist/modules/im-browser/src/http/requests/pull-messages-by-id.js +1 -0
  85. package/dist/modules/im-browser/src/http/requests/pull-offline-channel.js +1 -0
  86. package/dist/modules/im-browser/src/http/requests/pull-offline-chat.js +1 -0
  87. package/dist/modules/im-browser/src/http/requests/pull-offline-group.js +1 -0
  88. package/dist/modules/im-browser/src/http/requests/pull-offline-signal.js +1 -0
  89. package/dist/modules/im-browser/src/http/requests/robot-menu-reply.js +1 -0
  90. package/dist/modules/im-browser/src/http/requests/robot-profile.js +1 -0
  91. package/dist/modules/im-browser/src/http/requests/search-robots.js +1 -0
  92. package/dist/modules/im-browser/src/http/requests/set-conversation-undisturb.js +1 -0
  93. package/dist/modules/im-browser/src/http/requests/set-friend-remark.js +1 -0
  94. package/dist/modules/im-browser/src/http/requests/set-group-nickname.js +1 -0
  95. package/dist/modules/im-browser/src/http/requests/unpin-board-message.js +1 -0
  96. package/dist/modules/im-browser/src/http/requests/unpin-channel-board-message.js +1 -0
  97. package/dist/modules/im-browser/src/http/requests/update-group-info.js +1 -0
  98. package/dist/modules/im-browser/src/http/session-favorite-http-adapter.js +1 -0
  99. package/dist/modules/im-browser/src/media/file-md5.js +1 -0
  100. package/dist/modules/im-browser/src/media/image-clipboard.js +1 -0
  101. package/dist/modules/im-browser/src/media/image-header-dimensions.js +1 -0
  102. package/dist/modules/im-browser/src/media/media-downloader.js +1 -0
  103. package/dist/modules/im-browser/src/media/media-preview-adapter.js +1 -0
  104. package/dist/modules/im-browser/src/media/media-preview-preparation-executor.js +1 -0
  105. package/dist/modules/im-browser/src/media/media-request-limiter.js +1 -0
  106. package/dist/modules/im-browser/src/media/media-transfer-adapter.js +1 -0
  107. package/dist/modules/im-browser/src/media/media-transfer-errors.js +1 -0
  108. package/dist/modules/im-browser/src/media/media-transfer-policy.js +1 -0
  109. package/dist/modules/im-browser/src/media/media-upload-credentials.js +1 -0
  110. package/dist/modules/im-browser/src/media/media-upload-recovery-codec.js +1 -0
  111. package/dist/modules/im-browser/src/media/media-upload-recovery-store.js +1 -0
  112. package/dist/modules/im-browser/src/media/media-upload-source-fingerprint.js +1 -0
  113. package/dist/modules/im-browser/src/media/s3-multipart-uploader.js +1 -0
  114. package/dist/modules/im-browser/src/media/xhr-upload-idle-timeout.js +1 -0
  115. package/dist/modules/im-browser/src/network/browser-connection-ownership.js +1 -0
  116. package/dist/modules/im-browser/src/network/network-monitor.js +1 -0
  117. package/dist/modules/im-browser/src/scheduling/yield-to-browser.js +1 -0
  118. package/dist/modules/im-browser/src/storage/indexed-db-storage-adapter.js +1 -0
  119. package/dist/modules/im-browser/src/transport/ws-transport.js +1 -0
  120. package/dist/modules/im-browser/src/voice/voice-amplitude.js +1 -0
  121. package/dist/modules/im-browser/src/voice/voice-capabilities.js +1 -0
  122. package/dist/modules/im-browser/src/voice/voice-codec.js +1 -0
  123. package/dist/modules/im-browser/src/voice/voice-errors.js +1 -0
  124. package/dist/modules/im-browser/src/voice/voice-playback.js +1 -0
  125. package/dist/modules/im-browser/src/voice/voice-player.js +1 -0
  126. package/dist/modules/im-browser/src/voice/voice-recorder.js +1 -0
  127. package/dist/modules/im-chat-kit/src/i18n/use-im-text.js +1 -0
  128. package/dist/modules/im-chat-kit/src/pinia/applications.store.js +1 -0
  129. package/dist/modules/im-chat-kit/src/pinia/capabilities.store.js +1 -0
  130. package/dist/modules/im-chat-kit/src/pinia/composer.store.js +1 -0
  131. package/dist/modules/im-chat-kit/src/pinia/context.js +1 -0
  132. package/dist/modules/im-chat-kit/src/pinia/conversation-activation.js +1 -0
  133. package/dist/modules/im-chat-kit/src/pinia/conversation-deletion.js +1 -0
  134. package/dist/modules/im-chat-kit/src/pinia/conversation-list.store.js +1 -0
  135. package/dist/modules/im-chat-kit/src/pinia/expression.store.js +1 -0
  136. package/dist/modules/im-chat-kit/src/pinia/history-return-after-send.js +1 -0
  137. package/dist/modules/im-chat-kit/src/pinia/media-transfer-estimate.js +1 -0
  138. package/dist/modules/im-chat-kit/src/pinia/media.store.js +1 -0
  139. package/dist/modules/im-chat-kit/src/pinia/message-operations.store.js +1 -0
  140. package/dist/modules/im-chat-kit/src/pinia/profile-directory.store.js +1 -0
  141. package/dist/modules/im-chat-kit/src/pinia/quoted-message.store.js +1 -0
  142. package/dist/modules/im-chat-kit/src/pinia/reaction.store.js +1 -0
  143. package/dist/modules/im-chat-kit/src/pinia/search-senders.js +1 -0
  144. package/dist/modules/im-chat-kit/src/pinia/search.store.js +1 -0
  145. package/dist/modules/im-chat-kit/src/pinia/session-favorites.store.js +1 -0
  146. package/dist/modules/im-chat-kit/src/pinia/session.store.js +1 -0
  147. package/dist/modules/im-chat-kit/src/pinia/thread-paging.store.js +1 -0
  148. package/dist/modules/im-chat-kit/src/pinia/thread-return-to-latest.js +1 -0
  149. package/dist/modules/im-chat-kit/src/pinia/thread.store.js +1 -0
  150. package/dist/modules/im-chat-kit/src/presentation/channel-mini-program-open.js +1 -0
  151. package/dist/modules/im-chat-kit/src/presentation/channel-mini-program-rels.js +1 -0
  152. package/dist/modules/im-chat-kit/src/presentation/conversation-list.js +1 -0
  153. package/dist/modules/im-chat-kit/src/presentation/conversation-unread.js +1 -0
  154. package/dist/modules/im-chat-kit/src/presentation/delayed-loading-indicator.js +1 -0
  155. package/dist/modules/im-chat-kit/src/presentation/media-source-priority.js +1 -0
  156. package/dist/modules/im-chat-kit/src/presentation/message-notification.js +1 -0
  157. package/dist/modules/im-chat-kit/src/presentation/message-search.js +1 -0
  158. package/dist/modules/im-chat-kit/src/presentation/mini-program-game-preview.js +1 -0
  159. package/dist/modules/im-chat-kit/src/presentation/mini-program-open-url.js +1 -0
  160. package/dist/modules/im-chat-kit/src/runtime/chat-runtime.js +1 -0
  161. package/dist/modules/im-chat-kit/src/runtime/conversation-prefetch-controller.js +1 -0
  162. package/dist/modules/im-chat-kit/src/runtime/media-object-url-registry.js +1 -0
  163. package/dist/modules/im-chat-kit/src/runtime/runtime-operation.js +1 -0
  164. package/dist/modules/im-chat-kit/src/services/capabilities.js +1 -0
  165. package/dist/modules/im-chat-kit/src/services/channel-member-management.service.js +1 -0
  166. package/dist/modules/im-chat-kit/src/services/channel-profile-management.service.js +1 -0
  167. package/dist/modules/im-chat-kit/src/services/channel-send-restriction.js +1 -0
  168. package/dist/modules/im-chat-kit/src/services/direct-contact-management.service.js +1 -0
  169. package/dist/modules/im-chat-kit/src/services/forward.service.js +1 -0
  170. package/dist/modules/im-chat-kit/src/services/group-member-management.service.js +1 -0
  171. package/dist/modules/im-chat-kit/src/services/group-profile-management.service.js +1 -0
  172. package/dist/modules/im-chat-kit/src/services/image-copy.service.js +1 -0
  173. package/dist/modules/im-chat-kit/src/services/media-file-classification.js +1 -0
  174. package/dist/modules/im-chat-kit/src/services/media.service.js +1 -0
  175. package/dist/modules/im-chat-kit/src/services/message.service.js +1 -0
  176. package/dist/modules/im-chat-kit/src/services/pinned-message-rules.js +1 -0
  177. package/dist/modules/im-chat-kit/src/services/pinned-message.service.js +1 -0
  178. package/dist/modules/im-chat-kit/src/services/profile-access.service.js +1 -0
  179. package/dist/modules/im-chat-kit/src/services/profile-directory.service.js +1 -0
  180. package/dist/modules/im-chat-kit/src/services/profile-display.js +1 -0
  181. package/dist/modules/im-chat-kit/src/services/profile.service.js +1 -0
  182. package/dist/modules/im-chat-kit/src/services/read.service.js +1 -0
  183. package/dist/modules/im-chat-kit/src/services/robot-sender-profile.js +1 -0
  184. package/dist/modules/im-chat-kit/src/services/search.service.js +1 -0
  185. package/dist/modules/im-chat-kit/src/services/send.service.js +1 -0
  186. package/dist/modules/im-chat-kit/src/thread/active-date.js +1 -0
  187. package/dist/modules/im-chat-kit/src/thread/create-thread-items.js +1 -0
  188. package/dist/modules/im-chat-kit/src/thread/message-locate-result.js +1 -0
  189. package/dist/modules/im-chat-kit/src/thread/new-message-badge.js +1 -0
  190. package/dist/modules/im-chat-kit/src/thread/resolve-message-body-kind.js +1 -0
  191. package/dist/modules/im-chat-kit/src/thread/resolve-quoted-message-presentation.js +1 -0
  192. package/dist/modules/im-chat-kit/src/thread/viewport-rules.js +1 -0
  193. package/dist/modules/im-chat-kit/src/utils/emoji/emoji-legacy-catalog.json.js +1 -0
  194. package/dist/modules/im-chat-kit/src/utils/emoji/index.js +1 -0
  195. package/dist/modules/im-chat-kit/src/utils/emoji/recent.js +1 -0
  196. package/dist/modules/im-chat-kit/src/utils/emoji/unicode-emoji-catalog.json.js +1 -0
  197. package/dist/modules/im-chat-kit/src/utils/emoji/unicode.js +1 -0
  198. package/dist/modules/im-chat-kit/src/utils/highlight.js +1 -0
  199. package/dist/modules/im-chat-kit/src/utils/link.js +1 -0
  200. package/dist/modules/im-chat-kit/src/utils/media-batch.js +1 -0
  201. package/dist/modules/im-chat-kit/src/utils/media-dimensions.js +1 -0
  202. package/dist/modules/im-chat-kit/src/utils/media-format.js +1 -0
  203. package/dist/modules/im-chat-kit/src/utils/media-transfer-presentation.js +1 -0
  204. package/dist/modules/im-chat-kit/src/utils/time-display.js +1 -0
  205. package/dist/modules/im-chat-kit/src/utils/waveform.js +1 -0
  206. package/dist/modules/im-chat-kit/src/vue/thread/ImThreadBodySwitch.js +1 -0
  207. package/dist/modules/im-chat-kit/src/vue/thread/ImThreadItems.js +1 -0
  208. package/dist/modules/im-chat-kit/src/vue/thread/ImThreadSurface.js +1 -0
  209. package/dist/modules/im-chat-kit/src/vue/thread/ImThreadViewport.js +1 -0
  210. package/dist/modules/im-chat-kit/src/vue/thread/message-renderer-registry.js +1 -0
  211. package/dist/modules/im-chat-kit/src/vue/thread/thread-idle-task.js +1 -0
  212. package/dist/modules/im-chat-kit/src/vue/thread/thread-layout-measurements.js +1 -0
  213. package/dist/modules/im-chat-kit/src/vue/thread/thread-read-actions-context.js +1 -0
  214. package/dist/modules/im-chat-kit/src/vue/thread/thread-surface-context.js +1 -0
  215. package/dist/modules/im-chat-kit/src/vue/thread/thread-viewport-context.js +1 -0
  216. package/dist/modules/im-chat-kit/src/vue/thread/thread-visibility-target-group.js +1 -0
  217. package/dist/modules/im-chat-kit/src/vue/thread/thread-visibility-targets.js +1 -0
  218. package/dist/modules/im-chat-kit/src/vue/thread/use-im-thread-layout-measurement.js +1 -0
  219. package/dist/modules/im-core/src/abort.js +1 -0
  220. package/dist/modules/im-core/src/cache-namespace.js +1 -0
  221. package/dist/modules/im-core/src/connection/backoff.js +1 -0
  222. package/dist/modules/im-core/src/connection/connection-manager.js +1 -0
  223. package/dist/modules/im-core/src/connection/heartbeat-manager.js +1 -0
  224. package/dist/modules/im-core/src/conversation-identity.js +1 -0
  225. package/dist/modules/im-core/src/diagnostics.js +1 -0
  226. package/dist/modules/im-core/src/event-emitter.js +1 -0
  227. package/dist/modules/im-core/src/login/login-handler.js +1 -0
  228. package/dist/modules/im-core/src/mapping/bot-sender.js +1 -0
  229. package/dist/modules/im-core/src/mapping/call-record-body.js +1 -0
  230. package/dist/modules/im-core/src/mapping/channel-message-mapper.js +1 -0
  231. package/dist/modules/im-core/src/mapping/channel-notify-mapper.js +1 -0
  232. package/dist/modules/im-core/src/mapping/channel-offline-mapper.js +1 -0
  233. package/dist/modules/im-core/src/mapping/channel-pinned-message-mapper.js +1 -0
  234. package/dist/modules/im-core/src/mapping/channel-read-position.js +1 -0
  235. package/dist/modules/im-core/src/mapping/contact-body.js +1 -0
  236. package/dist/modules/im-core/src/mapping/content-body.js +1 -0
  237. package/dist/modules/im-core/src/mapping/conversation.js +1 -0
  238. package/dist/modules/im-core/src/mapping/crypto-batch-preparation.js +1 -0
  239. package/dist/modules/im-core/src/mapping/customer-service-body.js +1 -0
  240. package/dist/modules/im-core/src/mapping/customer-service-message-mapper.js +1 -0
  241. package/dist/modules/im-core/src/mapping/decrypt-recovery.js +1 -0
  242. package/dist/modules/im-core/src/mapping/file-body.js +1 -0
  243. package/dist/modules/im-core/src/mapping/files-album-body.js +1 -0
  244. package/dist/modules/im-core/src/mapping/game-body.js +1 -0
  245. package/dist/modules/im-core/src/mapping/gift-body.js +1 -0
  246. package/dist/modules/im-core/src/mapping/group-message-mapper.js +1 -0
  247. package/dist/modules/im-core/src/mapping/group-notify-mapper.js +1 -0
  248. package/dist/modules/im-core/src/mapping/group-offline-mapper.js +1 -0
  249. package/dist/modules/im-core/src/mapping/image-body.js +1 -0
  250. package/dist/modules/im-core/src/mapping/live-room-body.js +1 -0
  251. package/dist/modules/im-core/src/mapping/media-album-body.js +1 -0
  252. package/dist/modules/im-core/src/mapping/merge.js +1 -0
  253. package/dist/modules/im-core/src/mapping/mes-chat-mapper.js +1 -0
  254. package/dist/modules/im-core/src/mapping/message-id.js +1 -0
  255. package/dist/modules/im-core/src/mapping/message-mapper.js +1 -0
  256. package/dist/modules/im-core/src/mapping/messages-by-id.js +1 -0
  257. package/dist/modules/im-core/src/mapping/mini-program-body.js +1 -0
  258. package/dist/modules/im-core/src/mapping/offline-mapper.js +1 -0
  259. package/dist/modules/im-core/src/mapping/pinned-message-mapper.js +1 -0
  260. package/dist/modules/im-core/src/mapping/profile-mapper.js +1 -0
  261. package/dist/modules/im-core/src/mapping/reaction-mapper.js +1 -0
  262. package/dist/modules/im-core/src/mapping/recall-mapper.js +1 -0
  263. package/dist/modules/im-core/src/mapping/red-packet-body.js +1 -0
  264. package/dist/modules/im-core/src/mapping/robot-body.js +1 -0
  265. package/dist/modules/im-core/src/mapping/robot-message-mapper.js +1 -0
  266. package/dist/modules/im-core/src/mapping/search-text.js +1 -0
  267. package/dist/modules/im-core/src/mapping/session-mapper.js +1 -0
  268. package/dist/modules/im-core/src/mapping/signal-offline-mapper.js +1 -0
  269. package/dist/modules/im-core/src/mapping/sort.js +1 -0
  270. package/dist/modules/im-core/src/mapping/sticker-body.js +1 -0
  271. package/dist/modules/im-core/src/mapping/stored-message.js +1 -0
  272. package/dist/modules/im-core/src/mapping/system-event-timeline-policy.js +1 -0
  273. package/dist/modules/im-core/src/mapping/text-segments.js +1 -0
  274. package/dist/modules/im-core/src/mapping/transfer-body.js +1 -0
  275. package/dist/modules/im-core/src/mapping/transfer-status.js +1 -0
  276. package/dist/modules/im-core/src/mapping/unread-divider.js +1 -0
  277. package/dist/modules/im-core/src/mapping/video-body.js +1 -0
  278. package/dist/modules/im-core/src/mapping/voice-body.js +1 -0
  279. package/dist/modules/im-core/src/message-flow/call/direct-call-manager.js +1 -0
  280. package/dist/modules/im-core/src/message-flow/call/direct-call-record.js +1 -0
  281. package/dist/modules/im-core/src/message-flow/call/direct-p2p-call.js +1 -0
  282. package/dist/modules/im-core/src/message-flow/call/group-call-manager.js +1 -0
  283. package/dist/modules/im-core/src/message-flow/call/group-call-record.js +1 -0
  284. package/dist/modules/im-core/src/message-flow/conversation-support.js +1 -0
  285. package/dist/modules/im-core/src/message-flow/edit/edit-frame.js +1 -0
  286. package/dist/modules/im-core/src/message-flow/edit/edit-manager.js +1 -0
  287. package/dist/modules/im-core/src/message-flow/edit/edit-receive-handlers.js +1 -0
  288. package/dist/modules/im-core/src/message-flow/edit/edit-strategy.js +1 -0
  289. package/dist/modules/im-core/src/message-flow/expression/expression-message.js +1 -0
  290. package/dist/modules/im-core/src/message-flow/forward/can-transmit.js +1 -0
  291. package/dist/modules/im-core/src/message-flow/forward/forward-content-spec.js +1 -0
  292. package/dist/modules/im-core/src/message-flow/forward/forward-messages.js +1 -0
  293. package/dist/modules/im-core/src/message-flow/game/game-message.js +1 -0
  294. package/dist/modules/im-core/src/message-flow/gift/gift-message.js +1 -0
  295. package/dist/modules/im-core/src/message-flow/live-room/live-room-message.js +1 -0
  296. package/dist/modules/im-core/src/message-flow/media/media-sender.js +1 -0
  297. package/dist/modules/im-core/src/message-flow/mini-program/mini-program-message.js +1 -0
  298. package/dist/modules/im-core/src/message-flow/reaction/can-react.js +1 -0
  299. package/dist/modules/im-core/src/message-flow/reaction/reaction-manager.js +1 -0
  300. package/dist/modules/im-core/src/message-flow/reaction/reaction-receive-handlers.js +1 -0
  301. package/dist/modules/im-core/src/message-flow/read/channel-read-receive-handlers.js +1 -0
  302. package/dist/modules/im-core/src/message-flow/read/channel-read-strategy.js +1 -0
  303. package/dist/modules/im-core/src/message-flow/read/customer-service-read-strategy.js +1 -0
  304. package/dist/modules/im-core/src/message-flow/read/direct-read-sync.js +1 -0
  305. package/dist/modules/im-core/src/message-flow/read/group-read-strategy.js +1 -0
  306. package/dist/modules/im-core/src/message-flow/read/read-strategy.js +1 -0
  307. package/dist/modules/im-core/src/message-flow/read/robot-read-strategy.js +1 -0
  308. package/dist/modules/im-core/src/message-flow/recall/channel-message-deletion-manager.js +1 -0
  309. package/dist/modules/im-core/src/message-flow/recall/recall-frame.js +1 -0
  310. package/dist/modules/im-core/src/message-flow/recall/recall-manager.js +1 -0
  311. package/dist/modules/im-core/src/message-flow/recall/recall-receive-handlers.js +1 -0
  312. package/dist/modules/im-core/src/message-flow/recall/recall-strategy.js +1 -0
  313. package/dist/modules/im-core/src/message-flow/receive/channel-application-receive-handlers.js +1 -0
  314. package/dist/modules/im-core/src/message-flow/receive/channel-notify-receive-handlers.js +1 -0
  315. package/dist/modules/im-core/src/message-flow/receive/channel-receive-handlers.js +1 -0
  316. package/dist/modules/im-core/src/message-flow/receive/command-handler-registry.js +1 -0
  317. package/dist/modules/im-core/src/message-flow/receive/contact-application-answer-receive-handlers.js +1 -0
  318. package/dist/modules/im-core/src/message-flow/receive/contact-application-receive-handlers.js +1 -0
  319. package/dist/modules/im-core/src/message-flow/receive/direct-receive-handlers.js +1 -0
  320. package/dist/modules/im-core/src/message-flow/receive/friend-action-receive-handlers.js +1 -0
  321. package/dist/modules/im-core/src/message-flow/receive/group-event-receive-handlers.js +1 -0
  322. package/dist/modules/im-core/src/message-flow/receive/group-receive-handlers.js +1 -0
  323. package/dist/modules/im-core/src/message-flow/receive/mes-chat-receive-handlers.js +1 -0
  324. package/dist/modules/im-core/src/message-flow/receive/robot-receive-handlers.js +1 -0
  325. package/dist/modules/im-core/src/message-flow/receive/session-favorite-receive-handlers.js +1 -0
  326. package/dist/modules/im-core/src/message-flow/receive/wallet-notify-receive-handlers.js +1 -0
  327. package/dist/modules/im-core/src/message-flow/send/channel-outgoing-frame.js +1 -0
  328. package/dist/modules/im-core/src/message-flow/send/channel-send-strategy.js +1 -0
  329. package/dist/modules/im-core/src/message-flow/send/direct-outgoing-frame.js +1 -0
  330. package/dist/modules/im-core/src/message-flow/send/direct-send-strategy.js +1 -0
  331. package/dist/modules/im-core/src/message-flow/send/group-outgoing-frame.js +1 -0
  332. package/dist/modules/im-core/src/message-flow/send/group-send-strategy.js +1 -0
  333. package/dist/modules/im-core/src/message-flow/send/robot-outgoing-frame.js +1 -0
  334. package/dist/modules/im-core/src/message-flow/send/robot-send-strategy.js +1 -0
  335. package/dist/modules/im-core/src/message-flow/send/send-strategy-registry.js +1 -0
  336. package/dist/modules/im-core/src/message-flow/transfer/transfer-message.js +1 -0
  337. package/dist/modules/im-core/src/outbox/outbox-manager.js +1 -0
  338. package/dist/modules/im-core/src/packet-router.js +1 -0
  339. package/dist/modules/im-core/src/ports/crypto-port.js +1 -0
  340. package/dist/modules/im-core/src/ports/crypto-task-executor.js +1 -0
  341. package/dist/modules/im-core/src/ports/http-port.js +1 -0
  342. package/dist/modules/im-core/src/ports/media-asset-cache-port.js +1 -0
  343. package/dist/modules/im-core/src/push/push-registration.js +1 -0
  344. package/dist/modules/im-core/src/read/read-reporter.js +1 -0
  345. package/dist/modules/im-core/src/request-tracker.js +1 -0
  346. package/dist/modules/im-core/src/session-favorite-album.js +1 -0
  347. package/dist/modules/im-core/src/session-favorite-files.js +1 -0
  348. package/dist/modules/im-core/src/state/channel-permissions.js +1 -0
  349. package/dist/modules/im-core/src/state/channel-restriction-coordinator.js +1 -0
  350. package/dist/modules/im-core/src/state/domain-state.js +1 -0
  351. package/dist/modules/im-core/src/state/draft-store.js +1 -0
  352. package/dist/modules/im-core/src/state/group-restriction-coordinator.js +1 -0
  353. package/dist/modules/im-core/src/state/local-message-window-read-error.js +1 -0
  354. package/dist/modules/im-core/src/state/message-reactions.js +1 -0
  355. package/dist/modules/im-core/src/state/message-store.js +1 -0
  356. package/dist/modules/im-core/src/state/message-window-store.js +1 -0
  357. package/dist/modules/im-core/src/state/pinned-message-coordinator.js +1 -0
  358. package/dist/modules/im-core/src/state/pinned-message-store.js +1 -0
  359. package/dist/modules/im-core/src/state/read-store.js +1 -0
  360. package/dist/modules/im-core/src/state/session-sort.js +1 -0
  361. package/dist/modules/im-core/src/state/session-store.js +1 -0
  362. package/dist/modules/im-core/src/sync/channel-sync-checkpoint.js +1 -0
  363. package/dist/modules/im-core/src/sync/sync-manager.js +1 -0
  364. package/dist/modules/im-i18n/src/catalog/en-US.js +1 -0
  365. package/dist/modules/im-i18n/src/catalog/index.js +1 -0
  366. package/dist/modules/im-i18n/src/catalog/th-TH.js +1 -0
  367. package/dist/modules/im-i18n/src/catalog/vi-VN.js +1 -0
  368. package/dist/modules/im-i18n/src/catalog/zh-CN.js +1 -0
  369. package/dist/modules/im-i18n/src/catalog/zh-TW.js +1 -0
  370. package/dist/modules/im-i18n/src/create-im-i18n.js +1 -0
  371. package/dist/modules/im-i18n/src/format/failure.js +1 -0
  372. package/dist/modules/im-i18n/src/format/last-message.js +1 -0
  373. package/dist/modules/im-i18n/src/format/media.js +1 -0
  374. package/dist/modules/im-i18n/src/format/mention.js +1 -0
  375. package/dist/modules/im-i18n/src/format/service-text.js +1 -0
  376. package/dist/modules/im-i18n/src/format/system-message.js +1 -0
  377. package/dist/modules/im-i18n/src/internal/duration.js +1 -0
  378. package/dist/modules/im-i18n/src/internal/interpolate.js +1 -0
  379. package/dist/modules/im-i18n/src/locale.js +1 -0
  380. package/dist/modules/im-protocol/src/board-pinned-message.js +1 -0
  381. package/dist/modules/im-protocol/src/frame-codec.js +1 -0
  382. package/dist/modules/im-protocol/src/protobuf/gen/channel_pb.js +1 -0
  383. package/dist/modules/im-protocol/src/protobuf/gen/group_pb.js +1 -0
  384. package/dist/modules/im-protocol/src/protobuf/gen/im.app.msg_pb.js +1 -0
  385. package/dist/modules/im-protocol/src/protobuf/gen/im.channel_pb.js +1 -0
  386. package/dist/modules/im-protocol/src/protobuf/gen/im.group_pb.js +1 -0
  387. package/dist/modules/im-protocol/src/protobuf/gen/im.login_pb.js +1 -0
  388. package/dist/modules/im-protocol/src/protobuf/gen/im.msg_pb.js +1 -0
  389. package/dist/modules/im-protocol/src/protobuf/gen/im.pub_pb.js +1 -0
  390. package/dist/modules/im-protocol/src/protobuf/gen/im.robot_pb.js +1 -0
  391. package/dist/modules/im-protocol/src/protobuf/gen/im.sig_pb.js +1 -0
  392. package/dist/modules/im-protocol/src/protobuf/gen/msg_pb.js +1 -0
  393. package/dist/modules/im-protocol/src/protobuf/registry.js +1 -0
  394. package/dist/modules/im-sdk/src/cache-prefix-migration.js +1 -0
  395. package/dist/modules/im-sdk/src/create-im-client.js +1 -0
  396. package/dist/modules/im-sdk/src/domains/channel.js +1 -0
  397. package/dist/modules/im-sdk/src/domains/contact.js +1 -0
  398. package/dist/modules/im-sdk/src/domains/conversation.js +1 -0
  399. package/dist/modules/im-sdk/src/domains/group.js +1 -0
  400. package/dist/modules/im-sdk/src/domains/media-byte-computation.js +1 -0
  401. package/dist/modules/im-sdk/src/domains/media.js +1 -0
  402. package/dist/modules/im-sdk/src/domains/message.js +1 -0
  403. package/dist/modules/im-sdk/src/domains/pinned-message-source.js +1 -0
  404. package/dist/modules/im-sdk/src/domains/pinned-message.js +1 -0
  405. package/dist/modules/im-sdk/src/domains/session.js +1 -0
  406. package/dist/modules/im-sdk/src/product/applications.js +1 -0
  407. package/dist/modules/im-sdk/src/product/calls.js +1 -0
  408. package/dist/modules/im-sdk/src/product/capabilities.js +1 -0
  409. package/dist/modules/im-sdk/src/product/channel-mention-candidates.js +1 -0
  410. package/dist/modules/im-sdk/src/product/conversation-background.js +1 -0
  411. package/dist/modules/im-sdk/src/product/conversation-entry-unread.js +1 -0
  412. package/dist/modules/im-sdk/src/product/conversation-handle.js +1 -0
  413. package/dist/modules/im-sdk/src/product/conversations.js +1 -0
  414. package/dist/modules/im-sdk/src/product/customer-service.js +1 -0
  415. package/dist/modules/im-sdk/src/product/diagnostic-memory-buffer.js +1 -0
  416. package/dist/modules/im-sdk/src/product/diagnostics.js +1 -0
  417. package/dist/modules/im-sdk/src/product/directory.js +1 -0
  418. package/dist/modules/im-sdk/src/product/draft.js +1 -0
  419. package/dist/modules/im-sdk/src/product/emoji-catalog.js +1 -0
  420. package/dist/modules/im-sdk/src/product/emoji-catalog.json.js +1 -0
  421. package/dist/modules/im-sdk/src/product/events.js +1 -0
  422. package/dist/modules/im-sdk/src/product/expressions.js +1 -0
  423. package/dist/modules/im-sdk/src/product/face-to-face-group.js +1 -0
  424. package/dist/modules/im-sdk/src/product/group-calls.js +1 -0
  425. package/dist/modules/im-sdk/src/product/image-format.js +1 -0
  426. package/dist/modules/im-sdk/src/product/local-data.js +1 -0
  427. package/dist/modules/im-sdk/src/product/media.js +1 -0
  428. package/dist/modules/im-sdk/src/product/mention.js +1 -0
  429. package/dist/modules/im-sdk/src/product/message.js +1 -0
  430. package/dist/modules/im-sdk/src/product/messages-by-id.js +1 -0
  431. package/dist/modules/im-sdk/src/product/outbox.js +1 -0
  432. package/dist/modules/im-sdk/src/product/profiles.js +1 -0
  433. package/dist/modules/im-sdk/src/product/resource-uploader.js +1 -0
  434. package/dist/modules/im-sdk/src/product/robots.js +1 -0
  435. package/dist/modules/im-sdk/src/product/search.js +1 -0
  436. package/dist/modules/im-sdk/src/product/session-favorites.js +1 -0
  437. package/dist/modules/im-sdk/src/product/settings.js +1 -0
  438. package/dist/modules/im-sdk/src/runtime/advanced-message-diagnostics.js +1 -0
  439. package/dist/modules/im-sdk/src/runtime/channel-read-summary-refresh.js +1 -0
  440. package/dist/modules/im-sdk/src/runtime/customer-service-legacy-recovery.js +1 -0
  441. package/dist/modules/im-sdk/src/runtime/decrypt-diagnostics.js +1 -0
  442. package/dist/modules/im-sdk/src/runtime/foreground-work-coordinator.js +1 -0
  443. package/dist/modules/im-sdk/src/runtime/group-history-page-boundary.js +1 -0
  444. package/dist/modules/im-sdk/src/runtime/key-prefetch.js +1 -0
  445. package/dist/modules/im-sdk/src/runtime/local-media-preview.js +1 -0
  446. package/dist/modules/im-sdk/src/runtime/media-cache-maintenance.js +1 -0
  447. package/dist/modules/im-sdk/src/runtime/media-upload-recovery.js +1 -0
  448. package/dist/modules/im-sdk/src/runtime/protobuf-wire-shape.js +1 -0
  449. package/dist/modules/im-sdk/src/runtime/receiving-activity.js +1 -0
  450. package/dist/modules/im-sdk/src/runtime/recent-history-fetcher.js +1 -0
  451. package/dist/modules/im-sdk/src/runtime/recent-history-prefetch.js +1 -0
  452. package/dist/modules/im-sdk/src/runtime/session-http-clients.js +1 -0
  453. package/dist/modules/im-sdk/src/runtime/session-runtime.js +1 -0
  454. package/dist/modules/im-sdk/src/runtime/signal-offline-poller.js +1 -0
  455. package/dist/request-crypto.js +1 -1
  456. package/dist/sdk.d.ts +170 -111
  457. package/dist/sdk.js +1 -1
  458. package/package.json +2 -2
  459. package/dist/browser-2MUNHRDS.js +0 -1
  460. package/dist/browser-RTCHWSQ2.js +0 -2
  461. package/dist/chunk-2OCWQHFJ.js +0 -2
  462. package/dist/chunk-46ARFR7U.js +0 -8
  463. package/dist/chunk-HQDLYL3K.js +0 -2
  464. package/dist/chunk-IC6HI33O.js +0 -1
  465. package/dist/chunk-IDECJJXC.js +0 -0
  466. package/dist/chunk-J3TLOAQI.js +0 -2
  467. package/dist/chunk-Q2DEFN53.js +0 -1
  468. package/dist/chunk-SXY56EVC.js +0 -0
  469. package/dist/chunk-WL3NFQ7Y.js +0 -1
  470. package/dist/chunk-WOT6VMZA.js +0 -1
  471. package/dist/chunk-WS7BWP7C.js +0 -1
@@ -0,0 +1 @@
1
+ function e(e){return`${e.conversationType}:${e.conversationId}`}function n(n){let t,o,r=!1,i=null,a=!1,l=0,c=!1;const d=/* @__PURE__ */new Set;let s;function u(e,t,r){const i=`${e}:${t??""}`;i!==o&&(o=i,n.diagnostics?.record("debug","chat-kit","history","conversation-prefetch-state",()=>({conversation:r,data:{phase:e,reason:t,attemptedCount:d.size}})))}function f(){l+=1,a=!1,t?.(),t=void 0}function v(){f(),s?.controller.abort(),s=void 0,c=!1,d.clear(),i=null,o=void 0}function p(){return function(n,t){const o=null===t?null:e(t),r=/* @__PURE__ */new Set;return n.filter(n=>{const t=e(n.ref);return!("group"!==n.ref.conversationType&&"channel"!==n.ref.conversationType||t===o||r.has(t)||(r.add(t),0))}).map((e,n)=>({item:e,index:n})).sort((e,n)=>Number(n.item.pinned)-Number(e.item.pinned)||Number(n.item.unreadCount>0)-Number(e.item.unreadCount>0)||e.index-n.index).slice(0,20).map(({item:e})=>({conversationType:e.ref.conversationType,conversationId:e.ref.conversationId}))}(n.getCandidates(),n.getActiveRef()).filter(n=>!d.has(e(n)))}function h(){if(r)return;const o=n.getClient();if(o!==i&&(v(),i=o),!n.getRunnable()||null===i)return f(),s?.controller.abort(),void u("paused",null===i?"client-unavailable":"host-not-ready");if(void 0!==s)return void(c=!0);if(a)return;if(0===p().length)return void u("exhausted","no-candidates");a=!0,u("scheduled");const g=++l,b=n.scheduleIdle(()=>{a&&g===l&&async function(){if(a=!1,t=void 0,r)return;if(!n.getRunnable())return void u("paused","host-not-ready");const o=n.getClient();if(o!==i||null===o)return void h();const l=p()[0];if(void 0!==s)return;if(void 0===l)return void u("exhausted","no-candidates");const f={controller:new AbortController,key:e(l)};s=f,c=!1,d.add(f.key),u("running",void 0,l);let v=!1;try{const e=await o.conversations.prefetchRecent([l],{signal:f.controller.signal});if(s!==f)return;v=e.some(e=>"cancelled"===e.status),v&&d.delete(f.key)}catch(e){s!==f||f.controller.signal.aborted||n.onError(e)}finally{s===f&&(f.controller.signal.aborted&&d.delete(f.key),s=void 0,c||!v&&!f.controller.signal.aborted?h():u("paused",f.controller.signal.aborted?"host-cancelled":"sdk-cancelled"))}}()});a&&(t=b)}return{refresh:h,reset:v,dispose(){r=!0,v()}}}export{n as createConversationPrefetchController};
@@ -0,0 +1 @@
1
+ function e(e){const t=/* @__PURE__ */new Map,s=/* @__PURE__ */new Set,o=e.revokeObjectUrl??(e=>URL.revokeObjectURL(e)),i=e.now??Date.now,r=e.maxIdleMs;if(!Number.isFinite(r)||r<=0)throw new RangeError("maxIdleMs must be a finite positive number");let n,c;function a(){void 0!==n&&clearTimeout(n),n=void 0,c=void 0}function l(){let e=Number.POSITIVE_INFINITY;for(const s of t.values())s.evictable&&0===s.leases&&(e=Math.min(e,s.lastAccessedAt+r));void 0!==n&&c===e||(a(),Number.isFinite(e)&&(c=e,n=setTimeout(()=>{n=void 0,c=void 0,f()},Math.min(2147483647,Math.max(0,e-i()))),n.unref?.()))}function d(e){e.revoked||(e.revoked=!0,s.delete(e),o(e.url))}function v(e){t.get(e.key)===e&&t.delete(e.key),e.retired=!0,0===e.leases?d(e):s.add(e)}function u(){let e=0,s=0;for(const o of t.values())o.evictable&&(e+=1,s+=o.byteSize+(o.videoPoster?.size??0));return{entries:e,bytes:s}}function f(){{const e=i();for(const s of t.values())s.evictable&&0===s.leases&&e-s.lastAccessedAt>=r&&v(s)}!function(){let s=u();for(;s.entries>e.maxCachedEntries||s.bytes>e.maxCachedBytes;){let e;for(const s of t.values())if(s.evictable&&0===s.leases){e=s;break}if(void 0===e)return;v(e),s=u()}}(),l()}function b(e){const s=t.get(e);void 0!==s&&v(s),f()}return{register:function(e,s,o){const r=o.byteSize??0,n=Number.isFinite(r)&&r>0?Math.floor(r):0,c=t.get(e);if(c?.url===s)return c.byteSize=n,c.videoPoster=o.videoPoster,c.evictable=o.evictable,c.lastAccessedAt=i(),t.delete(e),t.set(e,c),void f();void 0!==c&&v(c),t.set(e,{key:e,url:s,byteSize:n,videoPoster:o.videoPoster,evictable:o.evictable,leases:0,retired:!1,revoked:!1,lastAccessedAt:i()}),f()},move:function(e,s){f();const o=t.get(e);if(void 0===o)return!1;const i=t.get(s);return void 0!==i&&i!==o&&v(i),t.delete(e),o.key=s,t.set(s,o),l(),!0},makeEvictable:function(e,s){f();const o=t.get(e);return void 0!==o&&(void 0!==s&&Number.isFinite(s)&&s>0&&(o.byteSize=Math.floor(s)),o.evictable=!0,o.lastAccessedAt=i(),t.delete(e),t.set(e,o),f(),t.get(e)===o)},acquire:function(e){f();const s=t.get(e);if(void 0===s||s.revoked)return;s.leases+=1,s.lastAccessedAt=i(),t.delete(e),t.set(e,s),l();let o=!1;return Object.freeze({url:s.url,...void 0===s.videoPoster?{}:{videoPoster:s.videoPoster},release(){o||(o=!0,s.leases=Math.max(0,s.leases-1),0!==s.leases||s.revoked||(s.lastAccessedAt=i()),s.retired&&0===s.leases&&d(s),f())}})},has:e=>(f(),t.has(e)&&!t.get(e).revoked),remove:b,removeByPrefix:function(e){for(const s of[...t.keys()])s.startsWith(e)&&b(s)},clearAll:function(){a();const e=[...t.values()];t.clear();for(const t of[...e,...s])d(t);s.clear()},clearCached:function(){for(const e of t.values())e.evictable&&v(e);f()},prune:f,getStats:()=>(f(),Object.freeze({activeEntries:t.size,retiredEntries:s.size,...u()}))}}export{e as createMediaObjectUrlRegistry};
@@ -0,0 +1 @@
1
+ function e(e){const t=e.getGeneration();return Object.freeze({isCurrent:()=>e.getGeneration()===t})}function t(e){const t=e.getClient();if(null===t)return null;const n=e.getGeneration();return Object.freeze({client:t,isCurrent:()=>e.getGeneration()===n&&e.getClient()===t})}export{t as captureRuntimeClientOperation,e as captureRuntimeOperation};
@@ -0,0 +1 @@
1
+ import{isPinnedMessageProtected as e}from"./pinned-message-rules.js";import{canEditMessage as n,canRecallMessage as r}from"./profile-display.js";import{EDIT_WINDOW_MS as a}from"../../../im-core/src/message-flow/edit/edit-manager.js";import{resolveSessionFavoriteKindFromMessage as t}from"../../../im-sdk/src/product/session-favorites.js";import{canTransmit as o,canTransmitContent as s}from"../../../im-core/src/message-flow/forward/can-transmit.js";import{canReactToMessage as i}from"../../../im-core/src/message-flow/reaction/can-react.js";const c=Object.freeze({availability:"available",reason:"ok"});function u(e){return Object.freeze({availability:"unavailable",reason:e})}function l(e){if("sent"!==e.status||void 0!==e.recalled||void 0!==e.deletedForEveryone||"system"===e.contentType)return u("unsupported-type")}function p(e){return"channel"===e.conversationType?e.value.canMutateMessages:(e.conversationType,e.value.canUseMessageActions)}function v(e,n,r={}){return"available"===n.availability?"":"direct"===e?"target"!==r.mode?"":"blocked"===n.reason||"not-friend"===n.reason?"directBlock.contactRequired":"":"group"===e?"left"===n.reason?"groupBlock.left":"removed"===n.reason?"groupBlock.removed":"dismissed"===n.reason?"groupBlock.dismissed":"groupBlock.unknownRestricted":"channel"===e?"guest"===n.reason?"channelBlock.guest":"left"===n.reason?"channelBlock.left":"removed"===n.reason?"channelBlock.removed":"dismissed"===n.reason?"channelBlock.dismissed":"muted-all"===n.reason?"channelBlock.allMembersMuted":"muted-self"===n.reason?"channelBlock.currentUserMuted":"muted"===n.reason?"channelBlock.muted":"blacklisted"===n.reason?"channelBlock.blacklisted":"channelBlock.unknownRestricted":""}function d(e,n){if("customerService"===e.conversationType)return"conversation.readHistory"===n?c:u("unsupported-type");switch(n){case"conversation.openProfile":return"direct"===e.conversationType||e.conversationType,e.value.canOpenProfile;case"conversation.readHistory":return"direct"===e.conversationType?c:e.value.canReadHistory;case"conversation.listPreferences":return"channel"===e.conversationType?"muted"===e.value.state?c:e.value.canOpenProfile:"group"===e.conversationType?e.value.canOpenProfile:c;case"composer.send":return e.value.canSendMessages;case"composer.mentionAll":return"channel"===e.conversationType?e.value.canMentionAll:c;case"profile.edit":return"channel"===e.conversationType||"group"===e.conversationType?e.value.canEditProfile:c;case"relationship.manage":return"direct"===e.conversationType?e.value.canManageRelationship:u("unsupported-type");case"members.view":return"channel"===e.conversationType||"group"===e.conversationType?e.value.canViewMembers:u("unsupported-type");case"members.manage":return"channel"===e.conversationType||"group"===e.conversationType?e.value.canManageMembers:u("unsupported-type");case"members.invite":return"channel"===e.conversationType||"group"===e.conversationType?e.value.canInviteMembers:u("unsupported-type");case"members.remove":return"channel"===e.conversationType?e.value.canRemoveMembers:"group"===e.conversationType?e.value.canManageMembers:u("unsupported-type");case"members.setAdmin":return"channel"===e.conversationType?e.value.canSetMemberAdmin:u("unsupported-type");case"ownership.transfer":return"channel"===e.conversationType||"group"===e.conversationType?e.value.canTransferOwnership:u("unsupported-type");case"conversation.leave":return"channel"===e.conversationType||"group"===e.conversationType?e.value.canLeave:u("unsupported-type");case"channel.manageMute":return"channel"===e.conversationType?e.value.canManageMute:u("unsupported-type");case"channel.setMemberPrivateChat":return"channel"===e.conversationType?e.value.canSetMemberPrivateChat:u("unsupported-type");case"channel.dismiss":return"channel"===e.conversationType?e.value.canDismiss:u("unsupported-type")}}function m(v,d){if("customerService"===d.snapshot.conversationType)return u("unsupported-type");const{message:m,pinnedMessage:y,selfId:f,snapshot:g,nowMs:T=Date.now()}=d;if(!function(e,n){return e.ref.conversationType===n.conversationType&&e.ref.conversationId===n.conversationId}(g,m))return u("unsupported-type");const b=e(y,m);switch(v){case"message.react":return"sent"===m.status&&i(m)?"channel"===g.conversationType?g.value.canSendMessages:c:u("unsupported-type");case"message.forward":{const e=l(m);return void 0!==e?e:o(m)?c:u("unsupported-type")}case"message.favorite":{const e=l(m);return void 0!==e?e:!0===m.encryption?.decryptFailed?u("unsupported-type"):null!==t(m)?c:u("unsupported-type")}case"message.multiSelect":{const e=l(m);return void 0!==e?e:b?u("message-protected"):c}case"message.reply":{const e=l(m);return void 0!==e?e:"direct"===g.conversationType?c:p(g)}case"message.recall":return b?u("message-protected"):"direct"===g.conversationType?r(m,f,T)?c:u("role-insufficient"):"available"!==p(g).availability?p(g):r(m,f,T)?c:u("role-insufficient");case"message.edit":return b?u("message-protected"):"direct"===g.conversationType?n(m,f,a,T)?c:u("role-insufficient"):"available"!==p(g).availability?p(g):n(m,f,a,T)?c:u("role-insufficient");case"message.pin":return b?u("message-protected"):function(e){return"sent"===e.status&&void 0===e.recalled&&void 0===e.deletedForEveryone&&!0!==e.encryption.decryptFailed&&["text","image","video","voice","file","filesAlbum","miniProgram","game","mediaAlbum","liveRoom"].includes(e.contentType)&&("filesAlbum"!==e.contentType||s(e))}(m)&&("group"===g.conversationType||"channel"===g.conversationType)?g.value.canPinMessages:u("unsupported-type");case"message.unpin":return"group"===g.conversationType||"channel"===g.conversationType?g.value.canUnpinMessages:u("unsupported-type");case"message.deleteLocal":{if(b)return u("message-protected");const e=l(m);return void 0!==e?e:"unknown"===m.contentType?u("unsupported-type"):"direct"===g.conversationType||"group"===g.conversationType?c:u("unsupported-type")}case"message.deleteForEveryone":return b?u("message-protected"):"channel"!==g.conversationType?u("unsupported-type"):function(e){return"sent"===e.status&&void 0===e.recalled&&void 0===e.deletedForEveryone}(m)?g.value.canDeleteMessagesForEveryone:u("unsupported-type")}}function y(e,n){const{selfId:r,snapshot:a,targetRole:t="unknown",targetUserId:o}=n;if(""===o||o===r)return u("role-insufficient");if("group"===a.conversationType){if("members.removeTarget"!==e)return u("unsupported-type");const n=a.value.canManageMembers;return"available"!==n.availability?n:void 0!==a.value.ownerId&&o===a.value.ownerId?u("role-insufficient"):c}if("channel"!==a.conversationType)return u("unsupported-type");if("members.removeTarget"===e||"members.editNicknameTarget"===e){const e=a.value.canRemoveMembers;return"available"!==e.availability?e:"owner"===a.value.role?"member"===t||"admin"===t?c:u("role-insufficient"):"admin"===a.value.role&&"member"===t?c:u("role-insufficient")}const s=a.value.canSetMemberAdmin;return"available"!==s.availability?s:"owner"!==a.value.role?u("role-insufficient"):"members.setAdminTarget"===e?"member"===t?c:u("role-insufficient"):"admin"===t?c:u("role-insufficient")}export{d as decideConversationAction,y as decideMemberTargetAction,m as decideMessageAction,v as sendBlockReasonForDecision};
@@ -0,0 +1 @@
1
+ import{decideMemberTargetAction as e}from"./capabilities.js";function r(e){return Object.freeze({conversationType:"channel",conversationId:e.conversationId.trim()})}function n(e){return Object.freeze({userId:e.userId.trim(),role:e.role})}function t(e,r,n,t){return Object.freeze({ok:!1,operation:e,conversation:r,outcome:n,stale:"stale"===n,projectionUpdated:!1,refreshRequired:!1,...void 0===t?{}:{error:t}})}function o(e,r){return t(e,r,"failed",Object.freeze({code:"IM_CHAT_KIT_CHANNEL_MEMBER_MANAGEMENT_INVALID_INPUT",category:"validation",operation:`channel-member-management.${e}`,retryable:!1,conversation:r}))}function a(e,r,n){return Object.freeze({code:"IM_CHAT_KIT_CHANNEL_MEMBER_MANAGEMENT_UNAVAILABLE",category:"unavailable"===n.availability?"permission":"state",operation:`channel-member-management.${e}`,retryable:"unknown"===n.availability,conversation:r})}function i(e,r){return void 0!==r&&""!==r.userId&&r.userId!==e.getCredentials().userId&&("member"===r.role||"admin"===r.role)}function s(n,s,c,d){const u=r(c);if(""===u.conversationId)return{ok:!1,result:o(s,u)};const l=n.getProductClient();if(null===l)return{ok:!1,result:t(s,u,"not-ready")};const m=n.getGeneration(),v=function(r,n,t,o,a){const s=n.capabilities.get(t);if("channel"!==s.conversationType||s.ref.conversationId!==t.conversationId)return Object.freeze({availability:"unknown",reason:"not-ready"});if("invite-members"===o)return s.value.canInviteMembers;if("remove-member"===o)return void 0===a?Object.freeze({availability:"unknown",reason:"not-ready"}):e("members.removeTarget",{snapshot:s,selfId:r.getCredentials().userId,targetUserId:a.userId,targetRole:a.role});if("add-admin"===o||"remove-admin"===o)return void 0===a?Object.freeze({availability:"unknown",reason:"not-ready"}):e("add-admin"===o?"members.setAdminTarget":"members.unsetAdminTarget",{snapshot:s,selfId:r.getCredentials().userId,targetUserId:a.userId,targetRole:a.role});if("transfer-ownership"===o)return i(r,a)?s.value.canTransferOwnership:Object.freeze({availability:"unavailable",reason:"role-insufficient"});if("leave"===o){if(void 0===a)return s.value.canLeave;const e=s.value.canLeave;return"available"!==e.availability?e:i(r,a)?s.value.canTransferOwnership:Object.freeze({availability:"unavailable",reason:"role-insufficient"})}return s.value.canDismiss}(n,l,u,s,d);return"available"!==v.availability?{ok:!1,result:t(s,u,"not-allowed",a(s,u,v))}:{ok:!0,captured:Object.freeze({client:l,conversation:u,isCurrent:()=>n.getGeneration()===m&&n.getProductClient()===l})}}async function c(e,r,n,o,a){const i=s(e,r,n,a);if(!i.ok)return i.result;try{const e=await o(i.captured);return i.captured.isCurrent()?e:t(r,i.captured.conversation,"stale")}catch(e){if(!i.captured.isCurrent())return t(r,i.captured.conversation,"stale");const n=function(e,r,n){const t="object"==typeof e&&null!==e?e:null;return Object.freeze({code:null!==t&&"string"==typeof t.code?t.code:"IM_CHAT_KIT_CHANNEL_MEMBER_MANAGEMENT_FAILED",category:null!==t&&(o=t.category,"auth"===o||"network"===o||"protocol"===o||"permission"===o||"validation"===o||"state"===o||"unsupported"===o||"contract"===o)?t.category:"state",operation:`channel-member-management.${r}`,retryable:!0===t?.retryable,conversation:n});var o}(e,r,i.captured.conversation),o="leave"===r&&"IM_SDK_CHANNEL_OWNER_TRANSFER_REQUIRED"===n.code?"transfer-required":"failed";return t(r,i.captured.conversation,o,n)}}function d(e,n,t){const a=r(n),i=function(e){return Object.freeze([...new Set(e.map(e=>e.trim()).filter(Boolean))])}(t);return 0===i.length?Promise.resolve(o("invite-members",a)):c(e,"invite-members",a,async({client:e})=>(await e.channels.inviteMembers(a,i),Object.freeze({ok:!0,operation:"invite-members",conversation:a,outcome:"invited",memberIds:i,stale:!1,projectionUpdated:!1,refreshRequired:!0})))}function u(e,t,a){const i=r(t),s=n(a);return""===s.userId?Promise.resolve(o("remove-member",i)):c(e,"remove-member",i,async({client:e})=>(await e.channels.removeMember(i,s.userId),Object.freeze({ok:!0,operation:"remove-member",conversation:i,outcome:"removed",memberId:s.userId,stale:!1,projectionUpdated:!1,refreshRequired:!0})),s)}function l(e,t,a,i){const s=r(t),d=n(a),u=i?"add-admin":"remove-admin";return""===d.userId?Promise.resolve(o(u,s)):c(e,u,s,async({client:e})=>(i?await e.channels.addAdmin(s,d.userId):await e.channels.removeAdmin(s,d.userId),Object.freeze({ok:!0,operation:u,conversation:s,outcome:i?"admin-added":"admin-removed",memberId:d.userId,stale:!1,projectionUpdated:!1,refreshRequired:!0})),d)}function m(e,r,n){return l(e,r,n,!0)}function v(e,r,n){return l(e,r,n,!1)}function f(e,t,a){const i=r(t),s=n(a);return""===s.userId?Promise.resolve(o("transfer-ownership",i)):c(e,"transfer-ownership",i,async({client:e})=>(await e.channels.transferOwnership(i,s.userId),Object.freeze({ok:!0,operation:"transfer-ownership",conversation:i,outcome:"transferred",ownerId:s.userId,stale:!1,projectionUpdated:!1,refreshRequired:!0})),s)}function b(e,t,a){const i=r(t),s=void 0===a?void 0:n(a);return void 0!==s&&""===s.userId?Promise.resolve(o("leave",i)):c(e,"leave",i,async({client:e})=>(await e.channels.leave(i,void 0===s?void 0:{newOwnerId:s.userId}),Object.freeze({ok:!0,operation:"leave",conversation:i,outcome:"left",...void 0===s?{}:{newOwnerId:s.userId},stale:!1,projectionUpdated:!1,refreshRequired:!1})),s)}function p(e,n){const t=r(n);return c(e,"dismiss",t,async({client:e})=>(await e.channels.dismiss(t),Object.freeze({ok:!0,operation:"dismiss",conversation:t,outcome:"dismissed",stale:!1,projectionUpdated:!1,refreshRequired:!1})))}export{m as executeAddChannelAdmin,p as executeDismissChannel,d as executeInviteChannelMembers,b as executeLeaveChannel,v as executeRemoveChannelAdmin,u as executeRemoveChannelMember,f as executeTransferChannelOwnership};
@@ -0,0 +1 @@
1
+ import{decideMemberTargetAction as e}from"./capabilities.js";function t(e){return Object.freeze({conversationType:"channel",conversationId:e.conversationId.trim()})}function n(e,t,n,r){return Object.freeze({ok:!1,operation:e,conversation:t,outcome:n,stale:"stale"===n,projectionUpdated:!1,refreshRequired:!1,...void 0===r?{}:{error:r}})}function r(e,t){return n(e,t,"failed",Object.freeze({code:"IM_CHAT_KIT_CHANNEL_PROFILE_INVALID_INPUT",category:"validation",operation:`channel-profile.${e}`,retryable:!1,conversation:t}))}function a(e,t,n){return Object.freeze({code:"IM_CHAT_KIT_CHANNEL_PROFILE_ACTION_UNAVAILABLE",category:"unavailable"===n.availability?"permission":"state",operation:`channel-profile.${e}`,retryable:"unknown"===n.availability,conversation:t})}function o(o,i,c,s){const u=t(c);if(""===u.conversationId)return{ok:!1,result:r(i,u)};const d=o.getProductClient();if(null===d)return{ok:!1,result:n(i,u,"not-ready")};const l=o.getGeneration(),p=function(t,n,r,a,o){const i=n.capabilities.get(r);return"channel"!==i.conversationType||i.ref.conversationId!==r.conversationId?Object.freeze({availability:"unknown",reason:"not-ready"}):"set-my-nickname"===a?i.value.canLeave:"set-member-nickname"===a?void 0===o?Object.freeze({availability:"unknown",reason:"not-ready"}):e("members.editNicknameTarget",{snapshot:i,selfId:t.getCredentials().userId,targetUserId:o.userId,targetRole:o.role}):"set-all-muted"===a?i.value.canManageMute:"set-member-private-chat-disabled"===a?i.value.canSetMemberPrivateChat:i.value.canEditProfile}(o,d,u,i,s);return"available"!==p.availability?{ok:!1,result:n(i,u,"not-allowed",a(i,u,p))}:{ok:!0,captured:Object.freeze({client:d,conversation:u,isCurrent:()=>o.getGeneration()===l&&o.getProductClient()===d})}}async function i(e,t,r,a,i){const c=o(e,t,r,i);if(!c.ok)return c.result;try{const e=await a(c.captured);return c.captured.isCurrent()?e:n(t,c.captured.conversation,"stale")}catch(e){return c.captured.isCurrent()?n(t,c.captured.conversation,"failed",function(e,t,n){const r="object"==typeof e&&null!==e?e:null;return Object.freeze({code:null!==r&&"string"==typeof r.code?r.code:"IM_CHAT_KIT_CHANNEL_PROFILE_OPERATION_FAILED",category:null!==r&&(a=r.category,"auth"===a||"network"===a||"protocol"===a||"permission"===a||"validation"===a||"state"===a||"unsupported"===a||"contract"===a)?r.category:"state",operation:`channel-profile.${t}`,retryable:!0===r?.retryable,conversation:n});var a}(e,t,c.captured.conversation)):n(t,c.captured.conversation,"stale")}}function c(e,n,a){const o=t(n),i=a.trim();return""===i||[...i].length>15?{ok:!1,result:r(e,o)}:{ok:!0,value:i}}function s(e,n,a){const o=a.trim();return""===o?Promise.resolve(r("update-name",t(n))):i(e,"update-name",n,async({client:e,conversation:t})=>(await e.channels.updateName(t,o),Object.freeze({ok:!0,operation:"update-name",conversation:t,outcome:"updated",stale:!1,projectionUpdated:!1,refreshRequired:!1})))}function u(e,n,a){const o=a.trim();return""===o||[...o].length>100?Promise.resolve(r("update-description",t(n))):i(e,"update-description",n,async({client:e,conversation:t})=>(await e.channels.updateDescription(t,o),Object.freeze({ok:!0,operation:"update-description",conversation:t,outcome:"updated",stale:!1,projectionUpdated:!1,refreshRequired:!1})))}function d(e,t,n){return i(e,"update-avatar",t,async({client:e,conversation:t})=>{const a=(await e.channels.updateAvatar(t,n)).trim();return""===a?r("update-avatar",t):Object.freeze({ok:!0,operation:"update-avatar",conversation:t,outcome:"updated",avatar:a,stale:!1,projectionUpdated:!1,refreshRequired:!1})})}function l(e,t,n){const r=c("set-my-nickname",t,n);return r.ok?i(e,"set-my-nickname",t,async({client:t,conversation:n})=>(await t.channels.setMyNickname(n,r.value),Object.freeze({ok:!0,operation:"set-my-nickname",conversation:n,outcome:"updated",memberId:e.getCredentials().userId,stale:!1,projectionUpdated:!1,refreshRequired:!1}))):Promise.resolve(r.result)}function p(e,n,a,o,s){const u=a.trim(),d=c("set-member-nickname",n,s);if(""===u||!d.ok)return Promise.resolve(d.ok?r("set-member-nickname",t(n)):d.result);return i(e,"set-member-nickname",n,async({client:e,conversation:t})=>(await e.channels.setMemberNickname(t,u,d.value),Object.freeze({ok:!0,operation:"set-member-nickname",conversation:t,outcome:"updated",memberId:u,stale:!1,projectionUpdated:!1,refreshRequired:!1})),Object.freeze({userId:u,role:o}))}function m(e,t,n,r){return i(e,"update-verification",t,async({client:e,conversation:t})=>(await e.channels.updateVerification(t,n,r),Object.freeze({ok:!0,operation:"update-verification",conversation:t,outcome:"updated",stale:!1,projectionUpdated:!1,refreshRequired:!1})))}function v(e,t,n){return i(e,"set-all-muted",t,async({client:e,conversation:t})=>(await e.channels.setAllMuted(t,n),Object.freeze({ok:!0,operation:"set-all-muted",conversation:t,outcome:"updated",muted:n,stale:!1,projectionUpdated:!1,refreshRequired:!1})))}function f(e,t,n){return i(e,"set-member-private-chat-disabled",t,async({client:e,conversation:t})=>(await e.channels.setMemberPrivateChatDisabled(t,n),Object.freeze({ok:!0,operation:"set-member-private-chat-disabled",conversation:t,outcome:"updated",disabled:n,stale:!1,projectionUpdated:!1,refreshRequired:!1})))}export{v as executeSetChannelAllMuted,p as executeSetChannelMemberNickname,f as executeSetChannelMemberPrivateChatDisabled,l as executeSetMyChannelNickname,d as executeUpdateChannelAvatar,u as executeUpdateChannelDescription,s as executeUpdateChannelName,m as executeUpdateChannelVerification};
@@ -0,0 +1 @@
1
+ import{resolveChannelAccess as e}from"../../../im-core/src/state/channel-permissions.js";function n(e){if(void 0===e||"active"===e)return"";switch(e){case"guest":return"channelBlock.guest";case"left":return"channelBlock.left";case"removed":return"channelBlock.removed";case"dismissed":return"channelBlock.dismissed";case"muted":return"channelBlock.muted";case"blacklisted":return"channelBlock.blacklisted";case"unknown_restricted":return"channelBlock.unknownRestricted"}}function c(c,t=Date.now()){if(void 0===c?.channelState)return"channelBlock.unknownRestricted";const s=e({channelState:c.channelState,snapshot:c.channelAccessSnapshot,permissions:c.channelPermissions,nowMs:t});return"muted"===s.channelState?"all-members"===s.muteReason?"channelBlock.allMembersMuted":"current-user"===s.muteReason?"channelBlock.currentUserMuted":"channelBlock.muted":"active"!==s.channelState?n(s.channelState)||"channelBlock.unknownRestricted":s.permissions.sendMessages?"":"channelBlock.unknownRestricted"}export{c as blockReasonForChannelSession,n as blockReasonForChannelState};
@@ -0,0 +1 @@
1
+ function e(e,t,r){const o="object"==typeof e&&null!==e?e:null;return Object.freeze({code:null!==o&&"string"==typeof o.code?o.code:"IM_CHAT_KIT_DIRECT_CONTACT_OPERATION_FAILED",category:null!==o&&(n=o.category,"auth"===n||"network"===n||"protocol"===n||"permission"===n||"validation"===n||"state"===n||"unsupported"===n||"contract"===n)?o.category:"state",operation:`direct-contact.${t}`,retryable:!0===o?.retryable,...null===r?{}:{conversation:r}});var n}function t(e,t,r,o){return Object.freeze({ok:!1,operation:e,conversation:t,outcome:r,stale:"stale"===r,projectionUpdated:!1,refreshRequired:!1,...void 0===o?{}:{error:o}})}function r(e,t){return Object.freeze({code:"IM_CHAT_KIT_DIRECT_CONTACT_INVALID_INPUT",category:"validation",operation:`direct-contact.${e}`,retryable:!1,...null===t?{}:{conversation:t}})}async function o(r,o,n,a){const s=function(e){const t=e.getProductClient();if(null===t)return null;const r=e.getGeneration();return Object.freeze({client:t,isCurrent:()=>e.getGeneration()===r&&e.getProductClient()===t})}(r);if(null===s)return{ok:!1,result:t(o,n,"not-ready")};try{const e=await a(s.client);return s.isCurrent()?{ok:!0,value:e}:{ok:!1,result:t(o,n,"stale")}}catch(r){return s.isCurrent()?{ok:!1,result:t(o,n,"failed",e(r,o,n))}:{ok:!1,result:t(o,n,"stale")}}}function n(e,o){const n=function(e){return Object.freeze({conversationType:"direct",conversationId:e.conversationId.trim()})}(o);return""===n.conversationId?{ok:!1,result:t(e,n,"failed",r(e,n))}:{ok:!0,conversation:n}}async function a(e,t,r){const a=n("set-remark",t);if(!a.ok)return a.result;const{conversation:s}=a,i=await o(e,"set-remark",s,e=>e.contacts.setRemark(s.conversationId,Object.freeze({...void 0===r.name?{}:{name:r.name},...void 0===r.emails?{}:{emails:Object.freeze([...r.emails])},...void 0===r.phones?{}:{phones:Object.freeze(r.phones.map(e=>Object.freeze({countryCode:e.countryCode,mobile:e.mobile})))}})));return i.ok?Object.freeze({ok:!0,operation:"set-remark",conversation:s,outcome:"updated",stale:!1,projectionUpdated:!1,refreshRequired:!1}):i.result}async function s(e,t){const r=n("block",t);if(!r.ok)return r.result;const{conversation:a}=r,s=await o(e,"block",a,e=>e.contacts.blockUser(a.conversationId));return s.ok?Object.freeze({ok:!0,operation:"block",conversation:a,outcome:"blocked",stale:!1,projectionUpdated:!1,refreshRequired:!1}):s.result}async function i(e,a,s){const i=n("report",a);if(!i.ok)return i.result;const{conversation:c}=i,u=s.trim();if(""===u)return t("report",c,"failed",r("report",c));const l=await o(e,"report",c,e=>e.contacts.reportUser(c.conversationId,u));return l.ok?Object.freeze({ok:!0,operation:"report",conversation:c,outcome:"reported",stale:!1,projectionUpdated:!1,refreshRequired:!1}):l.result}async function c(e,t){const r=n("delete-friendship",t);if(!r.ok)return r.result;const{conversation:a}=r,s=await o(e,"delete-friendship",a,e=>e.contacts.deleteFriendship(a.conversationId));return s.ok?Object.freeze({ok:!0,operation:"delete-friendship",conversation:a,outcome:"deleted",stale:!1,projectionUpdated:!1,refreshRequired:!1}):s.result}async function u(e,n){const a=n.trim();if(""===a)return t("search-user",null,"failed",r("search-user",null));const s=await o(e,"search-user",null,e=>e.contacts.searchUser(a));if(!s.ok)return s.result.ok||s.result.stale||"IM_SDK_CONTACT_SEARCH_NO_MATCH"!==s.result.error?.code?s.result:Object.freeze({ok:!0,operation:"search-user",conversation:null,outcome:"not-found",target:null,stale:!1,projectionUpdated:!1,refreshRequired:!1});const i=s.value,c=null===i?null:(u=i.userId,Object.freeze({conversationType:"direct",conversationId:u.trim()}));var u;return Object.freeze({ok:!0,operation:"search-user",conversation:c,outcome:null===i?"not-found":"found",target:i,stale:!1,projectionUpdated:!1,refreshRequired:!1})}async function l(e,t){const a=n("resolve-application-target",t);if(!a.ok)return a.result;const{conversation:s}=a,i=await o(e,"resolve-application-target",s,async e=>{const[t,o]=await Promise.all([e.contacts.getProfile(s.conversationId),e.contacts.getRelationship(s.conversationId)]);if(null===t)return null;if(t.userId!==s.conversationId)throw r("resolve-application-target",s);return Object.freeze({userId:t.userId,displayName:t.displayName,nickname:t.nickname,relationship:o,...void 0===t.avatar?{}:{avatarUrl:t.avatar},...void 0===t.miCallId?{}:{miCallId:t.miCallId},...void 0===t.signature?{}:{signature:t.signature},...void 0===t.age?{}:{age:t.age}})});return i.ok?Object.freeze({ok:!0,operation:"resolve-application-target",conversation:s,outcome:null===i.value?"not-found":"found",target:i.value,stale:!1,projectionUpdated:!1,refreshRequired:!1}):i.result}async function d(e,t,r){const a=n("request-friendship",t);if(!a.ok)return a.result;const{conversation:s}=a,i=await o(e,"request-friendship",s,e=>e.contacts.requestFriendship(s.conversationId,Object.freeze({message:r.message,...void 0===r.remark?{}:{remark:r.remark}})));return i.ok?Object.freeze({ok:!0,operation:"request-friendship",conversation:s,outcome:i.value.status,stale:!1,projectionUpdated:!1,refreshRequired:!1}):i.result}export{s as executeBlockDirectContact,c as executeDeleteDirectFriendship,i as executeReportDirectContact,d as executeRequestDirectFriendship,l as executeResolveDirectContactTarget,u as executeSearchDirectContact,a as executeSetDirectContactRemark};
@@ -0,0 +1 @@
1
+ import{sendBlockReasonFor as e}from"./send.service.js";import{canTransmit as t}from"../../../im-core/src/message-flow/forward/can-transmit.js";function o(e){const t=e?.code;return"string"==typeof t&&""!==t?t:"unknown"}function r(e,t){const o=e;return"string"==typeof o?.code&&"string"==typeof o.category&&"string"==typeof o.operation&&"boolean"==typeof o.retryable?o:Object.freeze({code:"IM_CHAT_KIT_FORWARD_FAILED",category:"state",operation:"message-operations.forward",retryable:!1,conversation:Object.freeze({...t.ref}),cause:e})}async function n(o,n){const s="forward";if(null===o.getProductClient()||"authenticated"!==o.getConnectionState()||void 0===n.handle||(a=n.handle,!n.messages.every(e=>"supergroup"!==e.conversationType&&e.conversationType===a.ref.conversationType&&e.conversationId===a.ref.conversationId)))return Object.freeze({ok:!1,operation:s,reason:"not-ready"});var a;if(0===n.messages.length||0===n.targets.length)return Object.freeze({ok:!1,operation:s,reason:"empty-input"});for(const t of n.targets){const r=e(o,t.conversationId,t.conversationType,{mode:"target"});if(""!==r)return Object.freeze({ok:!1,operation:s,reason:"target-blocked",blockReason:r})}const i=n.messages.filter(t),c=n.messages.length-i.length;if(0===i.length)return Object.freeze({ok:!1,operation:s,reason:"all-skipped",skippedCount:c});const d=o.getGeneration();let l;try{l=await n.handle.messages.forward(i.map(e=>e.id),n.targets)}catch(e){return o.getGeneration()!==d?Object.freeze({ok:!1,operation:s,reason:"stale"}):Object.freeze({ok:!1,operation:s,reason:"sdk-rejected",error:r(e,n.handle)})}if(o.getGeneration()!==d)return Object.freeze({ok:!1,operation:s,reason:"stale"});const f=l.sent.length,p=c+l.skippedSourceMessageIds.length;return 0===f?Object.freeze({ok:!1,operation:s,reason:l.failed.length>0?"sdk-rejected":"all-skipped",...void 0===l.failed[0]?{}:{error:l.failed[0].error},result:l,skippedCount:p}):Object.freeze({ok:!0,operation:s,result:l,sentCount:f,skippedCount:p})}async function s(r,n,s){if(null===r.getClient())return s.setNote(s.t("common.notConnected")),null;if(0===n.messages.length||0===n.targets.length)return s.setNote(s.t("forward.emptyInput")),null;const a=function(e,t){const o=e.getConversationHandle();if(void 0!==o)return t.every(e=>"supergroup"!==e.conversationType&&e.conversationType===o.ref.conversationType&&e.conversationId===o.ref.conversationId)?o:void 0}(s,n.messages);if(void 0===a)return s.setNote(s.t("common.conversationNotReady")),null;for(const t of n.targets){const o=e(r,t.conversationId,t.conversationType,{mode:"target"});if(""!==o)return s.setNote(s.t(o)),null}const i=n.messages.filter(t),c=n.messages.length-i.length;if(0===i.length)return s.setNote(s.t("forward.allSkipped")),null;const d=r.getGeneration();let l;try{l=await a.messages.forward(i.map(e=>e.id),n.targets)}catch(e){return r.getGeneration()===d&&s.getConversationHandle()===a&&s.setNote(s.t("forward.failed",{reason:o(e)})),null}if(r.getGeneration()!==d||s.getConversationHandle()!==a)return l;const f=l.sent.length,p=c+l.skippedSourceMessageIds.length;if(0===f){const e=l.failed[0];void 0!==e?s.setNote(s.t("forward.failed",{reason:e.error.code})):p>0?s.setNote(s.t("forward.allSkipped")):s.setNote(s.t("forward.failed",{reason:"unknown"}))}else p>0?s.setNote(s.t("forward.partialSkipped",{skipped:p,ok:f})):s.setNote(s.t("forward.done"));return s.refreshActiveMessages?.(),l}export{n as executeForwardMessages,s as forwardMessages};
@@ -0,0 +1 @@
1
+ function e(e){return Object.freeze({conversationType:"group",conversationId:e.conversationId.trim()})}function r(e,r,t,n){return Object.freeze({ok:!1,operation:e,conversation:r,outcome:t,stale:"stale"===t,projectionUpdated:!1,refreshRequired:!1,...void 0===n?{}:{error:n}})}function t(e,t){return r(e,t,"failed",Object.freeze({code:"IM_CHAT_KIT_GROUP_MEMBER_MANAGEMENT_INVALID_INPUT",category:"validation",operation:`group-member-management.${e}`,retryable:!1,conversation:t}))}function n(e,r,t){return Object.freeze({code:"IM_CHAT_KIT_GROUP_MEMBER_MANAGEMENT_UNAVAILABLE",category:"unavailable"===t.availability?"permission":"state",operation:`group-member-management.${e}`,retryable:"unknown"===t.availability,conversation:r})}function o(o,a,i,c=!1){const s=e(i);if(""===s.conversationId)return{ok:!1,result:t(a,s)};const u=o.getProductClient();if(null===u)return{ok:!1,result:r(a,s,"not-ready")};const l=o.getGeneration(),v=function(e,r,t,n){const o=e.capabilities.get(r);if("group"!==o.conversationType||o.ref.conversationId!==r.conversationId)return Object.freeze({availability:"unknown",reason:"not-ready"});if("invite-members"===t)return o.value.canInviteMembers;if("remove-member"===t)return o.value.canManageMembers;if("transfer-ownership"===t)return o.value.canTransferOwnership;const a=o.value.canLeave;return"available"===a.availability&&n?o.value.canTransferOwnership:a}(u,s,a,c);return"available"!==v.availability?{ok:!1,result:r(a,s,"not-allowed",n(a,s,v))}:{ok:!0,captured:Object.freeze({client:u,conversation:s,isCurrent:()=>o.getGeneration()===l&&o.getProductClient()===u})}}async function a(e,t,n,a,i=!1){const c=o(e,t,n,i);if(!c.ok)return c.result;try{const e=await a(c.captured);return c.captured.isCurrent()?e:r(t,c.captured.conversation,"stale")}catch(e){if(!c.captured.isCurrent())return r(t,c.captured.conversation,"stale");const n=function(e,r,t){const n="object"==typeof e&&null!==e?e:null;return Object.freeze({code:null!==n&&"string"==typeof n.code?n.code:"IM_CHAT_KIT_GROUP_MEMBER_MANAGEMENT_FAILED",category:null!==n&&(o=n.category,"auth"===o||"network"===o||"protocol"===o||"permission"===o||"validation"===o||"state"===o||"unsupported"===o||"contract"===o)?n.category:"state",operation:`group-member-management.${r}`,retryable:!0===n?.retryable,conversation:t});var o}(e,t,c.captured.conversation),o="leave"===t&&"IM_SDK_GROUP_OWNER_TRANSFER_REQUIRED"===n.code?"transfer-required":"failed";return r(t,c.captured.conversation,o,n)}}function i(r,n,o){const i=e(n),c=function(e){return Object.freeze([...new Set(e.map(e=>e.trim()).filter(Boolean))])}(o);return 0===c.length?Promise.resolve(t("invite-members",i)):a(r,"invite-members",i,async({client:e})=>(await e.groups.inviteMembers(i,c),Object.freeze({ok:!0,operation:"invite-members",conversation:i,outcome:"invited",memberIds:c,stale:!1,projectionUpdated:!1,refreshRequired:!0})))}function c(r,n,o){const i=e(n),c=o.trim();return""===c?Promise.resolve(t("remove-member",i)):a(r,"remove-member",i,async({client:e})=>(await e.groups.removeMember(i,c),Object.freeze({ok:!0,operation:"remove-member",conversation:i,outcome:"removed",memberId:c,stale:!1,projectionUpdated:!1,refreshRequired:!0})))}function s(r,n,o){const i=e(n),c=o.trim();return""===c?Promise.resolve(t("transfer-ownership",i)):a(r,"transfer-ownership",i,async({client:e})=>(await e.groups.transferOwnership(i,c),Object.freeze({ok:!0,operation:"transfer-ownership",conversation:i,outcome:"transferred",ownerId:c,stale:!1,projectionUpdated:!1,refreshRequired:!0})))}function u(r,n,o={}){const i=e(n),c=o.newOwnerId?.trim();return void 0!==o.newOwnerId&&""===c?Promise.resolve(t("leave",i)):a(r,"leave",i,async({client:e})=>(await e.groups.leave(i,void 0===c?void 0:{newOwnerId:c}),Object.freeze({ok:!0,operation:"leave",conversation:i,outcome:"left",...void 0===c?{}:{newOwnerId:c},stale:!1,projectionUpdated:!1,refreshRequired:!1})),void 0!==c)}export{i as executeInviteGroupMembers,u as executeLeaveGroup,c as executeRemoveGroupMember,s as executeTransferGroupOwnership};
@@ -0,0 +1 @@
1
+ function e(e){return Object.freeze({conversationType:"group",conversationId:e.conversationId.trim()})}function t(e,t,r){const a="object"==typeof e&&null!==e?e:null;return Object.freeze({code:null!==a&&"string"==typeof a.code?a.code:"IM_CHAT_KIT_GROUP_PROFILE_OPERATION_FAILED",category:null!==a&&(o=a.category,"auth"===o||"network"===o||"protocol"===o||"permission"===o||"validation"===o||"state"===o||"unsupported"===o||"contract"===o)?a.category:"state",operation:`group-profile.${t}`,retryable:!0===a?.retryable,conversation:r});var o}function r(e,t,r,a){return Object.freeze({ok:!1,operation:e,conversation:t,outcome:r,stale:"stale"===r,projectionUpdated:!1,refreshRequired:!1,...void 0===a?{}:{error:a}})}function a(e,t,r){return Object.freeze({code:"IM_CHAT_KIT_GROUP_PROFILE_ACTION_UNAVAILABLE",category:"unavailable"===r.availability?"permission":"state",operation:`group-profile.${e}`,retryable:"unknown"===r.availability,conversation:t})}function o(t,o,n){const i=e(n);if(""===i.conversationId)return{ok:!1,result:r(o,i,"failed",Object.freeze({code:"IM_CHAT_KIT_GROUP_PROFILE_INVALID_INPUT",category:"validation",operation:`group-profile.${o}`,retryable:!1,conversation:i}))};const c=t.getProductClient();if(null===c)return{ok:!1,result:r(o,i,"not-ready")};const u=t.getGeneration(),s=function(e,t,r){const a=e.capabilities.get(t);return"group"!==a.conversationType||a.ref.conversationId!==t.conversationId?Object.freeze({availability:"unknown",reason:"not-ready"}):"update-verification"===r?a.value.canUpdateVerification:"set-my-nickname"===r?"active"===a.value.membership?Object.freeze({availability:"available",reason:"ok"}):Object.freeze({availability:"unknown"===a.value.membership?"unknown":"unavailable",reason:"unknown_restricted"===a.value.membership?"unknown-restricted":a.value.membership}):a.value.canEditProfile}(c,i,o);return"available"!==s.availability?{ok:!1,result:r(o,i,"not-allowed",a(o,i,s))}:{ok:!0,captured:Object.freeze({client:c,conversation:i,isCurrent:()=>t.getGeneration()===u&&t.getProductClient()===c})}}async function n(e,a,n,i){const c=o(e,a,n);if(!c.ok)return c.result;try{const e=await i(c.captured);return c.captured.isCurrent()?e:r(a,c.captured.conversation,"stale")}catch(e){return c.captured.isCurrent()?r(a,c.captured.conversation,"failed",t(e,a,c.captured.conversation)):r(a,c.captured.conversation,"stale")}}function i(t,a,o){const i=o.trim();if(""===i){const t=e(a);return Promise.resolve(r("update-name",t,"failed",Object.freeze({code:"IM_CHAT_KIT_GROUP_PROFILE_INVALID_INPUT",category:"validation",operation:"group-profile.update-name",retryable:!1,conversation:t})))}return n(t,"update-name",a,async({client:e,conversation:t})=>(await e.groups.updateName(t,i),Object.freeze({ok:!0,operation:"update-name",conversation:t,outcome:"updated",stale:!1,projectionUpdated:!1,refreshRequired:!1})))}function c(t,a,o){const i=o.trim();if(""===i){const t=e(a);return Promise.resolve(r("set-my-nickname",t,"failed",Object.freeze({code:"IM_CHAT_KIT_GROUP_PROFILE_INVALID_INPUT",category:"validation",operation:"group-profile.set-my-nickname",retryable:!1,conversation:t})))}return n(t,"set-my-nickname",a,async({client:e,conversation:r})=>(await e.groups.setMyNickname(r,i),Object.freeze({ok:!0,operation:"set-my-nickname",conversation:r,outcome:"updated",memberId:t.getCredentials().userId,stale:!1,projectionUpdated:!1,refreshRequired:!1})))}function u(e,t,r,a){return n(e,"update-verification",t,async({client:e,conversation:t})=>(await e.groups.updateVerification(t,r,a),Object.freeze({ok:!0,operation:"update-verification",conversation:t,outcome:"updated",stale:!1,projectionUpdated:!1,refreshRequired:!1})))}async function s(e,a,n){const i=o(e,"update-avatar",a);if(!i.ok)return i.result;const{captured:c}=i;try{await c.client.groups.updateAvatar(c.conversation,n)}catch(e){return c.isCurrent()?r("update-avatar",c.conversation,"failed",t(e,"update-avatar",c.conversation)):r("update-avatar",c.conversation,"stale")}if(!c.isCurrent())return r("update-avatar",c.conversation,"stale");try{const e=await c.client.groups.getProfile(c.conversation,{forceRefresh:!0});if(!c.isCurrent())return r("update-avatar",c.conversation,"stale");const t=e?.avatar?.trim();return Object.freeze({ok:!0,operation:"update-avatar",conversation:c.conversation,outcome:"updated",...void 0===t||""===t?{}:{avatar:t},stale:!1,projectionUpdated:!1,refreshRequired:void 0===t||""===t})}catch{return c.isCurrent()?Object.freeze({ok:!0,operation:"update-avatar",conversation:c.conversation,outcome:"updated",stale:!1,projectionUpdated:!1,refreshRequired:!0}):r("update-avatar",c.conversation,"stale")}}export{c as executeSetMyGroupNickname,s as executeUpdateGroupAvatar,i as executeUpdateGroupName,u as executeUpdateGroupVerification};
@@ -0,0 +1 @@
1
+ import{captureRuntimeClientOperation as e}from"../runtime/runtime-operation.js";function n(e,n){if(void 0===n){if("image"===e.contentType)return e.body.image;const o=e.body.mediaAlbum;if("mediaAlbum"!==e.contentType||1!==o?.items.length||!o.caption?.trim())return;n=0}const o="mediaAlbum"===e.contentType?e.body.mediaAlbum?.items[n]:void 0;return"image"===o?.kind?o:void 0}function o(e){return"customerService"===e?.contentType?e.body.customerService?.text??"":"mediaAlbum"===e?.contentType?e.body.mediaAlbum?.caption??"":"filesAlbum"===e?.contentType?e.body.filesAlbum?.caption??"":e?.body.text??""}function t(e,o){return void 0===e?void 0:n(e,o)?.url}function i(e,o){return void 0!==e&&"sent"===e.status&&"supergroup"!==e.conversationType&&void 0===e.recalled&&void 0===e.deletedForEveryone&&void 0!==n(e,o)}function r(o,t,r,a){const c=e(o),d=n(t,a),u=a??("mediaAlbum"===t.contentType?0:void 0),m={conversationType:t.conversationType,conversationId:t.conversationId},s=()=>!(null===c||!c.isCurrent()||!r())&&i(t,a),l=()=>{if(!s())throw new DOMException("Image copy is no longer active","AbortError")};return{isCurrent:s,async loadOriginal(){if(l(),"supergroup"===m.conversationType)throw new Error("Unsupported image copy conversation");const e=await c.client.media.download({conversation:{...m,conversationType:m.conversationType},messageId:t.id,...void 0===u?{}:{itemIndex:u}});return l(),e},async loadThumbnail(){l();const e=d?.thumbData;if(void 0===e||0===e.length)throw new Error("Image thumbnail unavailable");return new Blob([new Uint8Array(e)])}}}export{i as canCopyMessageImage,r as createMessageImageCopySource,t as getMessageCopyImageUrl,o as getMessageCopyText};
@@ -0,0 +1 @@
1
+ import{isSupportedImageFile as i}from"../../../im-sdk/src/product/image-format.js";async function t(t){if("not-gif"!==await e(t))return"sticker";if(await i(t))return"image";const r=t.type.trim().toLowerCase();return r.startsWith("image/")||/\.(?:jpe?g|png|webp|gif|svgz?|heic|heif|avif|bmp|tiff?|ico|jfif|jxl|psd|dng|raw)$/i.test(t.name)?"unsupported-image":r.startsWith("video/")?"video":"file"}async function e(i){const t=i.type.trim().toLowerCase(),e=new Uint8Array(await i.slice(0,6).arrayBuffer()),r=6===e.length?String.fromCharCode(...e):"",a="GIF87a"===r||"GIF89a"===r,n="image/gif"===t;return a&&(n||""===t)?"gif":a||n?"invalid-gif":"not-gif"}async function r(i){return"gif"===await e(i)}export{e as classifyGifFile,t as classifyMediaFile,r as isGifFile};
@@ -0,0 +1 @@
1
+ function e(e,n){if("supergroup"!==e.conversationType)return{conversation:{conversationType:e.conversationType,conversationId:e.conversationId},messageId:e.id,...void 0===n?{}:{itemIndex:n}}}function n(n,t,i){const o=n.getClient(),r=e(t,i);if(null===o||void 0===r)throw new Error("media download unavailable");o.media.prioritizeDownload(r)}async function t(n,t,i,o){const r=n.getClient(),a=e(t,o);if(null===r||void 0===a)throw new Error("media download unavailable");const l=void 0===i?void 0:r.media.subscribe(e=>{const n=e.find(e=>"download"===e.direction&&e.messageId===a.messageId&&e.itemIndex===o&&e.ref.conversationType===a.conversation.conversationType&&e.ref.conversationId===a.conversation.conversationId);void 0!==n&&i(n.percent)});try{return await r.media.download(a)}finally{l?.()}}function i(e){return"object"==typeof e&&null!==e&&"code"in e&&"IM_SDK_MEDIA_DOWNLOAD_CANCELED"===e.code}async function o(e,n){const t=e.getClient();if(null===t)return null;const i=e.getGeneration(),o=await t.media.prepareLocalPreview(n);return null===o||e.getGeneration()!==i?null:("video"===n.kind&&"displayPoster"in o&&o.displayPoster&&e.rememberLocalVideoPoster(n.file,o.displayPoster),o)}function r(e){return e.length>=3&&255===e[0]&&216===e[1]&&255===e[2]?"image/jpeg":e.length>=8&&137===e[0]&&80===e[1]&&78===e[2]&&71===e[3]?"image/png":e.length>=6&&71===e[0]&&73===e[1]&&70===e[2]?"image/gif":e.length>=12&&87===e[8]&&69===e[9]&&66===e[10]&&80===e[11]?"image/webp":null}async function a(e){const n=r(new Uint8Array(await e.slice(0,12).arrayBuffer()));return null===n?null:URL.createObjectURL(e.type===n?e:e.slice(0,e.size,n))}function l(e){return e.length>=4&&26===e[0]&&69===e[1]&&223===e[2]&&163===e[3]?"video/webm":(e.length>=8&&102===e[4]&&116===e[5]&&121===e[6]&&e[7],"video/mp4")}function c(e,n,t){return e.acquireMediaBlob({conversationType:n.conversationType,conversationId:n.conversationId,messageId:n.id,...void 0===t?{}:{itemIndex:t}})}async function s(e,n,i){const o=e.getClient(),r=n.body.voice;if(null===o||void 0===r)return null;const a=e.getSelfVoiceBytes(n.id);if(void 0!==a)return a;const l=e.getGeneration();try{const o=new Uint8Array(await(await t(e,n)).arrayBuffer());return 0===o.length?(e.getGeneration()===l&&i.setNote(i.t("media.voiceLoadEmpty")),null):o}catch(n){return e.getGeneration()===l&&i.setNote(i.t("media.voiceLoadFailed",{reason:n instanceof Error?n.message:String(n)})),null}}async function u(e,n,o,r){const a=e.getClient(),l=n.body.video;if(null===a||void 0===l)return null;const c=e.getGeneration();try{const i=await t(e,n,r);if(0===i.size)return e.getGeneration()===c&&o.setNote(o.t("media.videoOpenEmpty")),null;const a=URL.createObjectURL(i);return e.getGeneration()!==c?(URL.revokeObjectURL(a),null):a}catch(n){return e.getGeneration()!==c||i(n)||o.setNote(o.t("media.videoLoadFailed",{reason:n instanceof Error?n.message:String(n)})),null}}async function d(n,t){const i=n.getClient(),o=e(t);if(null===i||void 0===o||void 0===t.body.video)return null;const r=n.getGeneration();try{const e=await i.media.getCached(o);if(null===e||0===e.size||n.getGeneration()!==r)return null;const t=new Uint8Array(await e.slice(0,12).arrayBuffer()),a=e.type||l(t);return n.getGeneration()!==r?null:URL.createObjectURL(e.type===a?e:e.slice(0,e.size,a))}catch{return null}}async function g(e,n,o,r,l){const c=e.getClient(),s=n.body.mediaAlbum?.items[o];if(null===c||void 0===s)return null;const u="video"===s.kind,d=e.getGeneration();try{const i=await t(e,n,l,o);if(u&&0===i.size)return e.getGeneration()===d&&r.setNote(r.t("media.videoOpenEmpty")),null;const c=u?URL.createObjectURL(i):await a(i);return null===c?(e.getGeneration()===d&&r.setNote(r.t("media.imageInvalid",{size:i.size})),null):e.getGeneration()!==d?(URL.revokeObjectURL(c),null):c}catch(n){return e.getGeneration()!==d||i(n)||r.setNote(r.t(u?"media.videoLoadFailed":"media.imageLoadFailed",{reason:n instanceof Error?n.message:String(n)})),null}}async function v(n,t,i){const o=n.getClient(),r=t.body.mediaAlbum?.items[i],l=e(t,i);if(null===o||void 0===l||void 0===r||!/^https?:\/\//i.test(r.url))return null;const c=n.getGeneration();try{const e=await o.media.getCached(l);if(null===e||0===e.size||n.getGeneration()!==c)return null;const t="video"===r.kind?URL.createObjectURL(e):await a(e);return null===t?null:n.getGeneration()!==c?(URL.revokeObjectURL(t),null):t}catch{return null}}async function f(e,n,o){const r=e.getClient(),l=n.body.image;if(null===r||void 0===l)return null;const c=e.getGeneration();try{const i=await t(e,n),r=await a(i);return null===r?(e.getGeneration()===c&&o.setNote(o.t("media.imageInvalid",{size:i.size})),null):e.getGeneration()!==c?(URL.revokeObjectURL(r),null):r}catch(n){return e.getGeneration()!==c||i(n)||o.setNote(o.t("media.imageLoadFailed",{reason:n instanceof Error?n.message:String(n)})),null}}async function m(n,t){const i=n.getClient(),o=e(t);if(null===i||void 0===o||void 0===t.body.image)return null;const r=n.getGeneration();try{const e=await i.media.getCached(o);if(null===e||0===e.size||n.getGeneration()!==r)return null;const t=await a(e);return null===t?null:n.getGeneration()!==r?(URL.revokeObjectURL(t),null):t}catch{return null}}async function y(e,n,o,r,a){const l=e.getClient(),c=void 0===a?n.body.file:n.body.filesAlbum?.items[a];if(null===l||void 0===c)return null;const s=e.getGeneration();try{const i=await t(e,n,r,a);if(0===i.size)return e.getGeneration()===s&&o.setNote(o.t("media.fileDownloadEmpty")),null;const l=URL.createObjectURL(i);return e.getGeneration()!==s?(URL.revokeObjectURL(l),null):l}catch(n){return e.getGeneration()!==s||i(n)||o.setNote(o.t("media.fileDownloadFailed",{reason:n instanceof Error?n.message:String(n)})),null}}export{c as acquireMediaBlob,r as detectImageMime,l as detectVideoMime,m as loadCachedImageObjectUrl,v as loadCachedMediaAlbumItemObjectUrl,d as loadCachedVideoObjectUrl,y as loadFileObjectUrl,f as loadImageObjectUrl,g as loadMediaAlbumItemObjectUrl,u as loadVideoObjectUrl,s as loadVoiceBytes,o as prepareLocalMediaPreview,n as prioritizeMediaDownload};
@@ -0,0 +1 @@
1
+ import{toMentionInputs as e}from"./send.service.js";const t={IM_SDK_MESSAGE_PINNED:"recall.pinned",IM_SDK_MESSAGE_NOT_FOUND:"recall.not-found",IM_SDK_MESSAGE_STATE_MISMATCH:"recall.not-found",IM_SDK_RECALL_NOT_OWN:"recall.not-own",IM_SDK_RECALL_NOT_SENT:"recall.not-sent",IM_SDK_RECALL_EXPIRED:"recall.expired",IM_SDK_RECALL_UNSUPPORTED:"recall.unsupported",IM_SDK_RECALL_TIMEOUT:"recall.timeout",IM_SDK_RECALL_FAILED:"recall.failed",IM_SDK_RECALL_DISCONNECTED:"recall.disconnected"},n={IM_SDK_MESSAGE_PINNED:"edit.pinned",IM_SDK_MESSAGE_NOT_FOUND:"edit.not-found",IM_SDK_MESSAGE_STATE_MISMATCH:"edit.not-found",IM_SDK_EDIT_NOT_OWN:"edit.not-own",IM_SDK_EDIT_NOT_SENT:"edit.not-sent",IM_SDK_EDIT_RECALLED:"edit.recalled",IM_SDK_EDIT_DELETED:"edit.deleted",IM_SDK_EDIT_EXPIRED:"edit.expired",IM_SDK_EDIT_UNSUPPORTED:"edit.unsupported",IM_SDK_DIRECT_MENTION_UNSUPPORTED:"edit.unsupported",IM_SDK_EDIT_EMPTY:"edit.empty",IM_SDK_EDIT_RESTRICTED:"edit.restricted",IM_SDK_EDIT_CONTENT_UNSUPPORTED:"edit.unsupported-content",IM_SDK_EDIT_KEY_UNAVAILABLE:"edit.no-key",IM_SDK_EDIT_ENCRYPT_FAILED:"edit.encrypt-failed",IM_SDK_EDIT_TIMEOUT:"edit.timeout",IM_SDK_EDIT_FAILED:"edit.failed",IM_SDK_EDIT_DISCONNECTED:"edit.disconnected"},o={IM_SDK_MESSAGE_PINNED:"pinned.protected",IM_SDK_MESSAGE_NOT_FOUND:"channelDelete.notFound",IM_SDK_CHANNEL_DELETE_UNSUPPORTED:"channelDelete.unsupported",IM_SDK_CHANNEL_DELETE_NOT_SENT:"channelDelete.notSent",IM_SDK_CHANNEL_DELETE_UNAVAILABLE:"channelDelete.unavailable",IM_SDK_CHANNEL_DELETE_FORBIDDEN:"channelDelete.forbidden",IM_SDK_CHANNEL_DELETE_TIMEOUT:"channelDelete.timeout",IM_SDK_CHANNEL_DELETE_FAILED:"channelDelete.failed",IM_SDK_CHANNEL_DELETE_DISCONNECTED:"channelDelete.disconnected"};function r(e,t){const n=e.getConversationHandle();if(void 0!==n&&"supergroup"!==t.conversationType)return n.ref.conversationType===t.conversationType&&n.ref.conversationId===t.conversationId?n:void 0}function a(e){return"string"==typeof e?.code?e.code:void 0}function i(e,t,n){return function(e){return"object"==typeof e&&null!==e&&"string"==typeof e.code&&"string"==typeof e.category&&"string"==typeof e.operation&&"boolean"==typeof e.retryable}(e)?e:Object.freeze({code:"IM_CHAT_KIT_MESSAGE_OPERATION_FAILED",category:"state",operation:`message-operations.${t}`,retryable:!1,...void 0===n?{}:{conversation:Object.freeze({...n.ref})},cause:e})}function s(e,t){return void 0!==e&&"supergroup"!==t.conversationType&&e.ref.conversationType===t.conversationType&&e.ref.conversationId===t.conversationId}async function c(e,t){const n="recall";if(!s(t.handle,t.message))return Object.freeze({ok:!1,operation:n,reason:"not-ready"});const o=e.getGeneration();try{await t.handle.messages.recall(t.message.id)}catch(r){return e.getGeneration()!==o?Object.freeze({ok:!1,operation:n,reason:"stale"}):Object.freeze({ok:!1,operation:n,reason:"sdk-rejected",error:i(r,n,t.handle)})}return e.getGeneration()===o?Object.freeze({ok:!0,operation:n}):Object.freeze({ok:!1,operation:n,reason:"stale"})}async function d(e,t){const n="delete-local";if(!s(t.handle,t.message)||"direct"!==t.handle.ref.conversationType&&"group"!==t.handle.ref.conversationType||"direct"!==t.message.conversationType&&"group"!==t.message.conversationType)return Object.freeze({ok:!1,operation:n,reason:"not-ready"});const o=e.getGeneration();try{await t.handle.messages.deleteLocal(t.message.id)}catch(r){return e.getGeneration()!==o?Object.freeze({ok:!1,operation:n,reason:"stale"}):Object.freeze({ok:!1,operation:n,reason:"sdk-rejected",error:i(r,n,t.handle)})}return e.getGeneration()===o?Object.freeze({ok:!0,operation:n}):Object.freeze({ok:!1,operation:n,reason:"stale"})}async function _(e,t){const n="delete-for-everyone";if(!s(t.handle,t.message)||"channel"!==t.handle.ref.conversationType||"channel"!==t.message.conversationType)return Object.freeze({ok:!1,operation:n,reason:"not-ready"});const o=e.getGeneration();try{await t.handle.messages.deleteForEveryone(t.message.id)}catch(r){return e.getGeneration()!==o?Object.freeze({ok:!1,operation:n,reason:"stale"}):Object.freeze({ok:!1,operation:n,reason:"sdk-rejected",error:i(r,n,t.handle)})}return e.getGeneration()===o?Object.freeze({ok:!0,operation:n}):Object.freeze({ok:!1,operation:n,reason:"stale"})}async function E(e,t){const n="retry",o=e.getProductClient(),r=t.handle;if(null===o||void 0===r)return Object.freeze({ok:!1,operation:n,reason:"not-ready"});const a=e.getGeneration();try{const e=o.media.getSnapshot().find(e=>"upload"===e.direction&&("failed"===e.state||"canceled"===e.state)&&e.messageId===t.messageId&&e.ref.conversationType===r.ref.conversationType&&e.ref.conversationId===r.ref.conversationId);if(void 0!==e)await o.media.retry(e.id,t.options);else{if(!0===t.options?.restartUpload)return Object.freeze({ok:!1,operation:n,reason:"not-ready"});const e=o.outbox.getSnapshot().find(e=>e.messageId===t.messageId);if(void 0===e||e.ref.conversationType!==r.ref.conversationType||e.ref.conversationId!==r.ref.conversationId)return Object.freeze({ok:!1,operation:n,reason:"not-ready"});await o.outbox.retry(t.messageId)}}catch(t){return e.getGeneration()!==a?Object.freeze({ok:!1,operation:n,reason:"stale"}):Object.freeze({ok:!1,operation:n,reason:"sdk-rejected",error:i(t,n,r)})}return e.getGeneration()===a?Object.freeze({ok:!0,operation:n}):Object.freeze({ok:!1,operation:n,reason:"stale"})}async function l(e,n,o){const i=r(o,n.message);if(void 0===i)return void o.setNote(o.t("common.conversationNotReady"));const s=e.getGeneration();try{await i.messages.recall(n.message.id)}catch(n){if(e.getGeneration()!==s)return;o.setNote(o.t(t[a(n)??""]??"recall.failed"))}}async function D(e,t,n){const i=r(n,t.message);if(void 0===i||"channel"!==i.ref.conversationType||"channel"!==t.message.conversationType)return void n.setNote(n.t("common.conversationNotReady"));const s=e.getGeneration();try{await i.messages.deleteForEveryone(t.message.id)}catch(t){if(e.getGeneration()!==s)return;n.setNote(n.t(o[a(t)??""]??"channelDelete.failed"))}}async function I(t,o,i){const s=r(i,o.message);if(void 0===s)return i.setNote(i.t("common.conversationNotReady")),!1;const c=t.getGeneration(),d=e(o.mention);try{await s.messages.editText(o.message.id,o.text,{...void 0===d?{}:{mentions:d}})}catch(e){return t.getGeneration()!==c||i.setNote(i.t(n[a(e)??""]??"edit.failed")),!1}return t.getGeneration()===c}export{D as deleteChannelMessageForEveryone,I as editMessage,_ as executeDeleteChannelMessageForEveryone,d as executeDeleteLocalMessage,c as executeRecallMessage,E as executeRetryMessage,l as recallMessage};
@@ -0,0 +1 @@
1
+ import{canTransmitContent as e}from"../../../im-core/src/message-flow/forward/can-transmit.js";function n(e){return"group"in e?e.group:e.channel}function r(r,o,t){if(o.conversationType!==r.ref.conversationType||o.conversationId!==r.ref.conversationId)return!1;if("sent"!==o.status||void 0!==o.recalled||void 0!==o.deletedForEveryone||!0===o.encryption.decryptFailed)return!1;if(!["text","image","video","voice","file","filesAlbum","miniProgram","transfer","gift","game"].includes(o.contentType))return!1;if("filesAlbum"===o.contentType&&!e(o))return!1;if(null===t)return!0;const s=n(t);return s.conversationType!==r.ref.conversationType||s.conversationId!==r.ref.conversationId||t.messageId!==o.id}function o(e){const{session:n,message:o,currentPinnedMessage:t,selfId:s,ownerId:i}=e;return"group"===n?.ref.conversationType&&(void 0===n.groupState||"active"===n.groupState)&&""!==s&&void 0!==i&&""!==i&&s===i&&r(n,o,t)}function t(e){const{session:n,message:o,currentPinnedMessage:t}=e;return"channel"===n?.ref.conversationType&&"active"===n.channelState&&!0===n.channelPermissions?.moderateMessages&&r(n,o,t)}function s(e){return"group"===e.session?.ref.conversationType?o(e):"channel"===e.session?.ref.conversationType&&t(e)}function i(e,r){if(null===e)return!1;const o=n(e);return o.conversationType===r.conversationType&&o.conversationId===r.conversationId&&e.messageId===r.id}export{t as canPinChannelMessage,o as canPinGroupMessage,s as canPinMessage,i as isPinnedMessageProtected};
@@ -0,0 +1 @@
1
+ function e(e,n){const t=e.getProductClient();return null===t||"authenticated"!==e.getConnectionState()?(n?.setNote(n.t("common.notConnected")),null):t}function n(e){return"object"==typeof e&&null!==e&&"string"==typeof e.category}function t(e,t,o){if(n(e))return e;const r="string"==typeof e?.kind?e.kind:void 0,a="forbidden"===r?"permission":"network"===r?"network":"unsupported"===r?"unsupported":"contract"===r?"contract":"state";return Object.freeze({code:"IM_CHAT_KIT_PINNED_MESSAGE_OPERATION_FAILED",category:a,operation:`message-operations.${t}`,retryable:"network"===a,conversation:Object.freeze({...o}),cause:e})}async function o(n,o){const r="pin",a=e(n);if(null===a||o.message.conversationId!==o.conversation.conversationId||o.message.conversationType!==o.conversation.conversationType)return Object.freeze({ok:!1,operation:r,reason:"not-ready"});const s=n.getGeneration();try{const e="group"===o.conversation.conversationType?await a.groups.pinMessage(o.conversation,o.message.id):await a.channels.pinMessage(o.conversation,o.message.id);return n.getGeneration()===s?Object.freeze({ok:!0,operation:r,value:e}):Object.freeze({ok:!1,operation:r,reason:"stale"})}catch(e){return n.getGeneration()!==s?Object.freeze({ok:!1,operation:r,reason:"stale"}):Object.freeze({ok:!1,operation:r,reason:"sdk-rejected",error:t(e,r,o.conversation)})}}async function r(n,o){const r="unpin",a=e(n);if(null===a)return Object.freeze({ok:!1,operation:r,reason:"not-ready"});const s=n.getGeneration();try{return"group"===o.conversationType?await a.groups.unpinMessage(o):await a.channels.unpinMessage(o),n.getGeneration()===s?Object.freeze({ok:!0,operation:r}):Object.freeze({ok:!1,operation:r,reason:"stale"})}catch(e){return n.getGeneration()!==s?Object.freeze({ok:!1,operation:r,reason:"stale"}):Object.freeze({ok:!1,operation:r,reason:"sdk-rejected",error:t(e,r,o)})}}async function a(n,o){const r="sync-pin",a=e(n);if(null===a)return Object.freeze({ok:!1,operation:r,reason:"not-ready"});const s=n.getGeneration();try{const e="group"===o.conversationType?await a.groups.getPinnedMessage(o):await a.channels.getPinnedMessage(o);return n.getGeneration()===s?Object.freeze({ok:!0,operation:r,value:e}):Object.freeze({ok:!1,operation:r,reason:"stale"})}catch(e){return n.getGeneration()!==s?Object.freeze({ok:!1,operation:r,reason:"stale"}):Object.freeze({ok:!1,operation:r,reason:"sdk-rejected",error:t(e,r,o)})}}function s(e,t,o,r){if(e.getGeneration()!==t)return;const a=n(r)?function(e){switch(e){case"permission":return"pinned.forbidden";case"network":return"pinned.network";case"contract":return"pinned.contract";case"unsupported":return"pinned.unsupported";default:return"pinned.failed"}}(r.category):"pinned.failed";o.setNote(o.t(a))}async function i(n,t,o){const r=e(n,o);if(null===r)return null;const a=n.getGeneration();try{const e="group"===t.conversation.conversationType?await r.groups.pinMessage(t.conversation,t.message.id):await r.channels.pinMessage(t.conversation,t.message.id);return n.getGeneration()===a?e:null}catch(e){return s(n,a,o,e),null}}async function c(n,t,o){const r=e(n,o);if(null===r)return!1;const a=n.getGeneration();try{return"group"===t.conversationType?await r.groups.unpinMessage(t):await r.channels.unpinMessage(t),n.getGeneration()===a}catch(e){return s(n,a,o,e),!1}}async function u(e,n,t){const o=await p(e,n,t);return o.ok?o.value:null}async function p(n,t,o){const r=e(n,o);if(null===r)return{ok:!1};const a=n.getGeneration();try{const e="group"===t.conversationType?await r.groups.getPinnedMessage(t):await r.channels.getPinnedMessage(t);return n.getGeneration()===a?{ok:!0,value:e}:{ok:!1}}catch(e){return s(n,a,o,e),{ok:!1}}}function g(e,n){const t=e.getProductClient();return null===t?null:"group"===n.conversationType?t.groups.peekPinnedMessage(n):t.channels.peekPinnedMessage(n)}export{o as executePinMessage,a as executeSyncPinnedMessage,r as executeUnpinMessage,u as getPinnedMessage,g as peekPinnedMessage,i as pinMessage,p as syncPinnedMessage,c as unpinMessage};
@@ -0,0 +1 @@
1
+ function e(e){return"channel"===e.conversation.conversationType&&!1!==e.channelProfile?.memberPrivateChatDisabled?"blocked":"friend"===e.relationship?"friend-profile":"friend-contact"}export{e as resolveImProfileAccessDestination};
@@ -0,0 +1 @@
1
+ function e(e){return Object.freeze({conversationType:e.conversationType,conversationId:e.conversationId})}function n(e){return Object.freeze(e.map(e=>Object.freeze({userId:e.userId,nickname:e.nickName,...void 0===e.joinType?{}:{joinType:e.joinType}})))}async function r(e,n,r={}){const t=e.ensureProductClient(),[a,i]=await Promise.all([!0===r.forceRefresh?t.contacts.getProfile(n.conversationId,r):t.contacts.getProfile(n.conversationId),t.contacts.getRelationship(n.conversationId)]);return Object.freeze({profile:a,relationship:i})}async function t(n,r){const t=await(n.getClient()?.group.peekProfile(r.conversationId))??null;return null===t?null:function(n,r){if(r.id!==n.conversationId)throw new Error("GROUP 资料响应身份不匹配");return Object.freeze({ref:e(n),name:r.name,...void 0===r.avatar?{}:{avatar:r.avatar},...void 0===r.memberCount?{}:{memberCount:r.memberCount},...void 0===r.ownerId?{}:{ownerId:r.ownerId},...void 0===r.verifyWay?{}:{verifyWay:r.verifyWay},...void 0===r.inviteCode?{}:{inviteCode:r.inviteCode},...void 0===r.isInGroup?{}:{isInGroup:r.isInGroup}})}(r,t.value)}function a(e,n,r){return e.ensureProductClient().groups.getProfile(n,r)}async function i(e,n){const r=n.trim();if(""===r)return Object.freeze([]);const t=e.ensureProductClient(),a=e.getClient();if(null===a)throw new Error("共同群组能力未连接");const i=[];let o=await t.groups.listFirstPage({pageSize:100});for(i.push(...o.items);!o.exhausted&&void 0!==o.nextPageToken;)o=await t.groups.listNextPage(o.nextPageToken),i.push(...o.items);const s=[];for(const e of i){const n=await a.group.listMembers(e.id,{forceRefresh:!1});null!==n&&(n.some(e=>e.userId===r)&&s.push(Object.freeze({ref:Object.freeze({conversationType:"group",conversationId:e.id}),name:e.displayName||e.cardDisplayName||e.id,...void 0===e.avatarUrl?{}:{avatar:e.avatarUrl}})))}return Object.freeze(s)}async function o(e,r){const t=await(e.getClient()?.group.peekMembers(r.conversationId))??null;return null===t?null:Object.freeze({items:n(t.value),stale:t.stale})}async function s(e,r){const t=await(e.getClient()?.group.listMembers(r.conversationId,{forceRefresh:!0}))??null;return null===t?null:n(t)}async function c(e,n,r){const t=await e.ensureProductClient().channels.getProfile(n,r);if(null===t)return null;if(t.ref.conversationId!==n.conversationId)throw new Error("CHANNEL 资料响应身份不匹配");return Object.freeze({...t,canViewMembers:!0===t.permissions.manageMembers||!1===t.memberPrivateChatDisabled})}function u(e,n,r){const t=e.ensureProductClient(),a="individual"===n?t.contacts:"group"===n?t.groups:t.channels;return void 0===r?a.listFirstPage():a.listNextPage(r)}function l(e,n){return e.ensureProductClient().directory.search(n)}async function d(e,n,r){const t=e.getClient();if(null===t)throw new Error("CHANNEL 成员能力未连接");const a=r.query?.trim()??"";return f(""===a?await t.channel.listMembers({channelId:n.conversationId,cursor:r.cursor,limit:18}):await t.channel.searchMembers({channelId:n.conversationId,query:a,cursor:r.cursor,limit:18}))}function f(e){return Object.freeze({items:Object.freeze(e.items.map(e=>Object.freeze({userId:e.userId,...void 0===e.nickname?{}:{nickname:e.nickname},displayName:e.displayName,...void 0===e.avatar?{}:{avatar:e.avatar},role:e.role}))),...void 0===e.nextCursor?{}:{nextCursor:e.nextCursor},exhausted:e.exhausted})}async function m(e,n,r,t={}){const a=e.getClient();if(null===a)throw new Error("CHANNEL 成员能力未连接");const i=r.trim();if(""===i)return null;const o=(await a.channel.getMembersByIds(n.conversationId,[i],!0===t.forceRefresh?{forceRefresh:!0}:void 0)).find(e=>e.userId===i);return void 0===o?null:Object.freeze({userId:o.userId,...void 0===o.nickname?{}:{nickname:o.nickname},displayName:o.displayName,...void 0===o.avatar?{}:{avatar:o.avatar},role:o.role})}async function v(e,n,r){const t=e.getClient();if(null===t)throw new Error("CHANNEL 成员能力未连接");const a=r?.trim()??"",i=await t.channel.getCachedMembers({channelId:n.conversationId,...""===a?{}:{query:a}});return null===i?null:f(i)}async function h(e,n,r){const t=e.getClient();if(null===t)throw new Error("CHANNEL 成员能力未连接");const a=r?.trim()??"";return f(await t.channel.refreshMembers({channelId:n.conversationId,...""===a?{}:{query:a}}))}function p(e){return Object.freeze({items:Object.freeze(e.items.map(e=>Object.freeze({userId:e.userId,displayName:e.displayName,...void 0===e.avatar?{}:{avatar:e.avatar}}))),...void 0===e.nextPageToken?{}:{nextPageToken:e.nextPageToken},exhausted:e.exhausted})}async function g(e,n,r){const t=await e.ensureProductClient().channels.mentions.getCachedPage(n,r);return null===t?null:p(t)}async function y(e,n,r){const t=e.ensureProductClient().channels.mentions,a=r?.trim()??"";return p(""===a?await t.refreshFirstPage(n):await t.refreshSearchFirstPage(n,a))}async function I(e,n,r){const t=e.ensureProductClient().channels.mentions;return p(""===n.trim()?await t.listNextPage(r):await t.searchNextPage(r))}function w(e,n){const r=e.map(e=>`${e.kind}:${e.id}`),t=new Map(e.map(e=>[`${e.kind}:${e.id}`,e]));for(const e of n){const n=`${e.kind}:${e.id}`;t.has(n)||r.push(n),t.set(n,e)}return Object.freeze(r.map(e=>t.get(e)))}export{w as mergeDirectoryItems,v as peekChannelMemberPage,g as peekChannelMentionPage,o as peekGroupMembers,t as peekGroupProfile,m as readChannelMember,d as readChannelMemberPage,I as readChannelMentionNextPage,c as readChannelProfile,r as readDirectProfile,u as readDirectoryPage,s as readGroupMembers,a as readGroupProfile,i as readMutualGroups,h as refreshChannelMemberPage,y as refreshChannelMentionPage,l as searchCompleteDirectory};
@@ -0,0 +1 @@
1
+ function e(e,n,r,t){const i=e[t];if(i&&""!==i.remark)return i.remark;const o=""===r?void 0:n[r]?.[t];return void 0!==o&&""!==o?o:i&&""!==i.nickname?i.nickname:""}function n(n,r,t,i,o){const c=e(n,r,t,i);if(""!==c)return c;const a=(o??"").trim();return""!==a?a:i.length>12?`${i.slice(0,6)}…${i.slice(-4)}`:i}function r(e,n,r,t){const i=e[t];if(void 0!==i?.remark&&""!==i.remark)return i.remark;const o=n[r]?.[t]?.displayName;return void 0!==o&&""!==o&&o!==t?o:void 0!==i?.nickname&&""!==i.nickname?i.nickname:""}function t(e,n,t,i){return r(e,n,t,i)||i}function i(e,n,r,t){const i=n[r]?.[t]?.avatar;return void 0!==i&&""!==i?i:o(e,t)}function o(e,n){return e[n]?.avatar??""}function c(e,n){return e[n]?.nickname??""}function a(e){return(e.remark??"").trim()||e.nickname||e.id}function d(e,n,r=Date.now()){return e.senderId===n&&"sent"===e.status&&void 0===e.recalled&&void 0===e.deletedForEveryone&&r-(e.serverTime??e.createdAt)<=3e5}function u(e,n,r,t=Date.now()){return e.senderId===n&&"sent"===e.status&&void 0===e.recalled&&void 0===e.deletedForEveryone&&(void 0!==e.body.text&&""!==e.body.text&&t-(e.serverTime??e.createdAt)<=r)}export{u as canEditMessage,d as canRecallMessage,r as readChannelMemberDisplayName,e as readMemberDisplayName,i as resolveChannelMemberAvatarUrl,t as resolveChannelMemberDisplayName,a as resolveFriendDisplayName,n as resolveMemberDisplayName,c as resolvePublicNickname,o as resolveSenderAvatarUrl};
@@ -0,0 +1 @@
1
+ import{ensureBoundRobotSenderProfiles as e}from"./robot-sender-profile.js";const r=3e5,t=/* @__PURE__ */new WeakMap,n=/* @__PURE__ */new WeakMap;function o(e,r,t=!1){const o=e.getGeneration();let a=n.get(e);void 0!==a&&a.generation===o||(a={generation:o,tokens:/* @__PURE__ */new Map},n.set(e,a));const i=a.tokens.get(r),s=!t&&void 0!==i&&i.readers>0?i:{readers:0};s.readers+=1,a.tokens.set(r,s);const c=()=>e.getGeneration()===o&&a.tokens.get(r)===s;return{isCurrent:c,finish(){s.readers-=1},commit:t=>!!c()&&(e.setSenderProfileCache({...e.getSenderProfileCache(),[r]:t}),!0)}}const a=/* @__PURE__ */new WeakMap,i=/* @__PURE__ */new WeakMap;function s(e,r){const t=r.getGeneration();let n=e.get(r);return void 0!==n&&n.generation===t||(n={generation:t,tasks:/* @__PURE__ */new Map},e.set(r,n)),n.tasks}function c(e,r){return void 0===e?void 0===r?0:-1:void 0===r?1:e.length!==r.length?e.length>r.length?1:-1:e===r?0:e>r?1:-1}const l=/* @__PURE__ */new WeakMap;function u(e){return(e??"").trim()}function d(e,r,t){const n=u(r.nickname),o=u(r.avatar);return"robot-directory"===t?.source?{source:"robot-directory",remark:u(r.remark),nickname:""!==n&&n!==e?n:t.nickname,avatar:""!==o?o:t.avatar}:{remark:u(r.remark),nickname:n,avatar:o}}function f(e){let r=l.get(e);const t=e.getGeneration();return void 0!==r&&r.generation===t||(r={generation:t,groups:/* @__PURE__ */new Map},l.set(e,r)),r}function m(e,r,t,n={}){const o=f(e).groups.get(r);if(void 0===o||0===o.size)return t;const a={...t};for(const[e,r]of o){const i=t[e];(""===r?void 0===i:i===r)&&!0===n.reconcile?o.delete(e):""===r?delete a[e]:a[e]=r}return 0===o.size&&f(e).groups.delete(r),a}function g(e,r,t){const n=f(e).groups.get(r);void 0!==n&&(void 0!==t?(n.delete(t.trim()),0===n.size&&f(e).groups.delete(r)):f(e).groups.delete(r))}function p(e,r,t,n){e.getDiagnostics().record("warn","chat-kit","profile",r,()=>({...void 0===n?{}:{data:n},error:{message:"资料预热失败",data:t}}))}function v(e,r,n){const a=e.getClient(),i=e.getCredentials().userId;if(""===r||"system"===r||r===i||null===a)return Promise.resolve(!1);const c=!0===n?.forceRefresh,l=s(t,e),u=c?void 0:l.get(r);if(void 0!==u)return u;const f=e.getSenderProfileCache();if(!c&&void 0!==f[r])return Promise.resolve(!0);void 0===f[r]&&e.setSenderProfileCache({...f,[r]:{remark:"",nickname:"",avatar:""}});const m=o(e,r,c),g=a.contact.getProfile(r,c?{forceRefresh:!0}:void 0).then(t=>{if(!m.isCurrent())return!1;if(null===t){const t=e.getSenderProfileCache()[r];if(""===t?.remark&&""===t.nickname&&""===t.avatar){const t={...e.getSenderProfileCache()};delete t[r],e.setSenderProfileCache(t)}return!0}return m.commit(d(r,t,e.getSenderProfileCache()[r])),!0}).catch(t=>{if(!m.isCurrent())return!1;if(!c){const t={...e.getSenderProfileCache()};delete t[r],e.setSenderProfileCache(t)}return e.getDiagnostics().record("warn","chat-kit","profile","sender-profile-resolve-failed",()=>({data:{userId:r},error:{message:"解析发送者资料失败",data:t}})),!1}).finally(()=>{m.finish(),l.get(r)===g&&l.delete(r)});return l.set(r,g),g}function h(r,t,n){const o=r.getClient();if(""===t||null===o)return Promise.resolve(!1);const i=!0===n?.forceRefresh,c=s(a,r),l=i?void 0:c.get(t);if(void 0!==l)return l;const u=r.getGroupMemberNames(),d=r.getGeneration(),f=e(r,"group",t,{forceRefresh:i,isCurrent:()=>r.getGeneration()===d});if(!i&&void 0!==u[t])return f.then(()=>!0);const g=void 0!==u[t];g||r.setGroupMemberNames({...u,[t]:{}});const v=d,h=()=>{if(g||r.getGeneration()!==v)return;const e={...r.getGroupMemberNames()};delete e[t],r.setGroupMemberNames(e)},C=Promise.all([o.group.getMemberNames(t,{forceRefresh:i}),f]).then(([e])=>r.getGeneration()===v&&(null===e?(h(),!1):(r.setGroupMemberNames({...r.getGroupMemberNames(),[t]:m(r,t,e,{reconcile:!0})}),!0))).catch(e=>(h(),r.getGeneration()===v&&p(r,"group-member-name-resolve-failed",e,{groupId:t}),!1)).finally(()=>{i||c.get(t)!==C||c.delete(t)});return i||c.set(t,C),C}function C(t,n,o,a){const l=t.getClient();if(null===l||""===n||!1===a?.isCurrent?.())return Promise.resolve(!1);const u=!0===a?.forceRefresh,d=t.getGeneration(),f=e(t,"channel",n,{forceRefresh:u,isCurrent:()=>t.getGeneration()===d&&!1!==a?.isCurrent?.()}),m=t.getChannelMemberProfiles()[n]??{},g=[...new Set(o.map(e=>e.trim()).filter(e=>""!==e&&"system"!==e))].filter(e=>u||void 0===m[e]||m[e].expiresAt<=Date.now());if(0===g.length)return f.then(()=>!0);const p=s(i,t),v=`${n}:${[...g].sort().join(",")}`,h=u?void 0:p.get(v);if(void 0!==h)return h;const C=d,G=Promise.all([l.channel.getMembersByIds(n,g,u?{forceRefresh:!0}:void 0),f]).then(([e])=>{if(t.getGeneration()!==C||!1===a?.isCurrent?.())return!1;const o=Date.now()+r,i={...t.getChannelMemberProfiles()[n]??{}};for(const r of e){const e=i[r.userId];void 0!==e&&c(r.updateVersion,e.updateVersion)<0||(i[r.userId]={displayName:r.displayName,...void 0===r.avatar?{}:{avatar:r.avatar},role:r.role,...void 0===r.updateVersion?{}:{updateVersion:r.updateVersion},expiresAt:o})}return t.setChannelMemberProfiles({...t.getChannelMemberProfiles(),[n]:i}),!0}).catch(e=>(t.getGeneration()===C&&t.getDiagnostics().record("warn","chat-kit","profile","channel-members-resolve-failed",()=>({conversation:{conversationType:"channel",conversationId:n},error:{message:"解析 CHANNEL 成员资料失败",data:e}})),!1)).finally(()=>{u||p.get(v)!==G||p.delete(v)});return u||p.set(v,G),G}function G(e,r,t={}){const n=r.body.system;if("system"!==r.contentType||"group_member_renamed"!==n?.eventType)return;const o=new Set((t.preserveUserIds??[]).map(e=>e.trim()).filter(Boolean));for(const t of n.targetUserIds??[]){const n=t.trim();o.has(n)||g(e,r.conversationId,n)}h(e,r.conversationId,{forceRefresh:!0})}function k(e,r,t){const n={};for(const e of t)""!==e.nickName&&(n[e.userId]=e.nickName);e.setGroupMemberNames({...e.getGroupMemberNames(),[r]:m(e,r,n)})}function P(e,r,t,n){const o=r.trim(),a=t.trim();if(""===o||""===a)return;const i=n.trim(),s=f(e),c=s.groups.get(o)??/* @__PURE__ */new Map;c.set(a,i),s.groups.set(o,c);const l=e.getGroupMemberNames()[o];if(void 0===l)return;const u={...l};""===i?delete u[a]:u[a]=i,e.setGroupMemberNames({...e.getGroupMemberNames(),[o]:u})}function b(e,r,t={}){const n=r.trim();if(""===n)return;if(g(e,n),!0!==t.clearCachedNames)return;const o=e.getGroupMemberNames();if(void 0===o[n])return;const a={...o};delete a[n],e.setGroupMemberNames(a)}function M(e){const r=e.getClient(),t=e.getCredentials().userId;if(""===t||null===r||void 0!==e.getSenderProfileCache()[t])return;const n=e.getGeneration();r.contact.getProfile(t).then(r=>{if(null===r||e.getGeneration()!==n)return;const o=u(r.remark),a=u(r.nickname),i=u(r.avatar);""===o&&""===a&&""===i||void 0!==e.getSenderProfileCache()[t]||e.setSenderProfileCache({...e.getSenderProfileCache(),[t]:{remark:o,nickname:a,avatar:i}})}).catch(r=>{e.getGeneration()===n&&p(e,"self-profile-prefetch-failed",r,{userId:t})})}async function y(e,r){const t=e.getClient();if(null===t)return;const n=e.getGeneration(),o=[],a=[];for(const i of r){const r=i.userId;void 0===e.getSenderProfileCache()[r]&&o.push((async()=>{let o;try{o=await t.contact.peekProfile(r)}catch(t){return void(e.getGeneration()===n&&p(e,"member-avatar-prefetch-failed",t,{userId:r}))}if(null===o||e.getGeneration()!==n)return;const i=u(o.value.remark),s=u(o.value.nickname),c=u(o.value.avatar);""===i&&""===s&&""===c||void 0!==e.getSenderProfileCache()[r]||e.setSenderProfileCache({...e.getSenderProfileCache(),[r]:{remark:i,nickname:s,avatar:c}}),o.stale&&a.push(r)})())}await Promise.allSettled(o),e.getGeneration()===n&&S(e,a,void 0)}async function N(e,t,n,o){const a=e.getClient();if(null===a)return;const i=e.getCredentials().userId,s=e.getGeneration(),l=[],d=[];let f=!1;const g=t[0]?.conversationType;"group"===g&&void 0===e.getGroupMemberNames()[n]&&l.push((async()=>{let r;try{r=await a.group.peekMemberNames(n)}catch(r){return void(e.getGeneration()===s&&p(e,"group-member-name-prefetch-failed",r,{groupId:n}))}null!==r&&e.getGeneration()===s&&(void 0===e.getGroupMemberNames()[n]&&e.setGroupMemberNames({...e.getGroupMemberNames(),[n]:m(e,n,r.value)}),r.stale&&(f=!0))})());const v=[...new Set(t.map(e=>e.senderId).filter(e=>""!==e&&"system"!==e&&e!==i))];"channel"===g&&v.length>0&&l.push((async()=>{let t;try{t=await a.channel.getMembersByIds(n,v)}catch(r){return void(e.getGeneration()===s&&p(e,"channel-member-prefetch-failed",r,{conversation:{conversationType:"channel",conversationId:n}}))}if(e.getGeneration()!==s||!1===o?.isCurrent?.())return;const i=Date.now()+r,l={...e.getChannelMemberProfiles()[n]??{}};for(const e of t){const r=l[e.userId];void 0!==r&&c(e.updateVersion,r.updateVersion)<0||(l[e.userId]={displayName:e.displayName,...void 0===e.avatar?{}:{avatar:e.avatar},role:e.role,...void 0===e.updateVersion?{}:{updateVersion:e.updateVersion},expiresAt:i})}e.setChannelMemberProfiles({...e.getChannelMemberProfiles(),[n]:l})})());for(const r of v)void 0===e.getSenderProfileCache()[r]&&l.push((async()=>{let t;try{t=await a.contact.peekProfile(r)}catch(t){return void(e.getGeneration()===s&&p(e,"sender-profile-prefetch-failed",t,{userId:r}))}if(null===t||e.getGeneration()!==s)return;const n=u(t.value.remark),o=u(t.value.nickname),i=u(t.value.avatar);""===n&&""===o&&""===i||void 0!==e.getSenderProfileCache()[r]||e.setSenderProfileCache({...e.getSenderProfileCache(),[r]:{remark:n,nickname:o,avatar:i}}),t.stale&&d.push(r)})());await Promise.allSettled(l),e.getGeneration()===s&&S(e,d,f?n:void 0)}function S(e,r,t){const n=e.getClient();if(null===n)return;const a=e.getGeneration();void 0!==t&&n.group.getMemberNames(t,{forceRefresh:!0}).then(r=>{null!==r&&e.getGeneration()===a&&e.setGroupMemberNames({...e.getGroupMemberNames(),[t]:m(e,t,r,{reconcile:!0})})}).catch(r=>{e.getGeneration()===a&&p(e,"group-member-name-refresh-failed",r,{groupId:t})});for(const t of r){const r=o(e,t,!0);n.contact.getProfile(t,{forceRefresh:!0}).then(n=>{if(null===n||!r.isCurrent())return;const o=e.getSenderProfileCache()[t],a=d(t,n,o);void 0!==o&&o.remark===a.remark&&o.nickname===a.nickname&&o.avatar===a.avatar||r.commit(a)}).catch(n=>{r.isCurrent()&&p(e,"sender-profile-refresh-failed",n,{userId:t})}).finally(()=>r.finish())}}export{P as applyGroupMemberNickname,G as applyGroupMemberRename,k as applyMemberNames,o as beginSenderProfileUpdate,b as clearGroupMemberNicknameProjection,M as ensureSelfProfile,N as prewarmActiveSenders,y as prewarmMemberAvatars,S as refreshStaleSenders,C as resolveChannelMembers,h as resolveGroupMembers,v as resolveSenderName};
@@ -0,0 +1 @@
1
+ import{captureRuntimeClientOperation as e}from"../runtime/runtime-operation.js";function n(n,r,a,t){const o=e(n);if(null===o||""===r.conversationId||""===a)return;const i=o.client.conversations.list().find(e=>e.id===r.conversationId&&e.type===r.conversationType);if(!0===i?.manuallyUnread&&i.unreadCount<=0)return void o.client.conversations.markConversationRead(r).catch(e=>{o.isCurrent()&&n.getDiagnostics().record("warn","chat-kit","conversation","clear-manual-unread-skipped",()=>({conversation:r,error:{message:"清除手工未读提醒失败",data:e}}))});if("group"===i?.type&&i.unreadCount<=0)return;const s=t.getConversationHandle();void 0!==s&&s.ref.conversationId===r.conversationId&&s.ref.conversationType===r.conversationType&&s.markRead(a).catch(e=>{o.isCurrent()&&t.getConversationHandle()===s&&n.getDiagnostics().record("warn","chat-kit","message","mark-read-skipped",()=>({conversation:r,data:{messageId:a},error:{message:"markRead 跳过",data:e}}))})}export{n as markReadUpTo};
@@ -0,0 +1 @@
1
+ const e=/* @__PURE__ */new WeakMap;function t(t,o,r,n){const i=r.trim();if(""===i||!1===n?.isCurrent?.())return Promise.resolve(!1);const a=function(e){const t=e.getClient();if(null!==t){if(void 0!==t.robots)return t.robots;if(void 0!==t.conversations&&void 0!==t.media&&void 0!==t.session)return e.getProductClient()?.robots}}(t);if(void 0===a)return Promise.resolve(!0);const s=t.getGeneration(),c=()=>t.getGeneration()===s&&!1!==n?.isCurrent?.(),d=function(t){let o=e.get(t);return void 0===o&&(o=/* @__PURE__ */new Map,e.set(t,o)),o}(t),v=`${s}\0${o}\0${i}`,u=d.get(v);if(!0!==n?.forceRefresh&&void 0!==u&&(0===u.expiresAt||u.expiresAt>Date.now()))return u.task;const f=async function(e,t,o,r){const n=[];let i=await e.listFirstPage({scope:{kind:"conversation",conversationType:t,conversationId:o,filter:"bound"},pageSize:100});n.push(...i.items);let a=1;for(;!i.exhausted&&void 0!==i.nextPageToken&&a<10;){if(!r())return;i=await e.listNextPage(i.nextPageToken),n.push(...i.items),a+=1}return n}(a,o,i,c).then(e=>void 0!==e&&c()?(function(e,t){const o={...e.getSenderProfileCache()};let r=!1;for(const e of t){const t=e.id.trim(),n=e.displayName.trim();if(""===t||""===n||n===t)continue;const i=o[t],a=void 0!==i&&""!==i.nickname&&i.nickname!==t?i.nickname:n,s=void 0!==i&&""!==i.avatar?i.avatar:e.avatarUrl??"";"robot-directory"===i?.source&&i.nickname===a&&i.avatar===s||(o[t]={source:"robot-directory",remark:i?.remark??"",nickname:a,avatar:s},r=!0)}r&&e.setSenderProfileCache(o)}(t,e),d.set(v,{expiresAt:Date.now()+3e5,task:Promise.resolve(!0)}),!0):(d.get(v)?.task===f&&d.delete(v),!1)).catch(e=>(d.get(v)?.task===f&&d.delete(v),t.getGeneration()===s&&t.getDiagnostics().record("warn","chat-kit","profile","bound-robot-profiles-resolve-failed",()=>({conversation:{conversationType:o,conversationId:i},error:{message:"解析已绑定机器人名称失败",data:e}})),!1));return d.set(v,{expiresAt:0,task:f}),f}export{t as ensureBoundRobotSenderProfiles};
@@ -0,0 +1 @@
1
+ async function n(n,e){const o=c(n),t=e.keyword.trim();return a(o,()=>{switch(e.conversation.conversationType){case"direct":return o.inDirect({conversationType:"direct",conversationId:e.conversation.conversationId},t);case"group":return o.inGroup({conversationType:"group",conversationId:e.conversation.conversationId},t);case"channel":return o.inChannel({conversationType:"channel",conversationId:e.conversation.conversationId},t);case"customerService":throw new Error("客服会话暂不提供搜索入口");case"robot":return o.inRobot({conversationType:"robot",conversationId:e.conversation.conversationId},t)}})}async function e(n,e){const o=c(n),t=e.keyword.trim();return a(o,()=>o.texts(e.conversation,t))}function o(n,e){const o=c(n),t=e.keyword?.trim();return a(o,()=>o.files(e.conversation,void 0===t||""===t?void 0:t))}function t(n,e){const o=c(n);return a(o,()=>o.images(e.conversation))}function r(n,e){const o=c(n);return a(o,()=>o.videos(e.conversation))}function i(n,e){const o=c(n);return a(o,()=>o.voices(e.conversation))}function s(n,e){const o=c(n);return a(o,()=>o.next(e))}function c(n){const e=n.getClient();if(null===e)throw new Error("IM client is not available");return e.search.messages}async function a(n,e){let o=await e();for(let e=0;e<5;e+=1){if(o.items.length>0||o.exhausted||4===e)return{results:o.items,...void 0===o.nextPageToken?{}:{nextPageToken:o.nextPageToken},exhausted:o.exhausted};if(void 0===o.nextPageToken)throw new Error("IM search page is missing nextPageToken");o=await n.next(o.nextPageToken)}throw new Error("Unreachable search pagination state")}export{o as fetchConversationFileBatch,t as fetchConversationImageBatch,n as fetchConversationMessageBatch,e as fetchConversationTextBatch,r as fetchConversationVideoBatch,i as fetchConversationVoiceBatch,s as fetchNextConversationSearchBatch};
@@ -0,0 +1 @@
1
+ import{MAX_BATCH_FILES as e,runMediaSendBatch as t}from"../utils/media-batch.js";import{sendBlockReasonForDecision as n}from"./capabilities.js";import{blockReasonForChannelSession as o}from"./channel-send-restriction.js";import{blockReasonForChannelState as i}from"./channel-send-restriction.js";import{classifyGifFile as r,isGifFile as a,classifyMediaFile as s}from"./media-file-classification.js";import{MEDIA_ALBUM_CAPTION_MAX_LENGTH as d}from"../../../im-core/src/mapping/media-album-body.js";import{isSupportedImageFile as c}from"../../../im-sdk/src/product/image-format.js";const l=/* @__PURE__ */new Set(["group","channel"]),m=/* @__PURE__ */new Set(["group","channel"]),f=31457280,u=209715200,v=2147483648;function g(e,t,n){const o=e.getConversationHandle();if(void 0!==o&&void 0!==n&&"supergroup"!==n)return o.ref.conversationId===t&&o.ref.conversationType===n?o:void 0}function p(e,t){return e.retainConversationHandle?.(t)??(()=>{})}function I(e,t){try{return e.getSnapshot().messages.find(e=>"video"===e.contentType?e.body.video?.url===t:"image"===e.contentType?e.body.image?.url===t:"sticker"===e.contentType?e.body.sticker?.url===t:"mediaAlbum"===e.contentType&&!0===e.body.mediaAlbum?.items.some(e=>e.url===t))?.id}catch{return}}function M(e){if(void 0===e)return;const t=e.atAll?[{userId:"0",displayName:""}]:[];for(const n of e.atUserIds)t.push({userId:n,displayName:e.atUsersName?.[n]??n});return 0===t.length?void 0:t}function y(e){if(void 0===e||"active"===e)return"";switch(e){case"left":return"groupBlock.left";case"removed":return"groupBlock.removed";case"dismissed":return"groupBlock.dismissed";default:return"groupBlock.unknownRestricted"}}function N(e){return l.has(e)}function h(e){return m.has(e)}function _(e,t=Date.now()){return"channel"===e?.type?o(e,t):"group"===e?.type?y(e.groupState):""}function w(e,t,o,i={}){const r=e.getProductClient();if(null===r)return"";const a=o??r.conversations.list().find(e=>e.ref.conversationId===t)?.ref.conversationType;if(void 0===a||"supergroup"===a)return"";const s=r.capabilities.get({conversationType:a,conversationId:t}).value.canSendMessages;return n(a,s,i)}async function b(e,t,n){const o=e.getClient(),i=t.text.trim();if(null===o)return n.setNote(n.t("common.notConnected")),!1;if(""===t.conversationId)return n.setNote(n.t("common.selectOrOpenConversation")),!1;if(""===i)return!1;const r=e.getGeneration();try{const o=t.conversationType;if(void 0===o)return n.setNote(n.t("common.conversationTypeNotReady")),!1;const a=g(n,t.conversationId,o);if(void 0===a)return n.setNote(n.t("common.conversationNotReady")),!1;const s=w(e,t.conversationId,o);if(""!==s)return n.setNote(n.t(s)),!1;const d=p(n,a);try{const s=await a.messages.sendText(i,{...h(o)?{mentions:M(t.mention)}:{},...void 0===t.refMessageId?{}:{replyToMessageId:t.refMessageId}});return n.refreshActiveMessages(),s.ok?e.getGeneration()===r:(e.getGeneration()===r&&n.setNote(n.t("send.failed",{reason:s.error.code})),!1)}finally{d()}}catch(t){return e.getGeneration()===r&&n.setNote(n.t("send.failed",{reason:t instanceof Error?t.message:String(t)})),!1}}async function A(e,t,n){const{kind:o,file:i,conversationId:r,conversationType:s,refMessageId:d}=t,l=n.t(`label.${o}`);if(null===e.getClient())return n.setNote(n.t("common.notConnected")),!1;if(""===r||void 0===s)return n.setNote(n.t("common.conversationNotReady")),!1;const m=g(n,r,s);if(void 0===m)return n.setNote(n.t("common.conversationNotReady")),!1;const M=w(e,r,s);if(""!==M)return n.setNote(n.t(M)),!1;const y="video"===o?u:"file"===o?v:"sticker"===o?3145728:f;if(i.size>y)return n.pushMediaLimitItem({name:i.name,sizeMb:i.size/1024/1024,label:l,maxMb:Math.round(y/1024/1024)}),n.showWarning?.(n.t("send.mediaTooLarge",{name:i.name,label:l,maxMb:Math.round(y/1024/1024)})),!1;const N=e.getGeneration();if(0===i.size)return e.getGeneration()===N&&n.setNote(n.t("send.mediaEmpty",{label:l})),!1;if("sticker"===o&&!await a(i))return e.getGeneration()===N&&n.setNote(n.t("send.mediaFormatMismatch",{name:i.name})),!1;const h=p(n,m);let _;try{if("image"===o&&!await c(i))return e.getGeneration()===N&&n.setNote(n.t("send.imageFormatUnsupported",{name:i.name})),!1;if(e.getGeneration()!==N)return!1;_="file"===o?void 0:e.createLocalMediaPreview(i);const a=t.localPreviewMetadata;if(e.getGeneration()!==N)return void 0!==_&&e.discardLocalMediaPreview(_),!1;const f=await("image"===o?m.messages.sendImage(i,{...void 0===_?{}:{localPreviewUrl:_},...void 0===a?{}:{localPreviewMetadata:a},...void 0===d?{}:{replyToMessageId:d}}):"video"===o?m.messages.sendVideo(i,{...void 0===_?{}:{localPreviewUrl:_},...void 0===a?{}:{localPreviewMetadata:a},...void 0===d?{}:{replyToMessageId:d}}):"sticker"===o?m.messages.sendGif(i,{...void 0===_?{}:{localPreviewUrl:_},...void 0===d?{}:{replyToMessageId:d}}):m.messages.sendFile(i,{fileName:i.name,...void 0===t.caption?{}:{caption:t.caption},...void 0===t.filesAlbum?{}:{filesAlbum:t.filesAlbum},...void 0===d?{}:{replyToMessageId:d}}));if(n.refreshActiveMessages(),!f.ok){if(e.getGeneration()===N&&"IM_SDK_MEDIA_PAUSED"!==f.error.code&&"IM_SDK_MEDIA_CANCELLED"!==f.error.code&&("IM_SDK_VIDEO_DURATION_TOO_LONG"===f.error.code?n.showWarning?.(n.t("send.videoTooLong",{name:i.name,maxMinutes:5})):"IM_SDK_VIDEO_DURATION_UNAVAILABLE"===f.error.code?n.showWarning?.(n.t("send.videoDurationUnavailable",{name:i.name})):n.setNote(n.t("send.mediaFailed",{label:l,reason:f.error.code}))),void 0!==_){const t=I(m,_);void 0===t?e.discardLocalMediaPreview(_):e.trackLocalMediaPreview({conversationId:r,conversationType:s,messageId:t},_)}return!1}return e.getGeneration()===N}catch(t){if(e.getGeneration()===N&&n.setNote(n.t("send.mediaFailed",{label:l,reason:t instanceof Error?t.message:String(t)})),void 0!==_){const t=I(m,_);void 0===t?e.discardLocalMediaPreview(_):e.trackLocalMediaPreview({conversationId:r,conversationType:s,messageId:t},_)}return!1}finally{h()}}async function T(e,t,n){const{kind:o,file:i,messageId:r,conversationId:a,conversationType:s}=t,d=n.t(`label.${o}`);if(null===e.getClient())return n.setNote(n.t("common.notConnected")),!1;const c=g(n,a,s);if(void 0===c)return n.setNote(n.t("common.conversationNotReady")),!1;const l=w(e,a,s);if(""!==l)return n.setNote(n.t(l)),!1;const m="video"===o?u:v;if(i.size>m)return n.pushMediaLimitItem({name:i.name,sizeMb:i.size/1024/1024,label:d,maxMb:Math.round(m/1024/1024)}),n.showWarning?.(n.t("send.mediaTooLarge",{name:i.name,label:d,maxMb:Math.round(m/1024/1024)})),!1;const f=e.getGeneration();if(0===i.size)return e.getGeneration()===f&&n.setNote(n.t("send.mediaEmpty",{label:d})),!1;const M=p(n,c);let y;try{if(y="video"===o?e.createLocalMediaPreview(i):void 0,e.getGeneration()!==f)return void 0!==y&&e.discardLocalMediaPreview(y),!1;const t=await("video"===o?c.messages.replaceInterruptedVideo(r,i,{...void 0===y?{}:{localPreviewUrl:y}}):c.messages.replaceInterruptedFile(r,i,{fileName:i.name}));if(n.refreshActiveMessages(),!t.ok){e.getGeneration()===f&&"IM_SDK_MEDIA_PAUSED"!==t.error.code&&"IM_SDK_MEDIA_CANCELLED"!==t.error.code&&("IM_SDK_VIDEO_DURATION_TOO_LONG"===t.error.code?n.showWarning?.(n.t("send.videoTooLong",{name:i.name,maxMinutes:5})):"IM_SDK_VIDEO_DURATION_UNAVAILABLE"===t.error.code?n.showWarning?.(n.t("send.videoDurationUnavailable",{name:i.name})):n.setNote(n.t("send.mediaFailed",{label:d,reason:t.error.code})));const o=void 0!==y&&c.getSnapshot().messages.some(e=>e.id===r&&"video"===e.contentType&&e.body.video?.url===y);return void 0===y||o?void 0!==y&&e.trackLocalMediaPreview({conversationId:a,conversationType:s,messageId:r},y):e.discardLocalMediaPreview(y),!1}return e.getGeneration()===f}catch(t){if(e.getGeneration()===f&&n.setNote(n.t("send.mediaFailed",{label:d,reason:t instanceof Error?t.message:String(t)})),void 0!==y){I(c,y)===r?e.trackLocalMediaPreview({conversationId:a,conversationType:s,messageId:r},y):e.discardLocalMediaPreview(y)}return!1}finally{M()}}function C(e){const t=e.getMediaConfig()?.buckets.voice;return void 0!==t&&""!==t}async function D(e,t,n){const{payload:o,conversationId:i,conversationType:r,refMessageId:a}=t;if(null===e.getClient())return n.setNote(n.t("common.notConnected")),!1;if(""===i||void 0===r)return n.setNote(n.t("common.conversationNotReady")),!1;const s=g(n,i,r);if(void 0===s)return n.setNote(n.t("common.conversationNotReady")),!1;const d=w(e,i,r);if(""!==d)return n.setNote(n.t(d)),!1;if(0===o.data.length)return n.setNote(n.t("send.voiceEmpty")),!1;if(!C(e))return n.setNote(n.t("send.voiceStorageNotConfigured")),!1;const c=e.getGeneration(),l=p(n,s);try{const t=new File([o.data],o.filename,{type:o.mimeType}),i=await s.messages.sendVoice(t,{durationMs:o.durationMs,waveform:o.waveform,...void 0===a?{}:{replyToMessageId:a}});return n.refreshActiveMessages(),i.ok?e.getGeneration()===c&&(e.putSelfVoiceBytes(i.message.id,o.data),!0):(e.getGeneration()===c&&"IM_SDK_MEDIA_PAUSED"!==i.error.code&&"IM_SDK_MEDIA_CANCELLED"!==i.error.code&&n.setNote(n.t("send.voiceFailed",{reason:i.error.code})),!1)}catch(t){return e.getGeneration()===c&&n.setNote(n.t("send.voiceFailed",{reason:t instanceof Error?t.message:String(t)})),!1}finally{l()}}const L=/* @__PURE__ */new Set(["IM_SDK_VIDEO_TOO_LARGE","IM_SDK_VIDEO_PREVIEW_METADATA_INVALID","IM_SDK_VIDEO_DURATION_TOO_LONG","IM_SDK_VIDEO_DURATION_UNAVAILABLE"]);async function E(e,t,n){const{caption:o,conversationId:i,conversationType:a,items:s,refMessageId:d}=t;if(null===e.getClient())return n.setNote(n.t("common.notConnected")),!1;if(""===i||void 0===a)return n.setNote(n.t("common.conversationNotReady")),!1;const l=g(n,i,a);if(void 0===l)return n.setNote(n.t("common.conversationNotReady")),!1;const m=w(e,i,a);if(""!==m)return n.setNote(n.t(m)),!1;if(0===s.length)return!1;const v=e.getGeneration();for(const e of s){const t=n.t(`label.${e.kind}`),o="video"===e.kind?u:f;if(e.file.size>o)return n.pushMediaLimitItem({name:e.file.name,sizeMb:e.file.size/1024/1024,label:t,maxMb:Math.round(o/1024/1024)}),n.showWarning?.(n.t("send.mediaTooLarge",{name:e.file.name,label:t,maxMb:Math.round(o/1024/1024)})),!1;if(0===e.file.size)return n.setNote(n.t("send.mediaEmpty",{label:t})),!1}for(const t of s){const o=await r(t.file);if("image"===t.kind&&"not-gif"===o&&!await c(t.file))return e.getGeneration()===v&&n.setNote(n.t("send.imageFormatUnsupported",{name:t.file.name})),!1;if("not-gif"!==o)return e.getGeneration()!==v||n.showWarning?.(n.t("send.mediaFailed",{label:n.t("label.image"),reason:"IM_SDK_MEDIA_ALBUM_GIF_UNSUPPORTED"})),!1}if(e.getGeneration()!==v)return!1;const M=p(n,l),y=s.map(t=>e.createLocalMediaPreview(t.file)),N=t=>{y.forEach((n,o)=>{void 0===t?e.discardLocalMediaPreview(n):e.trackLocalMediaPreview({conversationId:i,conversationType:a,messageId:t,itemIndex:o},n)})};try{if(e.getGeneration()!==v)return N(void 0),!1;const i=await l.messages.sendMediaAlbum(s.map((e,t)=>({kind:e.kind,file:e.file,localPreviewUrl:y[t],...void 0===e.localPreviewMetadata?{}:{localPreviewMetadata:e.localPreviewMetadata}})),{...void 0===o||""===o.trim()?{}:{caption:o},...void 0===t.hd?{}:{hd:t.hd},...void 0===d?{}:{replyToMessageId:d}});if(n.refreshActiveMessages(),!i.ok){if(e.getGeneration()===v&&"IM_SDK_MEDIA_PAUSED"!==i.error.code&&"IM_SDK_MEDIA_CANCELLED"!==i.error.code){const e=n.t(L.has(i.error.code)?"label.video":"label.image");n.setNote(n.t("send.mediaFailed",{label:e,reason:i.error.code}))}return N(I(l,y[0])),!1}return e.getGeneration()===v}catch(t){return e.getGeneration()===v&&n.setNote(n.t("send.mediaFailed",{label:n.t("label.image"),reason:t instanceof Error?t.message:String(t)})),N(I(l,y[0])),!1}finally{M()}}async function G(t,n,o){const i=n.files.slice(0,e);n.files.length>e&&(o.setMediaBatchLimit({selectedCount:n.files.length,maxCount:e}),o.showWarning?.(o.t("send.mediaCountLimit",{maxCount:e,ignoredCount:n.files.length-e})));const r=t.getGeneration(),a=[];for(const e of i){const i=await s(e);if(t.getGeneration()!==r)break;"unsupported-image"!==i?a.push(A(t,{kind:i,file:e,conversationId:n.conversationId,conversationType:n.conversationType,...void 0===n.refMessageId?{}:{refMessageId:n.refMessageId}},o)):(o.setNote(o.t("send.imageFormatUnsupported",{name:e.name})),a.push(Promise.resolve(!1)))}const d=await Promise.all(a.map(e=>e.catch(()=>!1)));return Object.freeze({selectedCount:n.files.length,processedCount:a.length,acceptedCount:d.filter(Boolean).length,rejectedByLimit:n.files.length>e})}async function S(n,o,i){if(void 0!==o.caption&&Array.from(o.caption).length>d)return i.setNote(i.t("send.mediaFailed",{label:i.t("label.file"),reason:"IM_SDK_MEDIA_ALBUM_CAPTION_TOO_LONG"})),Object.freeze({selectedCount:o.files.length,processedCount:0,acceptedCount:0,rejectedByLimit:!1});let r=0,a=0;const s=Boolean(o.caption?.trim());let c=-1;for(let t=0;t<Math.min(o.files.length,e);t++){const e=o.files[t];e.size>0&&e.size<=v&&""!==e.name.trim()&&(c=t)}const l=await t(o.files,async e=>{const t=a++,d=await A(n,{kind:"file",...s?{filesAlbum:!0,...t===c?{caption:o.caption}:{}}:{},file:e,conversationId:o.conversationId,conversationType:o.conversationType,...void 0===o.refMessageId?{}:{refMessageId:o.refMessageId}},i);return d&&(r+=1),d},{startAll:!0,onRejectedByLimit:e=>{i.setMediaBatchLimit({selectedCount:e.selectedCount,maxCount:e.maxCount}),i.showWarning?.(i.t("send.mediaCountLimit",{maxCount:e.maxCount,ignoredCount:e.selectedCount-e.maxCount}))}});return Object.freeze({selectedCount:o.files.length,processedCount:l.processedCount,acceptedCount:r,rejectedByLimit:l.rejectedByLimit})}async function P(e,t,n){const o=e.getClient(),i=n.getConversationHandle();if(null===o||void 0===i)return n.setNote(n.t("send.cancelFailed")),!1;const r=e.getGeneration();try{const a=o.media.getSnapshot().filter(e=>"upload"===e.direction&&e.messageId===t&&e.ref.conversationType===i.ref.conversationType&&e.ref.conversationId===i.ref.conversationId);return 1!==a.length?(n.setNote(n.t("send.cancelFailed")),!1):(await o.media.cancel(a[0].id),e.getGeneration()===r&&n.getConversationHandle()===i&&(n.refreshActiveMessages(),!0))}catch{return e.getGeneration()===r&&n.getConversationHandle()===i&&n.setNote(n.t("send.cancelFailed")),!1}}async function O(e,t,n,o){const i=e.getClient();if(null===i)return!1;const r=n.getConversationHandle();if(void 0===r)return n.setNote(n.t("send.retryFailed")),!1;const a=e.getGeneration(),s=i.media.getSnapshot().find(e=>"upload"===e.direction&&("failed"===e.state||"canceled"===e.state)&&e.messageId===t&&e.ref.conversationType===r.ref.conversationType&&e.ref.conversationId===r.ref.conversationId);if(void 0!==s)try{return void 0===o?await i.media.retry(s.id):await i.media.retry(s.id,o),e.getGeneration()!==a?!1:(n.refreshActiveMessages(),!0)}catch{return e.getGeneration()===a&&n.setNote(n.t("send.retryFailed")),!1}if(!0===o?.restartUpload)return n.setNote(n.t("send.retryFailed")),!1;const d=i.outbox.getSnapshot().find(e=>e.messageId===t);if(void 0===d||d.ref.conversationType!==r.ref.conversationType||d.ref.conversationId!==r.ref.conversationId)return n.setNote(n.t("send.retryFailed")),!1;try{return await i.outbox.retry(t),e.getGeneration()!==a?!1:(n.refreshActiveMessages(),!0)}catch{return e.getGeneration()===a&&n.setNote(n.t("send.retryFailed")),!1}}export{i as blockReasonForChannelState,y as blockReasonForGroupState,_ as blockReasonForSession,P as cancelMediaUpload,r as classifyGifFile,a as isGifFile,C as isVoiceStorageConfigured,T as replaceInterruptedMediaFile,N as requiresConversationEncryption,O as retryMessage,S as sendAsFilesBatch,w as sendBlockReasonFor,E as sendMediaAlbum,A as sendMediaFile,G as sendMediaFilesBatch,b as sendText,D as sendVoice,h as supportsConversationMention,M as toMentionInputs};
@@ -0,0 +1 @@
1
+ function e(e){if(0===e.markers.length)return null;const t=e.viewportTop+e.overlayTop;if(e.markers[0].top>t+1)return null;let r=0;for(let a=0;a<e.markers.length&&!(e.markers[a].top>t+1);a+=1)r=a;const a=e.markers[r],i=t+e.overlayHeight,o=e.markers.filter(e=>e.top<i+1&&e.top+e.height>t-1).at(-1),l=void 0===o?0:Math.max(0,Math.min(o.top+o.height,i)-Math.max(o.top,t)),n=void 0===o?1:Math.max(1,Math.min(o.height,e.overlayHeight)),h=Math.min(1,l/n);return{key:a.key,label:a.label,inlineOpacity:1-h,...void 0===o?{}:{inlineDateKey:o.key}}}export{e as resolveImThreadActiveDate};
@@ -0,0 +1 @@
1
+ import{resolveMessageTimelineTimestamp as e,shouldShowChatDateSeparator as s,getLocalDayKey as t}from"../utils/time-display.js";import{resolveMessageBodyKind as n}from"./resolve-message-body-kind.js";function d(d){const r=[...d.leadingItems??[]],a="located"===d.entryUnread.state?d.entryUnread:null;let o,i=null,u=!1;for(const m of d.messages){const l=e(m.createdAt,m.serverTime),y=void 0!==l&&s(l,o);void 0!==l&&y&&r.push({kind:"date-separator",key:`date-${t(l)}-${m.id}`,label:d.formatDate(l)}),o=l,u||null===a||m.id!==a.firstMessageId||(r.push({kind:"entry-unread",key:`entry-unread-${m.id}`,...void 0===a.count?{}:{count:a.count}}),u=!0);const c=d.beforeMessageItems?.(m)??[];r.push(...c),"system"!==n(m)?(r.push({kind:"message",key:`message-${m.id}`,message:m,firstOfRun:y||m.senderId!==i}),i=m.senderId):(r.push({kind:"system",key:m.id,message:m}),i=null)}return r}export{d as createThreadItems};
@@ -0,0 +1 @@
1
+ function e(e){if("object"==typeof e&&null!==e){if("name"in e&&"AbortError"===e.name)return{ok:!1,reason:"cancelled"};if("code"in e){if("IM_SDK_MESSAGE_NOT_FOUND"===e.code)return{ok:!1,reason:"not-found"};if("IM_SDK_MESSAGE_ANCHOR_UNAVAILABLE"===e.code||"IM_SDK_MESSAGE_LOOKUP_UNSUPPORTED"===e.code)return{ok:!1,reason:"anchor-unavailable",cause:e}}}return{ok:!1,reason:"load-failed",cause:e}}export{e as classifyImMessageLocateError};
@@ -0,0 +1 @@
1
+ import{shouldTrackRemoteMessageForBadge as e}from"./viewport-rules.js";function n(n){const t=/* @__PURE__ */new Set;function r(e){return e!==t.size&&(n?.(t.size),!0)}function o(e){const n=t.size;for(const n of e)""!==n&&t.add(n);return r(n)}return{get count(){return t.size},add:o,trackRemote:function(n,t){return e(t)&&o(n)},acknowledgeVisible:function(e){const n=t.size;for(const n of e)t.delete(n);return r(n)},clear:function(){const e=t.size;return t.clear(),r(e)}}}export{n as createNewMessageBadgeController};
@@ -0,0 +1 @@
1
+ import{classifyStickerImageType as e}from"../../../im-core/src/mapping/sticker-body.js";const o={customerService:"customerService",text:"text",image:"image",video:"video",voice:"voice",file:"file",filesAlbum:"filesAlbum",sticker:"sticker",contact:"contact",miniProgram:"miniProgram",robot:"robot",game:"game",transfer:"transfer",gift:"gift",redPacket:"redPacket",call:"call",liveRoom:"liveRoom",mediaAlbum:"mediaAlbum",system:"system",unknown:"unknown"};function t(t){return!0===t.encryption.decryptFailed?"decrypt-failed":function(e){switch(e.contentType){case"customerService":return void 0!==e.body.customerService&&(""!==e.body.customerService.text||e.body.customerService.images.length>0||e.body.customerService.files.length>0);case"text":return"string"==typeof e.body.text;case"image":return void 0!==e.body.image&&"string"==typeof e.body.image.url;case"video":return void 0!==e.body.video&&"string"==typeof e.body.video.url;case"voice":return void 0!==e.body.voice;case"filesAlbum":return(e.body.filesAlbum?.items.length??0)>0;case"file":return void 0!==e.body.file;case"sticker":return void 0!==e.body.sticker;case"contact":return void 0!==e.body.contact;case"miniProgram":return void 0!==e.body.miniProgram&&"string"==typeof e.body.miniProgram.appId;case"robot":return void 0!==e.body.robot&&Array.isArray(e.body.robot.modules)&&Array.isArray(e.body.robot.commands);case"transfer":return void 0!==e.body.transfer&&"string"==typeof e.body.transfer.serialNumber;case"gift":{const o=e.body.gift;return void 0!==o&&"string"==typeof o.serialNumber&&"string"==typeof o.giftName&&(0===o.giftType||1===o.giftType||2===o.giftType)}case"redPacket":{const o=e.body.redPacket;return void 0!==o&&""!==o.packetId.trim()&&(1===o.packetType||2===o.packetType||3===o.packetType||4===o.packetType)}case"call":return void 0!==e.body.call&&("audio"===e.body.call.callKind||"video"===e.body.call.callKind)&&"number"==typeof e.body.call.durationMs;case"liveRoom":{const o=e.body.liveRoom;return!(void 0===o||"string"!=typeof o.liveRoomId||""!==o.liveType&&"video"!==o.liveType&&"voice"!==o.liveType&&"dual-phone"!==o.liveType&&"screen-record"!==o.liveType&&"voice-chat"!==o.liveType||"preview"!==o.liveRoomStatus&&"live"!==o.liveRoomStatus&&"ended"!==o.liveRoomStatus||"boolean"!=typeof o.isFocus||"boolean"!=typeof o.isReservation)}case"game":{const o=e.body.game;return"dice"===o?.gameType?Number.isInteger(o.value)&&o.value>=1&&o.value<=6:"rock-paper-scissors"===o?.gameType&&Number.isInteger(o.value)&&o.value>=1&&o.value<=3}case"mediaAlbum":{const o=e.body.mediaAlbum;return void 0!==o&&o.items.length>0&&o.items.every(e=>"string"==typeof e.url&&""!==e.url)}case"system":return void 0!==e.body.system;case"unknown":return void 0!==e.body.unknown}}(t)?"sticker"===t.contentType?e(t.body.sticker.imageType):o[t.contentType]:"unknown"}export{t as resolveMessageBodyKind};
@@ -0,0 +1 @@
1
+ function e(e){return void 0!==e.deletedForEveryone?"hidden":void 0!==e.recalled?"recalled":"content"}export{e as resolveQuotedMessagePresentation};
@@ -0,0 +1 @@
1
+ function t(t){const o=t.targetTop-t.viewportTop,i=t.currentScrollTop+o-(t.viewportHeight-t.targetHeight)/2,n=Math.max(0,t.scrollHeight-t.viewportHeight);return Math.min(n,Math.max(0,i))}function o(t){return null!==t&&t.clientWidth>0&&t.clientHeight>0}function i(t){return!(t.locatedAt<=0||t.duration<0||t.now<t.locatedAt)&&t.now-t.locatedAt<=t.duration}function n(t){return!(!Number.isFinite(t.topThreshold)||t.topThreshold<0)&&(t.currentScrollTop<t.previousScrollTop&&t.currentScrollTop<=t.topThreshold)}function e(t,o){return t.find(t=>t.bottom>o.top&&t.top<o.bottom)??t[0]}function r(t){return t.anchorTop??t.top}function s(t,o){const i=e(t,o);return void 0===i?void 0:{id:i.id,offset:r(i)-o.top}}function u(t,o,i){if(void 0===t)return;const n=o.find(o=>o.id===t.id);return void 0!==n&&n.bottom>i.top&&n.top<i.bottom?{id:t.id,offset:r(n)-i.top}:s(o,i)??t}function c(t,o,i){if(void 0===t)return;const n=o.find(o=>o.id===t.id);return void 0===n?void 0:r(n)-i.top-t.offset}function l(t,o,i=3){return!Number.isFinite(i)||i<=0?[]:t.filter(t=>t.bottom>o.top&&t.top<o.bottom).slice(0,Math.floor(i)).map(t=>({id:t.id,offset:r(t)-o.top}))}function a(t,o,i){for(const n of t){const t=c(n,o,i);if(void 0!==t)return t}}function d(t){return t.sameConversation&&!t.isHistoryWindow&&!t.isLocating&&!t.isLocateProtected&&t.userKeptLatestIntent}function f(t){return t.isPageVisible&&!t.isHistoryWindow&&!t.isLocating&&!t.isLocateProtected&&(t.isOwnMessage||t.isAtBottom)}function p(t){return t.isLoadingOlder&&void 0!==t.previousTailId&&t.previousTailId!==t.currentTailId&&t.previousMessageIds.includes(t.currentTailId)}function h(t,o){return void 0!==t&&!o.has(t)}async function g(t,o){let i=0;for(;t();){if(await o()<=0)break;i+=1}return i}function m(t){return t.hasMoreHistory&&Number.isFinite(t.scrollHeight)&&Number.isFinite(t.clientHeight)&&t.scrollHeight>0&&t.clientHeight>0&&t.scrollHeight<=t.clientHeight}function v(t){return t.isHistoryWindow&&!t.isPageSettling&&t.isAtBottom&&(t.currentScrollTop>t.previousScrollTop||!0===t.allowStationaryBoundary)}function T(t){return!t.isPageVisible||!t.isAtBottom||t.isHistoryWindow}function H(t){const o=Math.max(0,t.margin);return t.messageTop<t.viewportBottom-o&&t.messageBottom>t.viewportTop+o}export{i as isMessageLocateScrollProtected,p as isMessageTailChangeFromOlderWindowTrim,o as isMessageViewportMeasurable,H as isMessageVisibleForNewMessageBadge,g as loadOlderUntilBoundary,u as refreshPrependMessageAnchorPosition,t as resolveCenteredMessageScrollTop,e as resolvePrependMessageAnchor,c as resolvePrependMessageAnchorAdjustment,s as resolvePrependMessageAnchorPosition,a as resolveSurvivingMessageAnchorAdjustment,l as resolveVisibleMessageAnchorPositions,d as shouldCompleteInitialViewport,m as shouldFillInitialHistoryViewport,f as shouldFollowIncomingMessage,v as shouldLoadNewerHistoryPage,n as shouldPrefetchOlderHistory,h as shouldRestoreMessageViewportFocus,T as shouldTrackRemoteMessageForBadge};
@@ -0,0 +1 @@
1
+ const t=["[100分]","[VS]","[上]","[下]","[不听]","[不看]","[不高兴]","[亲吻]","[伞]","[击掌]","[南瓜头]","[右]","[哈哈]","[哦]","[啤酒]","[喷嚏]","[圣诞树]","[天使笑]","[奖杯]","[害怕]","[左]","[平静]","[强壮]","[彩虹]","[得意]","[微笑]","[心累]","[心跳]","[思考]","[恶魔怒]","[恶魔笑]","[成长]","[抓狂]","[拳头]","[挥手]","[握拳]","[无]","[星星]","[星星眼]","[月饼]","[气愤]","[满足]","[火]","[熊猫]","[爱你]","[牛]","[狗]","[猫]","[疑惑]","[皇冠]","[瞌睡]","[祝]","[秘]","[篮球]","[美味]","[药]","[足球]","[闪电]","[闪耀的心]","[雪花]","[饺子]","[马]","[鬼]","[鸡]","[鼓掌]","[鼠]","[ALLIN]","[伤心]","[便便]","[偷笑]","[傲慢]","[傻笑]","[冒汗]","[凋零]","[发呆]","[可怜]","[叹气]","[吃惊]","[吃瓜]","[合掌]","[呆滞]","[呕吐]","[咒骂]","[咖啡]","[哇]","[喜爱]","[嘴唇]","[嘿哈]","[困]","[困住]","[大哭]","[大笑]","[太阳]","[失望]","[奋斗]","[奸笑]","[委屈]","[害羞]","[尬笑]","[干杯]","[庆祝]","[心碎]","[恐惧]","[惊讶]","[愉悦]","[感冒]","[愤怒]","[懊恼]","[戏弄]","[打击]","[抠鼻]","[抱拳]","[担心]","[拜拜]","[拥抱]","[捂脸]","[握手]","[搬砖]","[收到]","[收割]","[方块]","[无语]","[晕]","[月亮]","[机智]","[汗]","[海蒂]","[炸弹]","[烟花]","[熊哭了]","[爆竹]","[爱心]","[牛市]","[狗头]","[猪]","[玫瑰]","[生日蛋糕]","[白眼]","[皱眉]","[看涨]","[看跌]","[眨眼]","[睡觉]","[礼物]","[社会]","[福]","[笑哭]","[糖果]","[红包]","[耶]","[脸红]","[苦涩]","[菜刀]","[衰]","[裂开]","[要哭了]","[调皮]","[赞]","[踩]","[鄙视]","[酷]","[金钱]","[锁箱]","[长草]","[问号]","[闹剧]","[阴险]","[降落伞]","[难过]","[飞吻]","[骷髅]","[麻将]"];export{t as default};
@@ -0,0 +1 @@
1
+ import e from"./emoji-legacy-catalog.json.js";import{IM_EMOJI_CATALOG as t}from"../../../../im-sdk/src/product/emoji-catalog.js";const n=t,o=new Set(e),r="/images/emoji/v1",c=(()=>{const e=/* @__PURE__ */new Map;for(const t of n)for(const n of t.tokens)e.set(n,t);return e})();function i(e){return c.get(e)}function s(e,t=r){return`${t}/${e.file}`}const l=/\[[^[\]]{1,20}\]/g,u=(()=>{const e=/* @__PURE__ */new Map;for(const t of n)e.set(t.code,t);return e})();function d(e,t){const n=u.get(e);return void 0===n?void 0:s(n,t)}const f=/\[[^[\]]{1,20}\]/;function m(e){return f.test(e)}function g(){return e=>{const t=[];for(const n of e.matchAll(l)){const e=i(n[0]);void 0!==n.index&&(void 0===e?o.has(n[0])&&t.push({start:n.index,end:n.index+n[0].length-1,segment:{kind:"legacy-emoji-placeholder",text:n[0]}}):t.push({start:n.index,end:n.index+n[0].length-1,segment:{kind:"emoji",text:n[0],code:e.code}}))}return t}}const a=g();function p(e){if("text"!==e.contentType||!0===e.encryption.decryptFailed||void 0!==e.mention)return null;const t=e.body.text;if(void 0===t||""===t)return null;const n=a(t);if(0===n.length)return null;let o=0;const r=[];for(const e of n){if(e.start!==o)return null;if("emoji"!==e.segment.kind&&"legacy-emoji-placeholder"!==e.segment.kind)return null;r.push(e.segment),o=e.end+1}return o!==t.length?null:Object.freeze({segments:Object.freeze(r),count:r.length})}export{r as DEFAULT_EMOJI_ASSET_BASE,n as EMOJI_CATALOG,l as EMOJI_TOKEN_RE,g as createEmojiMatcher,s as emojiAssetUrl,d as emojiUrlByCode,m as hasEmojiCandidate,i as resolveEmojiToken,p as resolveStandaloneEmojiMessage};
@@ -0,0 +1 @@
1
+ const e=14,t="game:rps",n="game:dice";function r(e){if(0===e.stableKey.length||e.stableKey.trim()!==e.stableKey)throw new TypeError("Emoji recent item 需要非空且无首尾空白的 stableKey")}function s(e,t){r(t);const n=/* @__PURE__ */new Set([t.stableKey]),s=[t];for(const t of e)if(r(t),!n.has(t.stableKey)&&(n.add(t.stableKey),s.push(t),14===s.length))break;return Object.freeze(s)}export{n as EMOJI_GAME_DICE_STABLE_KEY,t as EMOJI_GAME_RPS_STABLE_KEY,e as MAX_RECENT_EMOJI_COUNT,s as prependRecentEmoji};
@@ -0,0 +1 @@
1
+ const f=["0x1f600","0x1f603","0x1f604","0x1f601","0x1f606","0x1f605","0x1f923","0x1f602","0x1f642","0x1f643","0x1f609","0x1f60a","0x1f607","0x1f970","0x1f60d","0x1f929","0x1f618","0x1f617","0x1f61a","0x1f619","0x1f60b","0x1f61b","0x1f61c","0x1f92a","0x1f61d","0x1f911","0x1f917","0x1f92d","0x1f92b","0x1f914","0x1f910","0x1f928","0x1f610","0x1f611","0x1f636","0x1f60f","0x1f612","0x1f644","0x1f62c","0x1f925","0x1f60c","0x1f614","0x1f62a","0x1f924","0x1f634","0x1f637","0x1f912","0x1f915","0x1f922","0x1f92e","0x1f927","0x1f975","0x1f976","0x1f974","0x1f635","0x1f92f","0x1f920","0x1f973","0x1f60e","0x1f913","0x1f9d0","0x1f615","0x1f61f","0x1f641","0x1f62e","0x1f62f","0x1f632","0x1f633","0x1f97a","0x1f626","0x1f627","0x1f628","0x1f630","0x1f625","0x1f622","0x1f62d","0x1f631","0x1f616","0x1f623","0x1f61e","0x1f613","0x1f629","0x1f62b","0x1f971","0x1f624","0x1f621","0x1f620","0x1f92c","0x1f608","0x1f47f","0x1f480","0x1f4a9","0x1f921","0x1f479","0x1f47a","0x1f47b","0x1f47d","0x1f47e","0x1f916","0x1f63a","0x1f638","0x1f639","0x1f63b","0x1f63c","0x1f63d","0x1f640","0x1f63f","0x1f63e","0x1f648","0x1f649","0x1f64a","0x1f48c","0x1f498","0x1f49d","0x1f496","0x1f497","0x1f493","0x1f49e","0x1f495","0x1f49f","0x1f494","0x1f9e1","0x1f49b","0x1f49a","0x1f499","0x1f49c","0x1f90e","0x1f5a4","0x1f90d","0x1f48b","0x1f4af","0x1f4a2","0x1f4a5","0x1f4ab","0x1f4a6","0x1f4a8","0x1f4ac","0x1f4ad","0x1f4a4","0x1f44b","0x1f91a","0x1f590","0x270b","0x1f596","0x1f44c","0x1f90f","0x270c","0x1f91e","0x1f91f","0x1f918","0x1f919","0x1f448","0x1f449","0x1f446","0x1f595","0x1f447","0x1f44d","0x1f44e","0x270a","0x1f44a","0x1f91b","0x1f91c","0x1f44f","0x1f64c","0x1f450","0x1f932","0x1f91d","0x1f64f","0x270d","0x1f485","0x1f933","0x1f4aa","0x1f9be","0x1f9bf","0x1f9b5","0x1f9b6","0x1f442","0x1f9bb","0x1f443","0x1f9e0","0x1f9b7","0x1f9b4","0x1f440","0x1f445","0x1f444","0x1f435","0x1f9a7","0x1f436","0x1f98a","0x1f99d","0x1f431","0x1f981","0x1f42f","0x1f42e","0x1f437","0x1f43d","0x1f42d","0x1f439","0x1f430","0x1f43b","0x1f428","0x1f43c","0x1f9a5","0x1f983","0x1f414","0x1f423","0x1f425","0x1f427","0x1f985","0x1f986","0x1f989","0x1f9a9","0x1f99a","0x1f99c","0x1f438","0x1f433","0x1f980","0x1f490","0x1f338","0x1f4ae","0x1f339","0x1f940","0x1f33a","0x1f33b","0x1f340","0x1f341","0x1f342","0x1f343","0x1f9c0","0x1f969","0x1f354","0x1f35f","0x1f355","0x1f32d","0x1f96a","0x1f32e","0x1f32f","0x1f365","0x1f36b","0x2615","0x1f37a","0x1f943","0x1f30f","0x1f9f1","0x1f6d1","0x1f6a7","0x2693","0x1f680","0x23f3","0x231a","0x23f0","0x1f553","0x1f319","0x1f31a","0x1f31b","0x1f31c","0x1f31d","0x1f31e","0x1fa90","0x2b50","0x1f31f","0x1f320","0x1f30c","0x26c5","0x1f300","0x1f308","0x1f302","0x2614","0x26a1","0x26c4","0x1f525","0x1f4a7","0x1f30a","0x1f383","0x1f384","0x1f386","0x1f387","0x1f9e8","0x2728","0x1f388","0x1f389","0x1f38a","0x1f38b","0x1f38d","0x1f38e","0x1f38f","0x1f390","0x1f391","0x1f9e7","0x1f380","0x1f381","0x1f3ab","0x1f3c6","0x1f3c5","0x1f947","0x1f948","0x1f949","0x1f3c1","0x1f6a9","0x1f38c","0x1f3f4"];export{f as default};
@@ -0,0 +1 @@
1
+ import e from"./unicode-emoji-catalog.json.js";function o(e){if(0===e.length||e.trim()!==e)throw new TypeError(`非法 Unicode emoji code: ${e}`);const o=e.split(" ");if(o.some(e=>0===e.length))throw new TypeError(`非法 Unicode emoji code: ${e}`);return Object.freeze(o.map(o=>function(e,o){if(!e.startsWith("0x")||e.length<=2)throw new TypeError(`非法 Unicode emoji code: ${o}`);const t=e.slice(2);for(const e of t)if(!"0123456789abcdef".includes(e))throw new TypeError(`非法 Unicode emoji code: ${o}`);const n=Number.parseInt(t,16);if(!Number.isSafeInteger(n)||n>1114111||n>=55296&&n<=57343)throw new RangeError(`Unicode emoji code point 越界: ${o}`);return n}(o,e)))}function t(e){return String.fromCodePoint(...o(e))}function n(e){return e.map(e=>`0x${e.toString(16)}`).join(" ")}const r=Object.freeze(e.map(function(e){const t=o(e),r=n(t);if(r!==e)throw new TypeError(`Unicode emoji code 必须使用 canonical 小写格式: ${e}`);return Object.freeze({stableKey:`unicode:${r}`,code:e,codePoints:t,text:String.fromCodePoint(...t),kind:"unicode"})})),i=/* @__PURE__ */new Map,c=/* @__PURE__ */new Map;for(const e of r){if(i.has(e.code)||c.has(e.text))throw new Error(`Unicode emoji 目录存在重复项: ${e.code}`);i.set(e.code,e),c.set(e.text,e)}for(const e of r){const o=65039===e.codePoints.at(-1)?e.codePoints.slice(0,-1):[...e.codePoints,65039],t=n(o),r=String.fromCodePoint(...o);i.has(t)||i.set(t,e),c.has(r)||c.set(r,e)}function s(e){if(e.startsWith("0x")){const t=n(o(e));return i.get(t)}return c.get(e)}export{r as UNICODE_EMOJI_CATALOG,o as parseUnicodeEmojiCode,s as resolveUnicodeEmoji,t as unicodeEmojiTextFromCode};
@@ -0,0 +1 @@
1
+ function t(t,e){if(0===e.length)return[{text:t,hit:!1}];const h=[];let i=0;for(const[n,s]of e)n>i&&h.push({text:t.slice(i,n),hit:!1}),h.push({text:t.slice(n,s),hit:!0}),i=s;return i<t.length&&h.push({text:t.slice(i),hit:!1}),h}export{t as highlightSegments};
@@ -0,0 +1 @@
1
+ const t=/\b(?:https?:\/\/|www\.)[^\s<>"')】]+/gi,n=/\b(?:https?:\/\/|www\.)/i,o=/[),.!?;:,。!?;:、)】]+$/u;function e(t){const n=/^www\./i.test(t)?`https://${t}`:t;try{const t=new URL(n);return"http:"===t.protocol||"https:"===t.protocol?t.href:void 0}catch{return}}function r(t){return n.test(t)}function c(){return n=>{const r=[];for(const c of n.matchAll(t)){if(void 0===c.index)continue;const t=c[0].replace(o,"");if(""===t)continue;const n=e(t);void 0!==n&&r.push({start:c.index,end:c.index+t.length-1,segment:{kind:"link",text:t,href:n}})}return r}}export{c as createLinkMatcher,r as hasLinkCandidate,e as normalizeLinkHref};
@@ -0,0 +1 @@
1
+ const e=9;function t(e={}){const t="undefined"!=typeof navigator?navigator:void 0,o=e.deviceMemoryGb??("number"==typeof t?.deviceMemory?t.deviceMemory:4),n=Math.floor(1024*o*1024*1024/8);return Math.min(536870912,Math.max(67108864,n))}async function o(e,o,n={}){if(0===e.length)return{processedCount:0,rejectedByLimit:!1};const i=e.length>9;i&&n.onRejectedByLimit?.({reason:"count-limit",maxCount:9,selectedCount:e.length});const r=e.slice(0,9);if(n.startAll)return await Promise.all(r.map(e=>o(e).catch(()=>!1))),{processedCount:r.length,rejectedByLimit:i};const c=t(n),a=Math.max(1,Math.floor(n.maxConcurrency??Number.POSITIVE_INFINITY));let s=0;const l=/* @__PURE__ */new Set;for(const e of r){for(;l.size>0&&(l.size>=a||s+e.size>c);)await Promise.race(l);s+=e.size;const t=o(e).catch(()=>!1).finally(()=>{s-=e.size,l.delete(t)});l.add(t)}return await Promise.all(l),{processedCount:r.length,rejectedByLimit:i}}export{e as MAX_BATCH_FILES,t as mediaBatchBudgetBytes,o as runMediaSendBatch};
@@ -0,0 +1 @@
1
+ function i(i,t){if(!Number.isFinite(i)||i<=0)throw new Error(`媒体展示策略 ${t} 必须是大于 0 的有限数`)}function t(t){const{intrinsicWidth:e,intrinsicHeight:r,availableWidth:a,policy:o}=t;i(a,"availableWidth"),function(t){if(i(t.fallbackAspectRatio,"fallbackAspectRatio"),!Array.isArray(t.rules)||0===t.rules.length)throw new Error("媒体展示策略 rules 不能为空");const e=/* @__PURE__ */new Set;t.rules.forEach((t,r)=>{const a=`rules[${r}]`;if(""===t.id.trim())throw new Error(`媒体展示策略 ${a}.id 不能为空`);if(e.has(t.id))throw new Error(`媒体展示策略规则 id 重复:${t.id}`);if(e.add(t.id),void 0!==t.minAspectRatio&&(!Number.isFinite(t.minAspectRatio)||t.minAspectRatio<0))throw new Error(`媒体展示策略 ${a}.minAspectRatio 必须是大于等于 0 的有限数`);if(void 0!==t.maxAspectRatio&&i(t.maxAspectRatio,`${a}.maxAspectRatio`),void 0!==t.minAspectRatio&&void 0!==t.maxAspectRatio&&t.minAspectRatio>=t.maxAspectRatio)throw new Error(`媒体展示策略 ${a} 的宽高比下界必须小于上界`);if(i(t.preferredWidth,`${a}.preferredWidth`),i(t.minWidth,`${a}.minWidth`),i(t.maxWidth,`${a}.maxWidth`),i(t.minHeight,`${a}.minHeight`),i(t.maxHeight,`${a}.maxHeight`),t.minWidth>t.preferredWidth||t.preferredWidth>t.maxWidth)throw new Error(`媒体展示策略 ${a}.preferredWidth 必须位于 minWidth 和 maxWidth 之间`);if(t.minHeight>t.maxHeight)throw new Error(`媒体展示策略 ${a}.minHeight 不能大于 maxHeight`);if("boolean"!=typeof t.allowUpscale)throw new TypeError(`媒体展示策略 ${a}.allowUpscale 必须是 boolean`);if("cover"!==t.fit&&"contain"!==t.fit)throw new Error(`媒体展示策略 ${a}.fit 只支持 cover 或 contain`)})}(o);const n=Number.isFinite(e)&&Number.isFinite(r)&&e>0&&r>0,h=n?e/r:o.fallbackAspectRatio,m=o.rules.find(i=>{const t=void 0===i.minAspectRatio||h>=i.minAspectRatio,e=void 0===i.maxAspectRatio||h<i.maxAspectRatio;return t&&e});if(void 0===m)throw new Error(`媒体展示策略没有匹配宽高比 ${h}`);const d=!m.allowUpscale&&n?Math.min(m.preferredWidth,e):m.preferredWidth,s=Math.min(a,m.maxWidth,Math.max(m.minWidth,d)),c=Math.max(1,Math.round(s)),p=c/h,f=Math.min(m.maxHeight,Math.max(m.minHeight,p)),l=Math.max(1,Math.round(f));return{width:c,height:l,aspectRatio:c/l,sourceAspectRatio:h,ruleId:m.id,fit:m.fit,aspectClamped:f!==p}}function e(i,t,e,r){if(!Number.isFinite(i)||!Number.isFinite(t)||i<=0||t<=0)return null;const a=Math.min(e/i,r/t,1);return{width:`${Math.max(1,Math.round(i*a))}px`,aspectRatio:`${i} / ${t}`}}export{e as calculateMediaBox,t as resolveMediaPresentation};
@@ -0,0 +1 @@
1
+ function t(t){if(!Number.isFinite(t)||t<=0)return"0:00";const n=Math.floor(t),o=Math.floor(n/3600),r=Math.floor(n%3600/60),e=n%60,i=t=>t.toString().padStart(2,"0");return o>0?`${o}:${i(r)}:${i(e)}`:`${r}:${i(e)}`}function n(t){if(!Number.isFinite(t)||t<=0)return"0 B";const n=["B","KB","MB","GB","TB"],o=Math.min(n.length-1,Math.floor(Math.log(t)/Math.log(1024))),r=t/1024**o;return`${0===o?r:Math.round(10*r)/10} ${n[o]}`}function o(t){const n=t.lastIndexOf(".");return n>-1&&n<t.length-1?t.slice(n+1).toLowerCase():""}export{n as formatFileSize,t as formatMediaDuration,o as getFileExtension};
@@ -0,0 +1 @@
1
+ function e(e){const{message:t}=e,i=e=>e.messageId===t.id&&e.ref.conversationId===t.conversationId&&e.ref.conversationType===t.conversationType,n=void 0!==e.uploadTask&&i(e.uploadTask)?e.uploadTask:void 0,s="uploading"===t.status||"failed"===t.status&&(!0===t.failure?.displayCode?.startsWith("media.")||void 0!==n&&"completed"!==n.state),a=s?"upload":"download",d=t.body.mediaAlbum?.items??t.body.filesAlbum?.items,o=void 0===e.aggregateFrom?[e.itemIndex]:(d??[]).map((e,t)=>t).slice(e.aggregateFrom),r=o.map(a=>{const o=void 0===a?t.body.image??t.body.video??t.body.file:d?.[a];if(s){const e=void 0===a?void 0:n?.items?.find(e=>e.itemIndex===a);return{state:"completed"===e?.state?"completed":"failed"===t.status?"failed":"paused"===n?.state?"paused":"running"===(e?.state??n?.state)?"running":"waiting",percent:e?.percent??(void 0===a?n?.percent:void 0),size:e?.bytesTotal??o?.size}}const r=e.downloadTasks.find(e=>i(e)&&e.itemIndex===a&&"download"===e.direction),l="failed"===r?.state?"failed":"running"===r?.state||"queued"===r?.state?"running":"completed"===r?.state&&!e.unavailableItemIndices?.includes(a)||o?.url.startsWith("blob:")||e.availableItemIndices?.includes(a)?"completed":"waiting";return{state:l,percent:"completed"===l?100:"waiting"===l&&"completed"===r?.state?0:r?.percent??0,size:r?.bytesTotal??o?.size}}),l=r.some(e=>"failed"===e.state)?"failed":r.some(e=>"running"===e.state)?"running":r.some(e=>"paused"===e.state)?"paused":r.length>0&&r.every(e=>"completed"===e.state)?"completed":"waiting",c="download"===a&&"waiting"===l&&o.some(t=>e.pendingItemIndices?.includes(t))?{resolving:!0}:{};if(1===r.length)return{direction:a,state:l,percent:r[0].percent,...c};if(0===r.length||r.some(e=>!Number.isFinite(e.size)||e.size<=0||void 0===e.percent))return{direction:a,state:l,...c};const u=r.reduce((e,t)=>e+t.size,0);return{direction:a,state:l,percent:Math.round(r.reduce((e,t)=>e+t.size*t.percent,0)/u),...c}}export{e as resolveMediaTransferPresentation};
@@ -0,0 +1 @@
1
+ import{getImTimeCatalog as t}from"../../../im-i18n/src/catalog/index.js";const e=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];function n(t){return null!=t&&Number.isFinite(t)&&t>0&&!Number.isNaN(new Date(t).getTime())}function r(t,e){return n(t)?t:n(e)?e:void 0}function u(t,e){return r(e,t)}function a(t){if(!n(t))return"";const e=new Date(t);return`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}`}function o(t,e){return!!n(t)&&(!n(e)||a(t)!==a(e))}function i(t,e){return s(t,e,"conversation")}function c(t,e){return s(t,e,"separator")}function s(r,u,a){if(!n(r))return"";const o=u.now??/* @__PURE__ */new Date;if(Number.isNaN(o.getTime()))return"";const i=new Date(r),c=g(o)-g(i),s=t(u.locale);return i.getFullYear()!==o.getFullYear()?function(t){return`${t.getFullYear()}/${f(t.getMonth()+1)}/${f(t.getDate())}`}(i):0===c?"conversation"===a?function(t){return`${f(t.getHours())}:${f(t.getMinutes())}`}(i):s.today:1===c?s.yesterday:c>=2&&c<=6?function(t,n){return n.weekdays[e[t.getDay()]]}(i,s):function(t){return`${f(t.getMonth()+1)}/${f(t.getDate())}`}(i)}function g(t){return Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())/864e5}function f(t){return String(t).padStart(2,"0")}export{c as formatChatDateSeparator,i as formatConversationDisplayTime,a as getLocalDayKey,r as resolveDisplayTimestamp,u as resolveMessageTimelineTimestamp,o as shouldShowChatDateSeparator};
@@ -0,0 +1 @@
1
+ const t=4;function n(t){const n=Math.min(Math.max(t/1e3,0)/10,1);return Math.round(22+24*n)}function h(t,n){if(0===t.length)return Array.from({length:n},()=>0);const h=[],r=(t.length-1)/Math.max(1,n-1);for(let e=0;e<n;e+=1){const n=e*r,o=Math.round(n),a=t[Math.max(0,o-1)]??0,u=t[Math.min(t.length-1,o)]??0,l=t[Math.min(t.length-1,o+1)]??0;h.push((a+u+l)/3)}return h}function r(t,n){let h=2166136261;for(let n=0;n<t.length;n+=1)h^=t.charCodeAt(n),h=Math.imul(h,16777619);const r=[];for(let t=0;t<n;t+=1)h=Math.imul(h^h>>>15,2246822519)>>>0,r.push(90+h%111);return r}export{t as SPIKE_STEP,r as placeholderWaveform,h as resampleWaveform,n as spikeCountForDuration};
@@ -0,0 +1 @@
1
+ import{defineComponent as e,h as t}from"vue";import{resolveMessageBodyKind as r}from"../../thread/resolve-message-body-kind.js";import{provideImThreadReadActions as s}from"./thread-read-actions-context.js";const o=e({name:"ImThreadBodySwitch",inheritAttrs:!1,props:{message:{type:Object,required:!0},rendererRegistry:{type:Object,required:!0},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup:(e,{attrs:o,slots:d})=>(s(e.readActions),()=>{const s=r(e.message),a=e.rendererRegistry.resolve(s);return void 0!==a?t(a,{...o,message:e.message,presentation:e.presentation}):void 0!==d["unsupported-body"]?d["unsupported-body"]({kind:s,message:e.message}):t("span",{"data-im-thread-unsupported-body":s,"aria-hidden":"true"})})});export{o as ImThreadBodySwitch};
@@ -0,0 +1 @@
1
+ import{defineComponent as e,onUpdated as t,onUnmounted as r,h as s,isVNode as a,cloneVNode as n,Fragment as i}from"vue";import{ImThreadBodySwitch as d}from"./ImThreadBodySwitch.js";import{useOptionalImThreadViewportRegistration as o}from"./thread-viewport-context.js";const m=e({name:"ImThreadItems",props:{items:{type:Array,required:!0},rendererRegistry:{type:Object,required:!0},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0}},setup(e,{slots:m}){const l=o(),c=/* @__PURE__ */new Map,y=/* @__PURE__ */new Map;function u(e,t){const r=Array.isArray(t)?t:[t];return 1===r.length&&a(r[0])?n(r[0],{key:e}):s(i,{key:e},r)}function p(e,t){const r=y.get(e);if(void 0!==r)return r.label=t,r.setElement;const s={label:t,setElement:t=>{l?.registerDateNode(e,s.label,t instanceof HTMLElement?t:null)}};return y.set(e,s),s.setElement}function f(e){l?.registerEntryUnreadNode(e instanceof HTMLElement?e:null)}function g(t){const r=function(e,t){const r=c.get(e);if(r?.messageId===t)return r.setElement;const s=e=>{l?.registerMessageNode(t,e instanceof HTMLElement?e:null)};return c.set(e,{messageId:t,setElement:s}),s}(t.key,t.message.id);return void 0!==m.item?m.item({item:t,setElement:r}):void 0!==m.message?m.message({item:t,setElement:r}):void 0!==t.message.deletedForEveryone?m["deleted-message"]?.({item:t,setElement:r})??s("article",{ref:r,"data-im-thread-message-id":t.message.id,"data-im-thread-message-terminal":"deleted-for-everyone"},[s("span",{"data-im-thread-anchor-point":""})]):void 0!==t.message.recalled?m["recalled-message"]?.({item:t,setElement:r})??s("article",{ref:r,"data-im-thread-message-id":t.message.id,"data-im-thread-message-terminal":"recalled"},[s("span",{"data-im-thread-anchor-point":""})]):"system"===t.kind&&void 0!==m.system?m.system({item:t,setElement:r}):s("article",{ref:r,"data-im-thread-message-id":t.message.id,"data-first-of-run":"message"===t.kind?String(t.firstOfRun):void 0},[s("span",{"data-im-thread-anchor-point":""}),s(d,{message:t.message,rendererRegistry:e.rendererRegistry,presentation:e.presentation,readActions:e.readActions},{"unsupported-body":void 0===m["unsupported-body"]?void 0:e=>m["unsupported-body"]?.(e)})])}return t(()=>{const t=/* @__PURE__ */new Set,r=/* @__PURE__ */new Set;for(const s of e.items)"message"===s.kind||"system"===s.kind?t.add(s.key):"date-separator"===s.kind&&r.add(s.key);for(const e of c.keys())t.has(e)||c.delete(e);for(const e of y.keys())r.has(e)||y.delete(e)}),r(()=>{c.clear(),y.clear()}),()=>s("div",{"data-im-thread-items":""},e.items.map(e=>{switch(e.kind){case"encryption":return void 0!==m.item?u(e.key,m.item({item:e})):u(e.key,function(e){return m.encryption?.({item:e})??s("div",{"data-im-thread-encryption":e.key})}(e));case"date-separator":return void 0!==m.item?u(e.key,m.item({item:e,setElement:p(e.key,e.label)})):u(e.key,function(e){const t=p(e.key,e.label);return m["date-separator"]?.({item:e,setElement:t})??s("div",{ref:t,"data-im-thread-date-separator":e.key},e.label)}(e));case"entry-unread":return void 0!==m.item?u(e.key,m.item({item:e,setElement:f})):u(e.key,function(e){return m["entry-unread"]?.({item:e,setElement:f})??s("div",{ref:f,"data-im-thread-entry-unread":e.key,...void 0===e.count?{}:{"data-count":String(e.count)}})}(e));case"system":case"message":return u(e.key,g(e))}return e}))}});export{m as ImThreadItems};
@@ -0,0 +1 @@
1
+ import{defineComponent as e,ref as a,computed as t,watch as n,onBeforeUnmount as r,h as l,nextTick as o}from"vue";import{createThreadItems as i}from"../../thread/create-thread-items.js";import{classifyImMessageLocateError as s}from"../../thread/message-locate-result.js";import{ImThreadItems as u}from"./ImThreadItems.js";import{ImThreadViewport as v}from"./ImThreadViewport.js";import{createThreadIdleTask as d}from"./thread-idle-task.js";import{useImThreadSurfaceContext as c}from"./thread-surface-context.js";function f(e,a){if(void 0===e)return a;const t=new Map(e.map(e=>[e.key,e])),n=a.map(e=>{const a=t.get(e.key);return void 0!==a&&function(e,a){if(e.key!==a.key||e.kind!==a.kind)return!1;switch(a.kind){case"message":return"message"===e.kind&&e.message===a.message&&e.firstOfRun===a.firstOfRun;case"system":return"system"===e.kind&&e.message===a.message;case"date-separator":return"date-separator"===e.kind&&e.label===a.label;case"entry-unread":return"entry-unread"===e.kind&&e.count===a.count;case"encryption":return!0}}(a,e)?a:e});return e.length===n.length&&n.every((a,t)=>a===e[t])?e:n}const g=Object.freeze({followThreshold:120,olderPrefetchThreshold:120,visibleReadDelay:300,visibleMargin:8,activeDateOffset:16,activeDateIdleDelay:1500}),w=Object.freeze({enabled:!0,maxFillPages:8});const m=e({name:"ImThreadSurface",props:{conversation:{type:Object,required:!0},context:{type:Object,default:void 0},rendererRegistry:{type:Object,required:!0},presentation:{type:Object,default:void 0},readActions:{type:Object,default:void 0},viewportOptions:{type:Object,default:()=>({})},initialViewportOptions:{type:Object,default:()=>({})},hooks:{type:Object,default:void 0}},setup(e,{expose:m,slots:h}){const y=e.context??c(),p=a(null),b=a(0),k=a(!1),M=a(!1),N=a(!1);let O,I,A;const T=a(!1),P=a(!1),j=a(!1);let E,F=!1;const D=a(!0);let R=[];const V=d();let x=0;const U=a(0);let H,q=null,S="",C="",L="",W=!1,$=!1;const z=a(!1),B=a(""),K=a(!1),G=d();let J;const Q=t(()=>y.getState()),X=t(()=>Boolean(Q.value.pendingLocationMessageId)),Y=t(()=>Q.value.pageVisible??y.isPageVisible?.()??!0),Z=t(()=>Q.value.pageEngaged??y.isPageEngaged?.()??!0),_=t(()=>{return a=Q.value.activeConversation,t=e.conversation,a?.conversationType===t.conversationType&&a.conversationId===t.conversationId;var a,t}),ee=t(()=>({...g,...e.viewportOptions})),ae=t(()=>{const a=e.initialViewportOptions.maxFillPages??w.maxFillPages;return{enabled:e.initialViewportOptions.enabled??w.enabled,maxFillPages:Number.isFinite(a)?Math.max(0,Math.floor(a)):w.maxFillPages}}),te=t(()=>_.value&&Q.value.ready?`${e.conversation.conversationType}\0${e.conversation.conversationId}`:"");let ne="";const re=t(a=>{const t=_.value?`${e.conversation.conversationType}\0${e.conversation.conversationId}`:"",n=ne===t?a:void 0;return ne=t,_.value?f(n,i({messages:Q.value.messages,entryUnread:Q.value.entryUnread,formatDate:y.formatDate,leadingItems:y.leadingItems?.(),beforeMessageItems:y.beforeMessageItems})):f(n,[])}),le=t(()=>re.value.flatMap(e=>"message"===e.kind||"system"===e.kind?[e.message.id]:[])),oe=t(()=>Q.value.messages.filter(e=>("pending"===e.status||"uploading"===e.status||"sending"===e.status)&&!0===y.shouldFollowMessage?.(e)).map(e=>e.id));function ie(e=!1){if(G.cancel(),void 0!==J&&(clearTimeout(J),J=void 0),K.value=!1,e)return p.value?.clearActiveDate(),void(B.value="");J=setTimeout(()=>{J=void 0,K.value||(p.value?.clearActiveDate(),B.value="")},160)}function se(e){if(null===e)return void ie();void 0!==J&&(clearTimeout(J),J=void 0),B.value=e.label,K.value=!0;const a=ee.value.activeDateIdleDelay,t=Number.isFinite(a)?Math.max(0,a):g.activeDateIdleDelay;G.schedule(()=>ie(),t)}async function ue(a,t,n,r=!0){e.hooks?.beforeAction?.(a);try{const r=await t();return!1!==n?.()&&e.hooks?.afterAction?.(a,r),r}catch(t){throw r&&!1!==n?.()&&e.hooks?.onError?.(a,t),t}}function ve(e="automatic",a,t=!0){return _.value&&!Q.value.loading&&Q.value.hasOlder?ue({kind:"load-older",source:e},()=>y.actions.loadOlder(),a,t):Promise.resolve(0)}function de(){return ce()}function ce(e,a=!0){const t=y.actions.loadNewer,n=Q.value.loadingNewer??Q.value.loading;return _.value&&!n&&Q.value.hasNewer&&void 0!==t?ue({kind:"load-newer"},()=>t(),e,a):Promise.resolve(0)}async function fe(e){for(let a=0;a<8;a+=1){if(!_.value||N.value||M.value||X.value)return;const a="older"===e?Q.value.hasOlder:Q.value.hasNewer,t="older"===e?Q.value.olderError:Q.value.newerError;if(!a||null!==t)return;if(("older"===e?await ve("user-scroll"):await de())>0)return;const n="older"===e?Q.value.hasOlder:Q.value.hasNewer,r="older"===e?Q.value.olderError:Q.value.newerError;if(!n||null!==r)return}}async function ge(e,a){const t=te.value,n=++x;let r;q=null,L="";try{r=await ue(e,a)}catch(e){throw Ie(t,n)&&(L=t),e}return Ie(t,n)&&!z.value&&(q=null,je()),r}function we(e=!1){const a=p.value,t=a?.getViewportElement();P.value=!0===a?.isScrollable();const n=Q.value.entryUnreadNavigation;T.value="located"===n?.state&&R.includes(n.firstMessageId),z.value&&T.value&&(k.value=!0);const r=null==t?0:Math.max(0,t.scrollHeight-t.clientHeight-t.scrollTop);j.value=void 0!==n&&r>50,e&&void 0!==n&&null!=t&&t.clientHeight>0&&r>=t.clientHeight&&(k.value=!0)}function me(){const a=y.actions.markConversationRead;if(void 0===a||!Z.value||!_.value||!z.value||M.value||F&&(!D.value||Q.value.hasNewer)||void 0!==E||null!==Q.value.error)return;const t=te.value,n=a().then(()=>{E===n&&t===te.value&&(F=!0)}).catch(a=>{$||E!==n||t!==te.value||e.hooks?.onError?.({kind:"mark-conversation-read"},a)}).finally(()=>{E===n&&(E=void 0)});E=n}function he(e){D.value=e.isAtBottom,b.value=e.newMessageCount,we(),je()}function ye(e,a){return p.value?.scrollToMessage(e,a)??!1}function pe(e,a){return!$&&U.value===a&&te.value===e&&_.value}async function be(e){const a=()=>!e()||!(Q.value.loading||Q.value.loadingOlder||Q.value.loadingNewer);return a()||await new Promise(e=>{const t=n(a,a=>{a&&(t(),e())},{flush:"sync"})}),await o(),await o(),e()}async function ke(e,a={behavior:"auto",block:"center"}){if(!_.value||""===e)return{ok:!1,reason:"cancelled"};const t=te.value,n=N.value;Fe(),De();const r=n||void 0!==H||(Q.value.loadingOlder??Q.value.loading)||(Q.value.loadingNewer??Q.value.loading),l=++U.value;N.value=!0;const i=new AbortController;O=i,Ee(!0),W=!0,S=t,C=Te(Ae());const u=()=>pe(t,l);try{if(r&&void 0!==y.actions.loadAround||!le.value.includes(e)){const a=y.actions.loadAround;if(void 0===a)return{ok:!1,reason:"anchor-unavailable"};const t={};H=t;try{const t=await ue({kind:"locate-message",messageId:e},()=>a(e,{signal:i.signal}),u,!1);if(!u())return{ok:!1,reason:"cancelled"};if(!t)return{ok:!1,reason:"not-visible"}}finally{H===t&&(H=void 0)}}if(await o(),await o(),!await async function(e,a){for(let t=0;t<60;t+=1){if(!e())return!1;if(p.value?.isMeasurable()&&null!=p.value.getMessageCenteringNeeds(a))return!0;await o(),"undefined"!=typeof window&&"function"==typeof window.requestAnimationFrame&&await new Promise(e=>window.requestAnimationFrame(()=>e()))}return!1}(u,e)||!await async function(e,a,t){const n=p.value;if(null===n||!n.isMeasurable())return!1;let r=0,l="older";const i=()=>pe(e,a),s=async e=>{let a=0;const t="older"===e?Q.value.olderError:Q.value.newerError,l=void 0===t?Q.value.error:t;if(null!=l)throw l;if("older"===e)a=await ve("automatic",i,!1);else{n.prepareHistoryPageAppend();try{a=await ce(i,!1)}catch(e){throw i()&&n.cancelHistoryPageAppend(),e}a<=0&&i()&&!Q.value.hasNewer&&n.cancelHistoryPageAppend()}return r+=1,await o(),await o(),i()};for(;pe(e,a)&&r<ae.value.maxFillPages&&n.isMeasurable();){if(!await be(i))return!1;const e=n.getMessageCenteringNeeds(t);if(null===e)return!1;const a=!Q.value.hasOlder,r=!Q.value.hasNewer||void 0===y.actions.loadNewer,o=e.older&&e.newer&&!a&&!r?l:e.older&&!a?"older":e.newer&&!r?"newer":void 0;if(void 0===o)break;if(l="older"===o?"newer":"older",!await s(o))return!1}return pe(e,a)}(t,l,e))return{ok:!1,reason:u()?"not-visible":"cancelled"};const n=await async function(e,a,t,n){for(let r=0;r<60;r+=1){if(!pe(e,a))return!1;if(ye(t,n))return!0;await o(),"undefined"!=typeof window&&"function"==typeof window.requestAnimationFrame&&await new Promise(e=>window.requestAnimationFrame(()=>e()))}return!1}(t,l,e,a);return n?{ok:!0}:{ok:!1,reason:u()?"not-visible":"cancelled"}}catch(e){return u()?s(e):{ok:!1,reason:"cancelled"}}finally{O===i&&(O=void 0),U.value===l&&(N.value=!1)}}function Me(){V.cancel()}function Ne(){if(!z.value)return void Me();const a=e.readActions;if(void 0===a&&void 0===y.actions.markVisibleMessages)return void Me();const t=Number.isFinite(ee.value.visibleReadDelay)?Math.max(0,ee.value.visibleReadDelay):g.visibleReadDelay;V.schedule(()=>{if(!_.value||!Z.value)return;me();const t=y.actions.markVisibleMessages;if(void 0!==t){const a=R;return void t(a).catch(t=>{e.hooks?.onError?.({kind:"visible-range",messageIds:a},t)})}if(void 0===a)return;const n=R[R.length-1];if(void 0===n)return;const r=void 0===a.resolveTarget?n:a.resolveTarget(n);null!=r&&Promise.resolve(a.markRead(r)).catch(a=>{e.hooks?.onError?.({kind:"visible-range",messageIds:R},a)})},t)}function Oe(a){R=Object.freeze([...a]),we();const t={kind:"visible-range",messageIds:R};e.hooks?.beforeAction?.(t);try{y.actions.onVisibleRange?.(R),e.hooks?.afterAction?.(t,void 0)}catch(a){throw e.hooks?.onError?.(t,a),a}z.value?Ne():je()}function Ie(e,a){return!$&&x===a&&te.value===e&&!W&&!X.value}function Ae(){return void 0===Q.value.entryUnreadNavigation?Q.value.entryUnread:{state:"none"}}function Te(e){return"located"!==e.state?e.state:`${e.state}:${e.firstMessageId}`}async function Pe(e,a,t){for(let n=0;n<60;n+=1){if(!Ie(e,a))return!1;const n=p.value;if(!0===n?.scrollToMessage(t,{behavior:"auto",block:"center"}))return!0;await o(),"undefined"!=typeof window&&"function"==typeof window.requestAnimationFrame&&await new Promise(e=>window.requestAnimationFrame(()=>e()))}return!1}function je(){const e=te.value,a=Te(Ae());if(""===e||Q.value.loading||N.value||X.value||null!==Q.value.error&&0===Q.value.messages.length||S===e&&(C===a||C.startsWith("located:")||W)||L===e||null!==q)return;if(!ae.value.enabled)return S=e,C=a,z.value=!0,void Ne();const t=++x;W=!1,z.value=!1;const n=(async()=>{if(await o(),!Ie(e,t))return;const a=p.value;if(null===a||!a.isMeasurable())return;const n=Ae();if("located"===n.state&&!le.value.includes(n.firstMessageId))return;const r="located"===n.state&&await Pe(e,t,n.firstMessageId);if("located"===n.state&&!r)return;r||a.scrollToLatest();let l=0;for(;Ie(e,t)&&l<ae.value.maxFillPages&&null===Q.value.error&&(Q.value.hasOlder||Q.value.hasNewer&&void 0!==y.actions.loadNewer)&&a.isMeasurable()&&!a.isScrollable();){if(!Q.value.hasNewer||void 0===y.actions.loadNewer||0!==Q.value.messages.length&&Q.value.hasOlder)await ve();else{const n=U.value;a.prepareHistoryPageAppend();try{await de(),await o()}finally{te.value!==e||U.value!==n||x!==t&&!W||a.cancelHistoryPageAppend()}}if(!Ie(e,t))return;if(l+=1,await o(),await o(),!a.isMeasurable())return}if(!Ie(e,t)||!a.isMeasurable())return;const i=Ae();if("located"===i.state){if(!le.value.includes(i.firstMessageId))return;if(!await Pe(e,t,i.firstMessageId))return}else(l>0||r)&&a.scrollToLatest();await o(),function(e,a){Ie(e,a)&&(S=e,C=Te(Ae()),z.value=!0,we(),me(),Ne())}(e,t)})().catch(()=>{Ie(e,t)&&(L=e)}).finally(()=>{q===n&&(q=null)});q=n}function Ee(e,a=!1){x+=1,q=null,W=!1,z.value=e,e||(S="",C="",a||(L="")),Me()}function Fe(){void 0!==A&&(U.value+=1,A.abort(),A=void 0,I=void 0,M.value=!1)}function De(){(N.value||void 0!==O)&&(U.value+=1,O?.abort(),O=void 0,N.value=!1)}function Re(){if(we(!0),Fe(),De(),X.value&&y.actions.cancelMessageLocation?.(),W=!0,z.value)return;const e=te.value;x+=1,q=null,S=e,z.value=!0,Ne()}const Ve=Object.freeze({getViewportElement:()=>p.value?.getViewportElement()??null,loadOlder:ve,retryOlder:async function(){return _.value?ge({kind:"retry-older"},()=>y.actions.retryOlder?.()??y.actions.loadOlder({force:!0})):0},loadNewer:de,retryNewer:async function(){return _.value&&void 0!==y.actions.loadNewer?ge({kind:"load-newer"},()=>y.actions.retryNewer?.()??y.actions.loadNewer?.({force:!0})??Promise.resolve(0)):0},jumpToLatest:async function(){if(!_.value)return!1;const e=te.value;Fe(),De();const a=++U.value;return N.value=!1,Ee(!0),W=!0,S=e,C=Te(Ae()),!(!await ue({kind:"jump-to-latest"},()=>y.actions.jumpToLatest?.()??Promise.resolve(!Q.value.isHistoryWindow),()=>pe(e,a))||!pe(e,a))&&(await o(),!!pe(e,a)&&(p.value?.scrollToLatest(),k.value=!0,j.value=!1,me(),!0))},jumpToEntryUnread:async function(){const e=y.actions.loadEntryUnread;if(!_.value||M.value||void 0===e)return"cancelled";De();const a=te.value,t=++U.value;N.value=!1;const n=new AbortController;A=n,I=t,M.value=!0,Ee(!0),W=!0;try{const r=await ue({kind:"jump-to-entry-unread"},()=>e({signal:n.signal}),()=>pe(a,t));if(!pe(a,t))return"cancelled";if(!r)return"unavailable";if("located"!==Q.value.entryUnread.state)return"unavailable";const l=await async function(e,a){await o();for(let t=0;t<60;t+=1){if(!pe(e,a))return!1;if(p.value?.scrollToEntryUnread())return!0;await o(),"undefined"!=typeof window&&"function"==typeof window.requestAnimationFrame&&await new Promise(e=>window.requestAnimationFrame(()=>e()))}return!1}(a,t);return l&&(k.value=!0),l?"located":pe(a,t)?"unavailable":"cancelled"}catch(e){if(!pe(a,t))return"cancelled";throw e}finally{I===t&&(I=void 0,A=void 0,M.value=!1)}},scrollToMessage:ye,locateMessage:async function(e,a){return(await ke(e,a)).ok},locateMessageDetailed:ke,focusViewport:()=>p.value?.focusViewport()});return m(Ve),n(Z,e=>{e&&z.value?Ne():Me()}),n([()=>Q.value.activeRemoteMessageRevision??0,p,te],()=>{const e=p.value;if(null===e||!_.value)return;const a=y.actions.drainActiveRemoteMessageIds?.()??[];e.trackRemoteMessageIds(a,{isAtBottom:D.value,isHistoryWindow:Q.value.isHistoryWindow,isPageVisible:Y.value})&&(D.value=!1)},{flush:"post"}),n(()=>Q.value.pendingLocationMessageId??"",e=>{(""!==e||N.value)&&(De(),U.value+=1,N.value=!1),""!==e&&(Fe(),z.value||Ee(!1))},{flush:"sync"}),n([te,()=>Q.value.loading,()=>Q.value.error,()=>le.value.length,()=>Q.value.hasOlder,()=>Te(Ae()),ae,()=>Q.value.hasNewer,X],([e,a,t,n,,r],[l,,,o,,i])=>{e!==l&&(Fe(),De(),U.value+=1,N.value=!1,H=void 0,Ee(!1),ie(!0),p.value?.clearNewMessageBadge(),b.value=0,D.value=!0,R=[],k.value=!1,T.value=!1,P.value=!1,j.value=!1,M.value=!1,I=void 0,F=!1,E=void 0),""!==e&&e===l&&void 0!==o&&o>0&&0===n&&(Q.value.hasOlder||Q.value.hasNewer)&&z.value&&Ee(!1,!0),""===e||e!==l||r===i||C.startsWith("located:")||W||!r.startsWith("located:")||(S="",C="",z.value=!1),""!==e?null===t||0!==Q.value.messages.length?a||je():z.value||Ee(!1,!0):Ee(!1)},{flush:"post",immediate:!0}),r(()=>{$=!0,Fe(),De(),U.value+=1,Ee(!1),ie(!0)}),()=>{const a={conversation:e.conversation,state:Q.value,items:re.value,actions:Ve,initialViewportSettled:""!==te.value&&(0===Q.value.messages.length?!Q.value.loading&&null===Q.value.error&&!Q.value.hasOlder&&!Q.value.hasNewer:z.value&&S===te.value)},t=[h.header?.(a),h["before-list"]?.(a)];if(_.value)if(!Q.value.ready&&Q.value.loading)t.push(h.loading?.(a)??l("div",{"data-im-thread-loading":""}));else if(null!==Q.value.error&&0===Q.value.messages.length)t.push(h.error?.(a)??l("div",{"data-im-thread-error":""}));else if(!Q.value.ready||0!==Q.value.messages.length||Q.value.hasOlder||Q.value.hasNewer){const n=l(v,{ref:p,messageIds:le.value,contentKey:`${e.conversation.conversationType}\0${e.conversation.conversationId}`,loadingOlder:Q.value.loadingOlder??Q.value.loading,hasNewer:Q.value.hasNewer,loadingNewer:Q.value.loadingNewer??Q.value.loading,followThreshold:ee.value.followThreshold,olderPrefetchThreshold:ee.value.olderPrefetchThreshold,visibleMargin:ee.value.visibleMargin,activeDateOffset:ee.value.activeDateOffset,activeDateEnabled:void 0!==h["active-date"],resizeFollowEnabled:z.value&&!M.value&&!N.value&&!X.value,followNewMessages:Y.value&&!M.value&&!N.value&&!X.value,shouldFollowAppendedMessage:e=>{const a=Q.value.messages.find(a=>a.id===e);return void 0!==a&&!0===y.shouldFollowMessage?.(a)},pendingSendMessageIds:oe.value,onReachStart:()=>{fe("older").catch(()=>{})},onReachEnd:()=>{fe("newer").catch(()=>{})},onSettled:he,onUserScroll:Re,onActiveDateChange:se,onVisibleRange:Oe,onNewMessageCount:e=>{b.value=e}},{default:()=>[h["viewport-before"]?.(a),l(u,{items:re.value,rendererRegistry:e.rendererRegistry,presentation:e.presentation,readActions:e.readActions},{item:h.item,"date-separator":h["date-separator"],"entry-unread":h["entry-unread"],encryption:h.encryption,system:h.system,message:h.message,"recalled-message":h["recalled-message"],"deleted-message":h["deleted-message"],"unsupported-body":h["unsupported-body"]}),h["viewport-after"]?.(a)]});t.push(l("div",{"data-im-thread-viewport-shell":""},[h["active-date"]?.({label:B.value,visible:K.value&&""!==B.value}),n,h["entry-unread-navigation"]?.({...a,count:"none"===Q.value.entryUnreadNavigation?.state?0:Q.value.entryUnreadNavigation?.count??0,loading:M.value,visible:a.initialViewportSettled&&!k.value&&!T.value&&!Q.value.isHistoryWindow&&void 0!==Q.value.entryUnreadNavigation&&"none"!==Q.value.entryUnreadNavigation.state&&Q.value.entryUnreadNavigation.count>0&&(P.value||Q.value.hasOlder)})])),null!==Q.value.error&&t.push(h.error?.(a)??l("div",{"data-im-thread-error":""}))}else t.push(h.empty?.(a)??l("div",{"data-im-thread-empty":""}));else t.push(h.unsupported?.(a)??l("div",{"data-im-thread-unsupported":""}));return t.push(h["after-list"]?.(a),h["jump-to-latest"]?.({...a,count:b.value,visible:j.value||!D.value||Q.value.isHistoryWindow}),h["context-menu"]?.(a),h.composer?.(a)),l("section",{"data-im-thread-surface":"","data-conversation-type":e.conversation.conversationType,"data-conversation-id":e.conversation.conversationId},t)}}});export{m as ImThreadSurface};