stream-chat-react-native-core 5.5.1 → 5.6.0-beta.1

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 (321) hide show
  1. package/lib/commonjs/components/Attachment/Gallery.js +21 -16
  2. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/GalleryImage.js +19 -3
  4. package/lib/commonjs/components/Attachment/GalleryImage.js.map +1 -1
  5. package/lib/commonjs/components/Channel/Channel.js +535 -149
  6. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  7. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +6 -0
  8. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  9. package/lib/commonjs/components/ChannelList/ChannelList.js +4 -15
  10. package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
  11. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +112 -38
  12. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  13. package/lib/commonjs/components/Chat/Chat.js +16 -20
  14. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  15. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +2 -4
  16. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  17. package/lib/commonjs/components/Message/Message.js +21 -10
  18. package/lib/commonjs/components/Message/Message.js.map +1 -1
  19. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +14 -12
  20. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  21. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js +9 -30
  22. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  23. package/lib/commonjs/components/Message/hooks/useMessageActions.js +21 -19
  24. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  25. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +28 -21
  26. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  27. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +23 -16
  28. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  29. package/lib/commonjs/components/MessageInput/MessageInput.js +39 -27
  30. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  31. package/lib/commonjs/components/MessageInput/SendButton.js +1 -1
  32. package/lib/commonjs/components/MessageInput/SendButton.js.map +1 -1
  33. package/lib/commonjs/components/index.js +1 -14
  34. package/lib/commonjs/components/index.js.map +1 -1
  35. package/lib/commonjs/contexts/chatContext/ChatContext.js +2 -2
  36. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  37. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +134 -86
  38. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  39. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +1 -0
  40. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  41. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
  42. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  43. package/lib/commonjs/hooks/useTranslatedMessage.js +1 -1
  44. package/lib/commonjs/hooks/useTranslatedMessage.js.map +1 -1
  45. package/lib/commonjs/mock-builders/DB/mock.js +2 -2
  46. package/lib/commonjs/mock-builders/DB/mock.js.map +1 -1
  47. package/lib/commonjs/mock-builders/api/deleteMessage.js +20 -0
  48. package/lib/commonjs/mock-builders/api/deleteMessage.js.map +1 -0
  49. package/lib/commonjs/mock-builders/api/deleteReaction.js +21 -0
  50. package/lib/commonjs/mock-builders/api/deleteReaction.js.map +1 -0
  51. package/lib/commonjs/mock-builders/api/sendReaction.js +21 -0
  52. package/lib/commonjs/mock-builders/api/sendReaction.js.map +1 -0
  53. package/lib/commonjs/mock-builders/event/connectionChanged.js +2 -0
  54. package/lib/commonjs/mock-builders/event/connectionChanged.js.map +1 -1
  55. package/lib/commonjs/store/QuickSqliteClient.js +40 -51
  56. package/lib/commonjs/store/QuickSqliteClient.js.map +1 -1
  57. package/lib/commonjs/store/apis/addPendingTask.js +37 -0
  58. package/lib/commonjs/store/apis/addPendingTask.js.map +1 -0
  59. package/lib/commonjs/store/apis/deleteMessage.js +26 -0
  60. package/lib/commonjs/store/apis/deleteMessage.js.map +1 -0
  61. package/lib/commonjs/store/apis/deletePendingTask.js +22 -0
  62. package/lib/commonjs/store/apis/deletePendingTask.js.map +1 -0
  63. package/lib/commonjs/store/apis/deleteReaction.js +30 -0
  64. package/lib/commonjs/store/apis/deleteReaction.js.map +1 -0
  65. package/lib/commonjs/store/apis/getChannelMessages.js +3 -3
  66. package/lib/commonjs/store/apis/getChannelMessages.js.map +1 -1
  67. package/lib/commonjs/store/apis/getChannels.js +1 -1
  68. package/lib/commonjs/store/apis/getChannels.js.map +1 -1
  69. package/lib/commonjs/store/apis/getPendingTasks.js +26 -0
  70. package/lib/commonjs/store/apis/getPendingTasks.js.map +1 -0
  71. package/lib/commonjs/store/apis/index.js +13 -0
  72. package/lib/commonjs/store/apis/index.js.map +1 -1
  73. package/lib/commonjs/store/apis/insertReaction.js +28 -0
  74. package/lib/commonjs/store/apis/insertReaction.js.map +1 -0
  75. package/lib/commonjs/store/apis/updateMessage.js.map +1 -1
  76. package/lib/commonjs/store/apis/updateReaction.js.map +1 -1
  77. package/lib/commonjs/store/mappers/mapDateTimeToStorable.js.map +1 -1
  78. package/lib/commonjs/store/mappers/mapMessageToStorable.js +3 -1
  79. package/lib/commonjs/store/mappers/mapMessageToStorable.js.map +1 -1
  80. package/lib/commonjs/store/mappers/mapStorableToTask.js +23 -0
  81. package/lib/commonjs/store/mappers/mapStorableToTask.js.map +1 -0
  82. package/lib/commonjs/store/mappers/mapTaskToStorable.js +18 -0
  83. package/lib/commonjs/store/mappers/mapTaskToStorable.js.map +1 -0
  84. package/lib/commonjs/store/schema.js +11 -0
  85. package/lib/commonjs/store/schema.js.map +1 -1
  86. package/lib/commonjs/store/sqlite-utils/appendOrderByClause.js +24 -0
  87. package/lib/commonjs/store/sqlite-utils/appendOrderByClause.js.map +1 -0
  88. package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js +1 -1
  89. package/lib/commonjs/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
  90. package/lib/commonjs/store/sqlite-utils/createSelectQuery.js +8 -1
  91. package/lib/commonjs/store/sqlite-utils/createSelectQuery.js.map +1 -1
  92. package/lib/commonjs/store/sqlite-utils/createUpdateQuery.js +2 -2
  93. package/lib/commonjs/store/sqlite-utils/createUpdateQuery.js.map +1 -1
  94. package/lib/commonjs/store/sqlite-utils/createUpsertQuery.js +1 -1
  95. package/lib/commonjs/store/sqlite-utils/createUpsertQuery.js.map +1 -1
  96. package/lib/commonjs/utils/DBSyncManager.js +436 -0
  97. package/lib/commonjs/utils/DBSyncManager.js.map +1 -0
  98. package/lib/commonjs/utils/addReactionToLocalState.js +92 -0
  99. package/lib/commonjs/utils/addReactionToLocalState.js.map +1 -0
  100. package/lib/commonjs/utils/removeReactionFromLocalState.js +39 -0
  101. package/lib/commonjs/utils/removeReactionFromLocalState.js.map +1 -0
  102. package/lib/{module/components/Message → commonjs}/utils/removeReservedFields.js +1 -1
  103. package/lib/commonjs/utils/removeReservedFields.js.map +1 -0
  104. package/lib/commonjs/utils/utils.js +9 -3
  105. package/lib/commonjs/utils/utils.js.map +1 -1
  106. package/lib/commonjs/version.json +1 -1
  107. package/lib/module/components/Attachment/Gallery.js +21 -16
  108. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  109. package/lib/module/components/Attachment/GalleryImage.js +19 -3
  110. package/lib/module/components/Attachment/GalleryImage.js.map +1 -1
  111. package/lib/module/components/Channel/Channel.js +535 -149
  112. package/lib/module/components/Channel/Channel.js.map +1 -1
  113. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +6 -0
  114. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  115. package/lib/module/components/ChannelList/ChannelList.js +4 -15
  116. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  117. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +112 -38
  118. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  119. package/lib/module/components/Chat/Chat.js +16 -20
  120. package/lib/module/components/Chat/Chat.js.map +1 -1
  121. package/lib/module/components/Chat/hooks/useCreateChatContext.js +2 -4
  122. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  123. package/lib/module/components/Message/Message.js +21 -10
  124. package/lib/module/components/Message/Message.js.map +1 -1
  125. package/lib/module/components/Message/MessageSimple/MessageFooter.js +14 -12
  126. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  127. package/lib/module/components/Message/hooks/useMessageActionHandlers.js +9 -30
  128. package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  129. package/lib/module/components/Message/hooks/useMessageActions.js +21 -19
  130. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  131. package/lib/module/components/MessageInput/FileUploadPreview.js +28 -21
  132. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  133. package/lib/module/components/MessageInput/ImageUploadPreview.js +23 -16
  134. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  135. package/lib/module/components/MessageInput/MessageInput.js +39 -27
  136. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  137. package/lib/module/components/MessageInput/SendButton.js +1 -1
  138. package/lib/module/components/MessageInput/SendButton.js.map +1 -1
  139. package/lib/module/components/index.js +1 -14
  140. package/lib/module/components/index.js.map +1 -1
  141. package/lib/module/contexts/chatContext/ChatContext.js +2 -2
  142. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  143. package/lib/module/contexts/messageInputContext/MessageInputContext.js +134 -86
  144. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  145. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +1 -0
  146. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  147. package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
  148. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  149. package/lib/module/hooks/useTranslatedMessage.js +1 -1
  150. package/lib/module/hooks/useTranslatedMessage.js.map +1 -1
  151. package/lib/module/mock-builders/DB/mock.js +2 -2
  152. package/lib/module/mock-builders/DB/mock.js.map +1 -1
  153. package/lib/module/mock-builders/api/deleteMessage.js +20 -0
  154. package/lib/module/mock-builders/api/deleteMessage.js.map +1 -0
  155. package/lib/module/mock-builders/api/deleteReaction.js +21 -0
  156. package/lib/module/mock-builders/api/deleteReaction.js.map +1 -0
  157. package/lib/module/mock-builders/api/sendReaction.js +21 -0
  158. package/lib/module/mock-builders/api/sendReaction.js.map +1 -0
  159. package/lib/module/mock-builders/event/connectionChanged.js +2 -0
  160. package/lib/module/mock-builders/event/connectionChanged.js.map +1 -1
  161. package/lib/module/store/QuickSqliteClient.js +40 -51
  162. package/lib/module/store/QuickSqliteClient.js.map +1 -1
  163. package/lib/module/store/apis/addPendingTask.js +37 -0
  164. package/lib/module/store/apis/addPendingTask.js.map +1 -0
  165. package/lib/module/store/apis/deleteMessage.js +26 -0
  166. package/lib/module/store/apis/deleteMessage.js.map +1 -0
  167. package/lib/module/store/apis/deletePendingTask.js +22 -0
  168. package/lib/module/store/apis/deletePendingTask.js.map +1 -0
  169. package/lib/module/store/apis/deleteReaction.js +30 -0
  170. package/lib/module/store/apis/deleteReaction.js.map +1 -0
  171. package/lib/module/store/apis/getChannelMessages.js +3 -3
  172. package/lib/module/store/apis/getChannelMessages.js.map +1 -1
  173. package/lib/module/store/apis/getChannels.js +1 -1
  174. package/lib/module/store/apis/getChannels.js.map +1 -1
  175. package/lib/module/store/apis/getPendingTasks.js +26 -0
  176. package/lib/module/store/apis/getPendingTasks.js.map +1 -0
  177. package/lib/module/store/apis/index.js +13 -0
  178. package/lib/module/store/apis/index.js.map +1 -1
  179. package/lib/module/store/apis/insertReaction.js +28 -0
  180. package/lib/module/store/apis/insertReaction.js.map +1 -0
  181. package/lib/module/store/apis/updateMessage.js.map +1 -1
  182. package/lib/module/store/apis/updateReaction.js.map +1 -1
  183. package/lib/module/store/mappers/mapDateTimeToStorable.js.map +1 -1
  184. package/lib/module/store/mappers/mapMessageToStorable.js +3 -1
  185. package/lib/module/store/mappers/mapMessageToStorable.js.map +1 -1
  186. package/lib/module/store/mappers/mapStorableToTask.js +23 -0
  187. package/lib/module/store/mappers/mapStorableToTask.js.map +1 -0
  188. package/lib/module/store/mappers/mapTaskToStorable.js +18 -0
  189. package/lib/module/store/mappers/mapTaskToStorable.js.map +1 -0
  190. package/lib/module/store/schema.js +11 -0
  191. package/lib/module/store/schema.js.map +1 -1
  192. package/lib/module/store/sqlite-utils/appendOrderByClause.js +24 -0
  193. package/lib/module/store/sqlite-utils/appendOrderByClause.js.map +1 -0
  194. package/lib/module/store/sqlite-utils/createCreateTableQuery.js +1 -1
  195. package/lib/module/store/sqlite-utils/createCreateTableQuery.js.map +1 -1
  196. package/lib/module/store/sqlite-utils/createSelectQuery.js +8 -1
  197. package/lib/module/store/sqlite-utils/createSelectQuery.js.map +1 -1
  198. package/lib/module/store/sqlite-utils/createUpdateQuery.js +2 -2
  199. package/lib/module/store/sqlite-utils/createUpdateQuery.js.map +1 -1
  200. package/lib/module/store/sqlite-utils/createUpsertQuery.js +1 -1
  201. package/lib/module/store/sqlite-utils/createUpsertQuery.js.map +1 -1
  202. package/lib/module/utils/DBSyncManager.js +436 -0
  203. package/lib/module/utils/DBSyncManager.js.map +1 -0
  204. package/lib/module/utils/addReactionToLocalState.js +92 -0
  205. package/lib/module/utils/addReactionToLocalState.js.map +1 -0
  206. package/lib/module/utils/removeReactionFromLocalState.js +39 -0
  207. package/lib/module/utils/removeReactionFromLocalState.js.map +1 -0
  208. package/lib/{commonjs/components/Message → module}/utils/removeReservedFields.js +1 -1
  209. package/lib/module/utils/removeReservedFields.js.map +1 -0
  210. package/lib/module/utils/utils.js +9 -3
  211. package/lib/module/utils/utils.js.map +1 -1
  212. package/lib/module/version.json +1 -1
  213. package/lib/typescript/components/Channel/Channel.d.ts +1 -1
  214. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  215. package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts +2 -1
  216. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
  217. package/lib/typescript/components/Message/Message.d.ts +1 -1
  218. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +1 -1
  219. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +1 -1
  220. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +2 -1
  221. package/lib/typescript/components/MessageInput/ImageUploadPreview.d.ts +2 -1
  222. package/lib/typescript/components/MessageInput/MessageInput.d.ts +2 -1
  223. package/lib/typescript/components/index.d.ts +1 -2
  224. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +1 -2
  225. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +1 -1
  226. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +3 -0
  227. package/lib/typescript/store/apis/addPendingTask.d.ts +2 -0
  228. package/lib/typescript/store/apis/deleteMessage.d.ts +4 -0
  229. package/lib/typescript/store/apis/deletePendingTask.d.ts +3 -0
  230. package/lib/typescript/store/apis/deleteReaction.d.ts +6 -0
  231. package/lib/typescript/store/apis/getChannelMessages.d.ts +1 -1
  232. package/lib/typescript/store/apis/getPendingTasks.d.ts +3 -0
  233. package/lib/typescript/store/apis/index.d.ts +1 -0
  234. package/lib/typescript/store/apis/insertReaction.d.ts +6 -0
  235. package/lib/typescript/store/apis/updateMessage.d.ts +2 -2
  236. package/lib/typescript/store/apis/updateReaction.d.ts +2 -2
  237. package/lib/typescript/store/mappers/mapDateTimeToStorable.d.ts +1 -1
  238. package/lib/typescript/store/mappers/mapMessageToStorable.d.ts +2 -2
  239. package/lib/typescript/store/mappers/mapStorableToTask.d.ts +2 -0
  240. package/lib/typescript/store/mappers/mapTaskToStorable.d.ts +26 -0
  241. package/lib/typescript/store/schema.d.ts +12 -1
  242. package/lib/typescript/store/sqlite-utils/appendOrderByClause.d.ts +3 -0
  243. package/lib/typescript/store/sqlite-utils/createSelectQuery.d.ts +1 -1
  244. package/lib/typescript/store/types.d.ts +21 -0
  245. package/lib/typescript/types/types.d.ts +3 -1
  246. package/lib/typescript/utils/DBSyncManager.d.ts +47 -0
  247. package/lib/typescript/utils/addReactionToLocalState.d.ts +9 -0
  248. package/lib/typescript/utils/removeReactionFromLocalState.d.ts +8 -0
  249. package/lib/typescript/{components/Message/utils → utils}/removeReservedFields.d.ts +2 -2
  250. package/lib/typescript/utils/utils.d.ts +3 -3
  251. package/package.json +4 -3
  252. package/src/__tests__/offline-feature.test.js +19 -2
  253. package/src/__tests__/optimistic-update.test.js +368 -0
  254. package/src/components/Attachment/Gallery.tsx +5 -1
  255. package/src/components/Attachment/GalleryImage.tsx +16 -2
  256. package/src/components/Channel/Channel.tsx +266 -57
  257. package/src/components/Channel/hooks/useCreateMessagesContext.ts +6 -0
  258. package/src/components/ChannelList/ChannelList.tsx +2 -10
  259. package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +0 -1
  260. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +76 -26
  261. package/src/components/Chat/Chat.tsx +5 -9
  262. package/src/components/Chat/__tests__/Chat.test.js +1 -1
  263. package/src/components/Chat/hooks/useCreateChatContext.ts +0 -2
  264. package/src/components/Message/Message.tsx +18 -2
  265. package/src/components/Message/MessageSimple/MessageFooter.tsx +2 -1
  266. package/src/components/Message/hooks/useMessageActionHandlers.ts +10 -21
  267. package/src/components/Message/hooks/useMessageActions.tsx +10 -5
  268. package/src/components/MessageInput/FileUploadPreview.tsx +7 -2
  269. package/src/components/MessageInput/ImageUploadPreview.tsx +7 -3
  270. package/src/components/MessageInput/MessageInput.tsx +17 -3
  271. package/src/components/MessageInput/SendButton.tsx +1 -1
  272. package/src/components/index.ts +1 -2
  273. package/src/contexts/chatContext/ChatContext.tsx +1 -2
  274. package/src/contexts/messageInputContext/MessageInputContext.tsx +95 -57
  275. package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +29 -3
  276. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +1 -0
  277. package/src/contexts/messagesContext/MessagesContext.tsx +4 -1
  278. package/src/hooks/useTranslatedMessage.ts +1 -1
  279. package/src/mock-builders/DB/mock.ts +2 -2
  280. package/src/mock-builders/api/deleteMessage.js +18 -0
  281. package/src/mock-builders/api/deleteReaction.js +19 -0
  282. package/src/mock-builders/api/sendReaction.tsx +19 -0
  283. package/src/mock-builders/event/connectionChanged.js +2 -1
  284. package/src/store/QuickSqliteClient.ts +39 -37
  285. package/src/store/apis/addPendingTask.ts +24 -0
  286. package/src/store/apis/deleteMessage.ts +13 -0
  287. package/src/store/apis/deletePendingTask.ts +12 -0
  288. package/src/store/apis/deleteReaction.ts +26 -0
  289. package/src/store/apis/getChannelMessages.ts +1 -1
  290. package/src/store/apis/getChannels.ts +2 -2
  291. package/src/store/apis/getPendingTasks.ts +13 -0
  292. package/src/store/apis/index.ts +1 -0
  293. package/src/store/apis/insertReaction.ts +29 -0
  294. package/src/store/apis/updateMessage.ts +2 -2
  295. package/src/store/apis/updateReaction.ts +2 -2
  296. package/src/store/mappers/mapDateTimeToStorable.ts +1 -1
  297. package/src/store/mappers/mapMessageToStorable.ts +8 -2
  298. package/src/store/mappers/mapStorableToTask.ts +13 -0
  299. package/src/store/mappers/mapTaskToStorable.ts +7 -0
  300. package/src/store/schema.ts +25 -1
  301. package/src/store/sqlite-utils/appendOrderByClause.ts +24 -0
  302. package/src/store/sqlite-utils/createCreateTableQuery.ts +2 -2
  303. package/src/store/sqlite-utils/createSelectQuery.ts +4 -1
  304. package/src/store/sqlite-utils/createUpdateQuery.ts +3 -2
  305. package/src/store/sqlite-utils/createUpsertQuery.ts +1 -1
  306. package/src/store/types.ts +28 -0
  307. package/src/types/types.ts +4 -1
  308. package/src/utils/DBSyncManager.ts +222 -0
  309. package/src/utils/addReactionToLocalState.ts +87 -0
  310. package/src/utils/removeReactionFromLocalState.ts +39 -0
  311. package/src/{components/Message/utils → utils}/removeReservedFields.ts +7 -3
  312. package/src/utils/utils.ts +14 -5
  313. package/src/version.json +1 -1
  314. package/lib/commonjs/components/Chat/hooks/useConnectionRecovered.js +0 -171
  315. package/lib/commonjs/components/Chat/hooks/useConnectionRecovered.js.map +0 -1
  316. package/lib/commonjs/components/Message/utils/removeReservedFields.js.map +0 -1
  317. package/lib/module/components/Chat/hooks/useConnectionRecovered.js +0 -171
  318. package/lib/module/components/Chat/hooks/useConnectionRecovered.js.map +0 -1
  319. package/lib/module/components/Message/utils/removeReservedFields.js.map +0 -1
  320. package/lib/typescript/components/Chat/hooks/useConnectionRecovered.d.ts +0 -10
  321. package/src/components/Chat/hooks/useConnectionRecovered.ts +0 -92
@@ -1 +1 @@
1
- {"version":3,"sources":["Message.tsx"],"names":["MessageWithContext","props","isMessageTypeDeleted","message","type","channel","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","enableLongPress","enforceUniqueReaction","forceAlignMessages","goToMessage","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","chatContext","lastReceivedId","members","messageActions","messageActionsProp","defaultMessageActions","messageContentOrderProp","messageContentOrder","messagesContext","MessageSimple","onLongPressProp","onLongPress","onLongPressMessageProp","onLongPressMessage","onPressProp","onPress","onPressMessageProp","onPressMessage","onPressInProp","onPressIn","onPressInMessageProp","onPressInMessage","onThreadSelect","openThread","OverlayReactionList","preventPress","removeMessage","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","isTargetedMessage","threadList","updateMessage","client","theme","colors","bg_gradient_start","targetedMessageBackground","targetedMessageUnderlay","messageSimple","actionsEnabled","status","MessageStatusTypes","RECEIVED","isMyMessage","userID","user","id","handleAction","name","value","sendAction","data","parent_id","onPressQuotedMessage","quotedMessage","errorOrFailed","FAILED","error","Keyboard","dismiss","quoted_message","showMessageOverlay","alignment","attachments","Array","isArray","reduce","acc","cur","files","push","other","og_scrape_url","videos","image_url","asset_url","thumb_url","title_link","images","length","hasAttachmentActions","some","attachment","actions","filter","content","text","onlyEmojis","emojiRegex","test","onOpenThread","hasReactions","latest_reactions","clientId","reactions","reactionType","reactionsOfReactionType","reaction","hasOwnReaction","user_id","own","ownCapabilities","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleTogglePinMessage","handleToggleReaction","blockUser","copyMessage","deleteMessage","editMessage","flagMessage","muteUser","pinMessage","quotedReply","retry","threadReply","unpinMessage","userLanguage","messageReactions","isThreadMessage","dismissOverlay","sendReaction","undefined","Boolean","messageContext","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","lastGroupMessage","onPressArgs","additionalInfo","handleOnPress","onPressInArgs","handleOnpressIn","pinned","backgroundColor","areEqual","prevProps","nextProps","prevMutedUsers","mutedUsers","prevGoToMessage","isAttachmentEqual","prevIsTargetedMessage","prevLastReceivedId","prevMembers","prevMessage","prevShowUnreadUnderlay","prevT","nextMutedUsers","nextGoToMessage","nextIsTargetedMessage","nextLastReceivedId","nextMembers","nextMessage","nextShowUnreadUnderlay","nextT","membersEqual","Object","keys","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","readBy","updated_at","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","messageUserBannedEqual","banned","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","index","attachmentKeysEqual","latestReactionsEqual","mutedUserSame","mutedUser","target","showUnreadUnderlayEqual","tEqual","targetedMessageEqual","MemoizedMessage","React","memo","Message"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AAEA;;AAIA;;AACA;;AAIA;;AAKA;;AAIA;;AAIA;;AAIA;;AACA;;AACA;;AACA;;AAKA;;AAEA;;AAEA;;;;;AAmKA,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAGzBC,KAHyB,EAItB;AAAA;;AACH,MAAMC,oBAAoB,GAAGD,KAAK,CAACE,OAAN,CAAcC,IAAd,KAAuB,SAApD;AAEA,MACEC,OADF,GAuDIJ,KAvDJ,CACEI,OADF;AAAA,MAEEC,QAFF,GAuDIL,KAvDJ,CAEEK,QAFF;AAAA,MAGEC,eAHF,GAuDIN,KAvDJ,CAGEM,eAHF;AAAA,MAIEC,6BAJF,GAuDIP,KAvDJ,CAIEO,6BAJF;AAAA,8BAuDIP,KAvDJ,CAKEQ,eALF;AAAA,MAKEA,eALF,sCAKoB,IALpB;AAAA,MAMEC,qBANF,GAuDIT,KAvDJ,CAMES,qBANF;AAAA,8BAuDIT,KAvDJ,CAOEU,kBAPF;AAAA,MAOEA,kBAPF,sCAOuB,KAPvB;AAAA,MAQEC,WARF,GAuDIX,KAvDJ,CAQEW,WARF;AAAA,2BAuDIX,KAvDJ,CASEY,WATF;AAAA,MASEA,WATF,mCASgB,CAAC,QAAD,CAThB;AAAA,MAUEC,WAVF,GAuDIb,KAvDJ,CAUEa,WAVF;AAAA,MAWEC,UAXF,GAuDId,KAvDJ,CAWEc,UAXF;AAAA,MAYEC,YAZF,GAuDIf,KAvDJ,CAYEe,YAZF;AAAA,MAaEC,UAbF,GAuDIhB,KAvDJ,CAaEgB,UAbF;AAAA,MAcEC,UAdF,GAuDIjB,KAvDJ,CAcEiB,UAdF;AAAA,MAeEC,UAfF,GAuDIlB,KAvDJ,CAeEkB,UAfF;AAAA,MAgBEC,gBAhBF,GAuDInB,KAvDJ,CAgBEmB,gBAhBF;AAAA,MAiBEC,iBAjBF,GAuDIpB,KAvDJ,CAiBEoB,iBAjBF;AAAA,MAkBkBC,kBAlBlB,GAuDIrB,KAvDJ,CAkBEsB,cAlBF;AAAA,MAmBEC,WAnBF,GAuDIvB,KAvDJ,CAmBEuB,WAnBF;AAAA,MAoBEC,iBApBF,GAuDIxB,KAvDJ,CAoBEwB,iBApBF;AAAA,MAqBEC,WArBF,GAuDIzB,KAvDJ,CAqBEyB,WArBF;AAAA,MAsBEC,cAtBF,GAuDI1B,KAvDJ,CAsBE0B,cAtBF;AAAA,MAuBEC,OAvBF,GAuDI3B,KAvDJ,CAuBE2B,OAvBF;AAAA,MAwBEzB,OAxBF,GAuDIF,KAvDJ,CAwBEE,OAxBF;AAAA,8BAuDIF,KAvDJ,CAyBE4B,cAzBF;AAAA,MAyBkBC,kBAzBlB,sCAyBuCC,8BAzBvC;AAAA,MA0BuBC,uBA1BvB,GAuDI/B,KAvDJ,CA0BEgC,mBA1BF;AAAA,MA2BEC,eA3BF,GAuDIjC,KAvDJ,CA2BEiC,eA3BF;AAAA,MA4BEC,aA5BF,GAuDIlC,KAvDJ,CA4BEkC,aA5BF;AAAA,MA6BeC,eA7Bf,GAuDInC,KAvDJ,CA6BEoC,WA7BF;AAAA,MA8BsBC,sBA9BtB,GAuDIrC,KAvDJ,CA8BEsC,kBA9BF;AAAA,MA+BWC,WA/BX,GAuDIvC,KAvDJ,CA+BEwC,OA/BF;AAAA,MAgCkBC,kBAhClB,GAuDIzC,KAvDJ,CAgCE0C,cAhCF;AAAA,MAiCaC,aAjCb,GAuDI3C,KAvDJ,CAiCE4C,SAjCF;AAAA,MAkCoBC,oBAlCpB,GAuDI7C,KAvDJ,CAkCE8C,gBAlCF;AAAA,MAmCEC,cAnCF,GAuDI/C,KAvDJ,CAmCE+C,cAnCF;AAAA,MAoCEC,UApCF,GAuDIhD,KAvDJ,CAoCEgD,UApCF;AAAA,MAqCEC,mBArCF,GAuDIjD,KAvDJ,CAqCEiD,mBArCF;AAAA,MAsCEC,YAtCF,GAuDIlD,KAvDJ,CAsCEkD,YAtCF;AAAA,MAuCEC,aAvCF,GAuDInD,KAvDJ,CAuCEmD,aAvCF;AAAA,MAwCEC,gBAxCF,GAuDIpD,KAvDJ,CAwCEoD,gBAxCF;AAAA,MAyCEC,cAzCF,GAuDIrD,KAvDJ,CAyCEqD,cAzCF;AAAA,MA0CEC,OA1CF,GAuDItD,KAvDJ,CA0CEsD,OA1CF;AAAA,MA2CEC,eA3CF,GAuDIvD,KAvDJ,CA2CEuD,eA3CF;AAAA,MA4CEC,UA5CF,GAuDIxD,KAvDJ,CA4CEwD,UA5CF;AAAA,MA6CEC,qBA7CF,GAuDIzD,KAvDJ,CA6CEyD,qBA7CF;AAAA,MA8CEC,UA9CF,GAuDI1D,KAvDJ,CA8CE0D,UA9CF;AAAA,MA+CEC,iBA/CF,GAuDI3D,KAvDJ,CA+CE2D,iBA/CF;AAAA,MAgDEC,kBAhDF,GAuDI5D,KAvDJ,CAgDE4D,kBAhDF;AAAA,MAiDEC,KAjDF,GAuDI7D,KAvDJ,CAiDE6D,KAjDF;AAAA,MAkDEC,kBAlDF,GAuDI9D,KAvDJ,CAkDE8D,kBAlDF;AAAA,MAmDEC,CAnDF,GAuDI/D,KAvDJ,CAmDE+D,CAnDF;AAAA,MAoDEC,iBApDF,GAuDIhE,KAvDJ,CAoDEgE,iBApDF;AAAA,0BAuDIhE,KAvDJ,CAqDEiE,UArDF;AAAA,MAqDEA,UArDF,kCAqDe,KArDf;AAAA,MAsDEC,aAtDF,GAuDIlE,KAvDJ,CAsDEkE,aAtDF;AAwDA,MAAQC,MAAR,GAAmB1C,WAAnB,CAAQ0C,MAAR;;AACA,kBAKI,6BALJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAEcC,iBAFd,yBAEcA,iBAFd;AAAA,MAEiCC,yBAFjC,yBAEiCA,yBAFjC;AAAA,MAGqBC,uBAHrB,mBAGIC,aAHJ,CAGqBD,uBAHrB;;AAOA,MAAME,cAAc,GAClBxE,OAAO,CAACC,IAAR,KAAiB,SAAjB,IAA8BD,OAAO,CAACyE,MAAR,KAAmBC,0BAAmBC,QADtE;AAGA,MAAMC,WAAW,GAAGX,MAAM,IAAIjE,OAAV,IAAqBiE,MAAM,CAACY,MAAP,uBAAkB7E,OAAO,CAAC8E,IAA1B,qBAAkB,cAAcC,EAAhC,CAAzC;;AAEA,MAAMC,YAAY;AAAA,+EAAG,iBAAOC,IAAP,EAAqBC,KAArB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBACflF,OAAO,CAAC+E,EADO;AAAA;AAAA;AAAA;;AAAA;AAAA,qBAEE7E,OAFF,oBAEEA,OAAO,CAAEiF,UAAT,CAAoBnF,OAAO,CAAC+E,EAA5B,uCAAmCE,IAAnC,EAA0CC,KAA1C,EAFF;;AAAA;AAEXE,cAAAA,IAFW;;AAGjB,kBAAIA,IAAJ,YAAIA,IAAI,CAAEpF,OAAV,EAAmB;AACjBgE,gBAAAA,aAAa,CAACoB,IAAI,CAACpF,OAAN,CAAb;AACD,eAFD,MAEO;AACLiD,gBAAAA,aAAa,CAAC;AACZ8B,kBAAAA,EAAE,EAAE/E,OAAO,CAAC+E,EADA;AAEZM,kBAAAA,SAAS,EAAErF,OAAO,CAACqF;AAFP,iBAAD,CAAb;AAID;;AAVgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAZL,YAAY;AAAA;AAAA;AAAA,KAAlB;;AAcA,MAAMM,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,aAAD,EAAoD;AAC/E,QAAI,CAAC9E,WAAL,EAAkB;AAElBA,IAAAA,WAAW,CAAC8E,aAAa,CAACR,EAAf,CAAX;AACD,GAJD;;AAMA,MAAMS,aAAa,GAAGxF,OAAO,CAACC,IAAR,KAAiB,OAAjB,IAA4BD,OAAO,CAACyE,MAAR,KAAmBC,0BAAmBe,MAAxF;;AAEA,MAAMnD,QAAO,GAAG,SAAVA,OAAU,GAA2B;AAAA,QAA1BoD,KAA0B,uEAAlBF,aAAkB;;AACzC,QAAInF,6BAAJ,EAAmC;AACjCsF,4BAASC,OAAT;AACD;;AACD,QAAML,aAAa,GAAGvF,OAAO,CAAC6F,cAA9B;;AACA,QAAIH,KAAJ,EAAW;AACTI,MAAAA,kBAAkB,CAAC,KAAD,EAAQ,IAAR,CAAlB;AACD,KAFD,MAEO,IAAIP,aAAJ,EAAmB;AACxBD,MAAAA,oBAAoB,CAACC,aAAD,CAApB;AACD;AACF,GAVD;;AAYA,MAAMQ,SAAS,GACbvF,kBAAkB,KAAKA,kBAAkB,KAAK,MAAvB,IAAiCA,kBAAkB,KAAK,OAA7D,CAAlB,GACIA,kBADJ,GAEIoE,WAAW,GACX,OADW,GAEX,MALN;AAcA,MAAMoB,WAAW,GACf,CAACjG,oBAAD,IAAyBkG,KAAK,CAACC,OAAN,CAAclG,OAAO,CAACgG,WAAtB,CAAzB,GACIhG,OAAO,CAACgG,WAAR,CAAoBG,MAApB,CACE,UAACC,GAAD,EAAMC,GAAN,EAAc;AACZ,QAAIA,GAAG,CAACpG,IAAJ,KAAa,MAAjB,EAAyB;AACvBmG,MAAAA,GAAG,CAACE,KAAJ,CAAUC,IAAV,CAAeF,GAAf;AACAD,MAAAA,GAAG,CAACI,KAAJ,GAAY,EAAZ;AACD,KAHD,MAGO,IAAIH,GAAG,CAACpG,IAAJ,KAAa,OAAb,IAAwB,CAACoG,GAAG,CAACI,aAA7B,IAA8C,sCAAlD,EAA6E;AAClFL,MAAAA,GAAG,CAACM,MAAJ,CAAWH,IAAX,CAAgB;AACdI,QAAAA,SAAS,EAAEN,GAAG,CAACO,SADD;AAEdC,QAAAA,SAAS,EAAER,GAAG,CAACQ,SAFD;AAGd5G,QAAAA,IAAI,EAAE;AAHQ,OAAhB;AAKAmG,MAAAA,GAAG,CAACI,KAAJ,GAAY,EAAZ;AACD,KAPM,MAOA,IAAIH,GAAG,CAACpG,IAAJ,KAAa,OAAb,IAAwB,CAACoG,GAAG,CAACI,aAAjC,EAAgD;AACrDL,MAAAA,GAAG,CAACE,KAAJ,CAAUC,IAAV,CAAeF,GAAf;AACAD,MAAAA,GAAG,CAACI,KAAJ,GAAY,EAAZ;AACD,KAHM,MAGA,IAAIH,GAAG,CAACpG,IAAJ,KAAa,OAAjB,EAA0B;AAC/BmG,MAAAA,GAAG,CAACE,KAAJ,CAAUC,IAAV,CAAeF,GAAf;AACD,KAFM,MAEA,IAAIA,GAAG,CAACpG,IAAJ,KAAa,OAAb,IAAwB,CAACoG,GAAG,CAACS,UAA7B,IAA2C,CAACT,GAAG,CAACI,aAApD,EAAmE;AAKxE,UAAIJ,GAAG,CAACM,SAAJ,IAAiBN,GAAG,CAACQ,SAAzB,EAAoC;AAClCT,QAAAA,GAAG,CAACW,MAAJ,CAAWR,IAAX,CAAgBF,GAAhB;AACAD,QAAAA,GAAG,CAACI,KAAJ,GAAY,EAAZ;AACD;AAEF,KAVM,MAUA,IAAI,CAACJ,GAAG,CAACE,KAAJ,CAAUU,MAAX,IAAqB,CAACZ,GAAG,CAACW,MAAJ,CAAWC,MAAjC,IAA2C,CAACZ,GAAG,CAACM,MAAJ,CAAWM,MAA3D,EAAmE;AACxEZ,MAAAA,GAAG,CAACI,KAAJ,CAAUD,IAAV,CAAeF,GAAf;AACD;;AAED,WAAOD,GAAP;AACD,GAhCH,EAiCE;AACEE,IAAAA,KAAK,EAAE,EADT;AAEES,IAAAA,MAAM,EAAE,EAFV;AAGEP,IAAAA,KAAK,EAAE,EAHT;AAIEE,IAAAA,MAAM,EAAE;AAJV,GAjCF,CADJ,GAyCI;AACEJ,IAAAA,KAAK,EAAE,EADT;AAEES,IAAAA,MAAM,EAAE,EAFV;AAGEP,IAAAA,KAAK,EAAE,EAHT;AAIEE,IAAAA,MAAM,EAAE;AAJV,GA1CN;AAmDA,MAAMO,oBAAoB,GACxB,CAAClH,oBAAD,IACAkG,KAAK,CAACC,OAAN,CAAclG,OAAO,CAACgG,WAAtB,CADA,IAEAhG,OAAO,CAACgG,WAAR,CAAoBkB,IAApB,CAAyB,UAACC,UAAD;AAAA,WAAgBA,UAAU,CAACC,OAAX,IAAsBD,UAAU,CAACC,OAAX,CAAmBJ,MAAzD;AAAA,GAAzB,CAHF;AAKA,MAAMlF,mBAAmB,GAAGD,uBAAuB,CAACwF,MAAxB,CAA+B,UAACC,OAAD,EAAa;AACtE,QAAIA,OAAO,KAAK,cAAhB,EAAgC;AAC9B,aAAO,CAAC,CAACtH,OAAO,CAAC6F,cAAjB;AACD;;AAED,YAAQyB,OAAR;AACE,WAAK,aAAL;AACE,eAAO,CAAC,CAACtB,WAAW,CAACQ,KAAZ,CAAkBQ,MAA3B;;AACF,WAAK,OAAL;AACE,eAAO,CAAC,CAAChB,WAAW,CAACM,KAAZ,CAAkBU,MAA3B;;AACF,WAAK,SAAL;AACE,eAAO,CAAC,CAAChB,WAAW,CAACe,MAAZ,CAAmBC,MAArB,IAA+B,CAAC,CAAChB,WAAW,CAACU,MAAZ,CAAmBM,MAA3D;;AACF,WAAK,MAAL;AACA;AACE,eAAO,CAAC,CAAChH,OAAO,CAACuH,IAAjB;AATJ;AAWD,GAhB2B,CAA5B;;AAkBA,MAAMC,UAAU,GACd,CAACxB,WAAW,CAACM,KAAZ,CAAkBU,MAAnB,IACA,CAAChB,WAAW,CAACe,MAAZ,CAAmBC,MADpB,IAEA,CAAChB,WAAW,CAACQ,KAAZ,CAAkBQ,MAFnB,IAGA,CAAC,CAAChH,OAAO,CAACuH,IAHV,IAIAE,kBAAWC,IAAX,CAAgB1H,OAAO,CAACuH,IAAxB,CALF;;AAOA,MAAMI,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzB,QAAI9E,cAAJ,EAAoB;AAClBA,MAAAA,cAAc,CAAC7C,OAAD,CAAd;AACD;;AACD,QAAI8C,UAAJ,EAAgB;AACdA,MAAAA,UAAU,CAAC9C,OAAD,CAAV;AACD;AACF,GAPD;;AASA,MAAM4H,YAAY,GAChB,CAAC7H,oBAAD,IAAyB,CAAC,CAACC,OAAO,CAAC6H,gBAAnC,IAAuD7H,OAAO,CAAC6H,gBAAR,CAAyBb,MAAzB,GAAkC,CAD3F;AAGA,MAAMc,QAAQ,GAAG7D,MAAM,CAACY,MAAxB;AAEA,MAAMkD,SAAS,GAAGH,YAAY,GAC1BhE,kBAAkB,CAACuC,MAAnB,CAA0B,UAACC,GAAD,EAAMC,GAAN,EAAc;AAAA;;AACtC,QAAM2B,YAAY,GAAG3B,GAAG,CAACpG,IAAzB;AACA,QAAMgI,uBAAuB,4BAAGjI,OAAO,CAAC6H,gBAAX,qBAAG,sBAA0BR,MAA1B,CAC9B,UAACa,QAAD;AAAA,aAAcA,QAAQ,CAACjI,IAAT,KAAkB+H,YAAhC;AAAA,KAD8B,CAAhC;;AAIA,QAAIC,uBAAJ,YAAIA,uBAAuB,CAAEjB,MAA7B,EAAqC;AACnC,UAAMmB,cAAc,GAAGF,uBAAuB,CAACf,IAAxB,CACrB,UAACgB,QAAD;AAAA,eAAcA,QAAQ,CAACE,OAAT,KAAqBN,QAAnC;AAAA,OADqB,CAAvB;AAGA1B,MAAAA,GAAG,CAACG,IAAJ,CAAS;AAAE8B,QAAAA,GAAG,EAAEF,cAAP;AAAuBlI,QAAAA,IAAI,EAAE+H;AAA7B,OAAT;AACD;;AAED,WAAO5B,GAAP;AACD,GAdD,EAcG,EAdH,CAD0B,GAgB1B,EAhBJ;AAkBA,MAAMkC,eAAe,GAAG,wDAAxB;;AAEA,8BASI,wDAAyB;AAC3BpI,IAAAA,OAAO,EAAPA,OAD2B;AAE3B+D,IAAAA,MAAM,EAANA,MAF2B;AAG3B1D,IAAAA,qBAAqB,EAArBA,qBAH2B;AAI3BP,IAAAA,OAAO,EAAPA,OAJ2B;AAK3BiD,IAAAA,aAAa,EAAbA,aAL2B;AAM3BC,IAAAA,gBAAgB,EAAhBA,gBAN2B;AAO3BG,IAAAA,eAAe,EAAfA,eAP2B;AAQ3BE,IAAAA,qBAAqB,EAArBA,qBAR2B;AAS3BK,IAAAA,kBAAkB,EAAlBA,kBAT2B;AAU3BI,IAAAA,aAAa,EAAbA;AAV2B,GAAzB,CATJ;AAAA,MACEuE,mBADF,yBACEA,mBADF;AAAA,MAEEC,iBAFF,yBAEEA,iBAFF;AAAA,MAGEC,wBAHF,yBAGEA,wBAHF;AAAA,MAIEC,mBAJF,yBAIEA,mBAJF;AAAA,MAKEC,mBALF,yBAKEA,mBALF;AAAA,MAMEC,oBANF,yBAMEA,oBANF;AAAA,MAOEC,sBAPF,yBAOEA,sBAPF;AAAA,MAQEC,oBARF,yBAQEA,oBARF;;AAsBA,2BAaI,2CAAkB;AACpB5I,IAAAA,OAAO,EAAPA,OADoB;AAEpB+D,IAAAA,MAAM,EAANA,MAFoB;AAGpB1D,IAAAA,qBAAqB,EAArBA,qBAHoB;AAIpBI,IAAAA,WAAW,EAAXA,WAJoB;AAKpBC,IAAAA,UAAU,EAAVA,UALoB;AAMpBC,IAAAA,YAAY,EAAZA,YANoB;AAOpBC,IAAAA,UAAU,EAAVA,UAPoB;AAQpBC,IAAAA,UAAU,EAAVA,UARoB;AASpBC,IAAAA,UAAU,EAAVA,UAToB;AAUpBC,IAAAA,gBAAgB,EAAhBA,gBAVoB;AAWpBC,IAAAA,iBAAiB,EAAjBA,iBAXoB;AAYpBE,IAAAA,cAAc,EAAED,kBAZI;AAapBE,IAAAA,WAAW,EAAXA,WAboB;AAcpBC,IAAAA,iBAAiB,EAAjBA,iBAdoB;AAepBtB,IAAAA,OAAO,EAAPA,OAfoB;AAgBpB6C,IAAAA,cAAc,EAAdA,cAhBoB;AAiBpBC,IAAAA,UAAU,EAAVA,UAjBoB;AAkBpBG,IAAAA,aAAa,EAAbA,aAlBoB;AAmBpBC,IAAAA,gBAAgB,EAAhBA,gBAnBoB;AAoBpBC,IAAAA,cAAc,EAAdA,cApBoB;AAqBpBE,IAAAA,eAAe,EAAfA,eArBoB;AAsBpBC,IAAAA,UAAU,EAAVA,UAtBoB;AAuBpBC,IAAAA,qBAAqB,EAArBA,qBAvBoB;AAwBpBK,IAAAA,kBAAkB,EAAlBA,kBAxBoB;AAyBpBC,IAAAA,CAAC,EAADA,CAzBoB;AA0BpBG,IAAAA,aAAa,EAAbA;AA1BoB,GAAlB,CAbJ;AAAA,MACE+E,SADF,sBACEA,SADF;AAAA,MAEEC,WAFF,sBAEEA,WAFF;AAAA,MAGEC,aAHF,sBAGEA,aAHF;AAAA,MAIEC,WAJF,sBAIEA,WAJF;AAAA,MAKEC,WALF,sBAKEA,WALF;AAAA,MAME/H,cANF,sBAMEA,cANF;AAAA,MAOEgI,QAPF,sBAOEA,QAPF;AAAA,MAQEC,UARF,sBAQEA,UARF;AAAA,MASEC,WATF,sBASEA,WATF;AAAA,MAUEC,KAVF,sBAUEA,KAVF;AAAA,MAWEC,WAXF,sBAWEA,WAXF;AAAA,MAYEC,YAZF,sBAYEA,YAZF;;AA0CA,8BAAyB,gDAAzB;AAAA,MAAQC,YAAR,yBAAQA,YAAR;;AAEA,MAAM5D,kBAAkB;AAAA,gFAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO6D,cAAAA,gBAAP,8DAA0B,KAA1B;AAAiCjE,cAAAA,KAAjC,8DAAyCF,aAAzC;AAAA;AAAA,qBACnBpF,eAAe,EADI;;AAAA;AAGnBwJ,cAAAA,eAHmB,GAGD7F,UAAU,IAAI,CAAC,CAAC/D,OAAO,CAACqF,SAHvB;;AAKnBwE,cAAAA,cALmB,GAKF,SAAjBA,cAAiB;AAAA,uBAAMvG,UAAU,CAAC,MAAD,CAAhB;AAAA,eALE;;AAOnB5B,cAAAA,cAPmB,GAQvB,OAAOC,kBAAP,KAA8B,UAA9B,GACIA,kBADJ,GAEIA,kBAAkB,CAAC;AACjBoH,gBAAAA,SAAS,EAATA,SADiB;AAEjBC,gBAAAA,WAAW,EAAXA,WAFiB;AAGjBC,gBAAAA,aAAa,EAAbA,aAHiB;AAIjBY,gBAAAA,cAAc,EAAdA,cAJiB;AAKjBX,gBAAAA,WAAW,EAAXA,WALiB;AAMjBxD,gBAAAA,KAAK,EAALA,KANiB;AAOjByD,gBAAAA,WAAW,EAAXA,WAPiB;AAQjBvE,gBAAAA,WAAW,EAAXA,WARiB;AASjBgF,gBAAAA,eAAe,EAAfA,eATiB;AAUjB5J,gBAAAA,OAAO,EAAPA,OAViB;AAWjB2J,gBAAAA,gBAAgB,EAAhBA,gBAXiB;AAYjBP,gBAAAA,QAAQ,EAARA,QAZiB;AAajBd,gBAAAA,eAAe,EAAfA,eAbiB;AAcjBe,gBAAAA,UAAU,EAAVA,UAdiB;AAejBC,gBAAAA,WAAW,EAAXA,WAfiB;AAgBjBC,gBAAAA,KAAK,EAALA,KAhBiB;AAiBjBC,gBAAAA,WAAW,EAAXA,WAjBiB;AAkBjBC,gBAAAA,YAAY,EAAZA;AAlBiB,eAAD,CAVC;AA+BzBrG,cAAAA,OAAO,CAAC;AACN2C,gBAAAA,SAAS,EAATA,SADM;AAENxE,gBAAAA,WAAW,EAAXA,WAFM;AAGNuG,gBAAAA,QAAQ,EAAE7D,MAAM,CAACY,MAHX;AAINyB,gBAAAA,KAAK,EAAEN,WAAW,CAACM,KAJb;AAKN5F,gBAAAA,WAAW,EAAXA,WALM;AAMNU,gBAAAA,cAAc,EAAEkH,eAAe,CAACwB,YAAhB,GAA+B1I,cAA/B,GAAgD2I,SAN1D;AAONhD,gBAAAA,MAAM,EAAEf,WAAW,CAACe,MAPd;AAQN/G,gBAAAA,OAAO,EAAPA,OARM;AASN0B,gBAAAA,cAAc,EAAEA,cAAF,oBAAEA,cAAc,CAAE2F,MAAhB,CAAuB2C,OAAvB,CATV;AAUNC,gBAAAA,cAAc,gCAAOA,cAAP;AAAuB9J,kBAAAA,QAAQ,EAAE,IAAjC;AAAuC6C,kBAAAA,YAAY,EAAE;AAArD,kBAVR;AAWNkH,gBAAAA,oBAAoB,EAAE,CAACxE,KAAD,IAAUiE,gBAAV,GAA6B9F,CAAC,CAAC,mBAAD,CAA9B,GAAsDkG,SAXtE;AAYNhI,gBAAAA,eAAe,gCAAOA,eAAP;AAAwBD,kBAAAA,mBAAmB,EAAnBA;AAAxB,kBAZT;AAaN0F,gBAAAA,UAAU,EAAVA,UAbM;AAcN2C,gBAAAA,gBAAgB,EAAEnE,WAAW,CAACQ,KAdxB;AAeNzD,gBAAAA,mBAAmB,EAAnBA,mBAfM;AAgBNuF,gBAAAA,eAAe,EAAfA,eAhBM;AAiBN1E,gBAAAA,kBAAkB,EAAlBA,kBAjBM;AAkBNG,gBAAAA,UAAU,EAAVA,UAlBM;AAmBN2F,gBAAAA,YAAY,EAAZA,YAnBM;AAoBNhD,gBAAAA,MAAM,EAAEV,WAAW,CAACU;AApBd,eAAD,CAAP;AAuBApD,cAAAA,UAAU,CAAC,SAAD,CAAV;;AAtDyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAlBwC,kBAAkB;AAAA;AAAA;AAAA,KAAxB;;AAyDA,MAAMsE,cAAqC,GAAG;AAC5CnB,IAAAA,aAAa,EAAEV,mBAD6B;AAE5CW,IAAAA,WAAW,EAAEV,iBAF+B;AAG5Ca,IAAAA,UAAU,EAAER,sBAHgC;AAI5CS,IAAAA,WAAW,EAAEb,wBAJ+B;AAK5C4B,IAAAA,aAAa,EAAE3B,mBAL6B;AAM5C5C,IAAAA,kBAAkB,EAAlBA,kBAN4C;AAO5CwE,IAAAA,aAAa,EAAE3B,mBAP6B;AAQ5C4B,IAAAA,cAAc,EAAE3B,oBAR4B;AAS5C4B,IAAAA,cAAc,EAAE1B;AAT4B,GAA9C;AAYA,MAAM1G,kBAAkB,GACtBjC,QAAQ,IAAI8G,oBAAZ,GACI;AAAA,WAAM,IAAN;AAAA,GADJ,GAEI9E,sBAAsB,GACtB,UAACsI,OAAD;AAAA,WACEtI,sBAAsB,CAAC;AACrBiI,MAAAA,cAAc,EAAdA,cADqB;AAErBM,MAAAA,cAAc,EAAE,CAAAD,OAAO,QAAP,YAAAA,OAAO,CAAEC,cAAT,KAA2B5E,kBAFtB;AAGrB6E,MAAAA,OAAO,EAAE,CAAAF,OAAO,QAAP,YAAAA,OAAO,CAAEE,OAAT,KAAoB,SAHR;AAIrBC,MAAAA,KAAK,EAAEH,OAAF,oBAAEA,OAAO,CAAEG,KAJK;AAKrB5K,MAAAA,OAAO,EAAPA;AALqB,KAAD,CADxB;AAAA,GADsB,GAStBiC,eAAe,GACf,UAACwI,OAAD;AAAA,WACExI,eAAe,CAAC;AACdmI,MAAAA,cAAc,EAAdA,cADc;AAEdM,MAAAA,cAAc,EAAE,CAAAD,OAAO,QAAP,YAAAA,OAAO,CAAEC,cAAT,KAA2B5E,kBAF7B;AAGd6E,MAAAA,OAAO,EAAE,CAAAF,OAAO,QAAP,YAAAA,OAAO,CAAEE,OAAT,KAAoB,SAHf;AAIdC,MAAAA,KAAK,EAAEH,OAAF,oBAAEA,OAAO,CAAEG;AAJF,KAAD,CADjB;AAAA,GADe,GAQftK,eAAe,GACf,YAAM;AACJ,+BAAc,cAAd;AACAwF,IAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD,GAJc,GAKf;AAAA,WAAM,IAAN;AAAA,GAzBN;AA2BA,MAAMmE,cAAc,GAAG,sDAAwB;AAC7CzF,IAAAA,cAAc,EAAdA,cAD6C;AAE7CuB,IAAAA,SAAS,EAATA,SAF6C;AAG7C7F,IAAAA,OAAO,EAAPA,OAH6C;AAI7CC,IAAAA,QAAQ,EAARA,QAJ6C;AAK7CmG,IAAAA,KAAK,EAAEN,WAAW,CAACM,KAL0B;AAM7C7F,IAAAA,WAAW,EAAXA,WAN6C;AAO7CC,IAAAA,WAAW,EAAXA,WAP6C;AAQ7CsE,IAAAA,YAAY,EAAZA,YAR6C;AAS7CuD,IAAAA,mBAAmB,EAAnBA,mBAT6C;AAU7CC,IAAAA,iBAAiB,EAAjBA,iBAV6C;AAW7CC,IAAAA,wBAAwB,EAAxBA,wBAX6C;AAY7CC,IAAAA,mBAAmB,EAAnBA,mBAZ6C;AAa7CC,IAAAA,mBAAmB,EAAnBA,mBAb6C;AAc7CC,IAAAA,oBAAoB,EAApBA,oBAd6C;AAe7CE,IAAAA,oBAAoB,EAApBA,oBAf6C;AAgB7ClB,IAAAA,YAAY,EAAZA,YAhB6C;AAiB7Cb,IAAAA,MAAM,EAAEf,WAAW,CAACe,MAjByB;AAkB7CnC,IAAAA,WAAW,EAAXA,WAlB6C;AAmB7CiG,IAAAA,gBAAgB,EAAE,CAAAnK,WAAW,QAAX,YAAAA,WAAW,CAAG,CAAH,CAAX,MAAqB,QAArB,IAAiC,CAAAA,WAAW,QAAX,YAAAA,WAAW,CAAG,CAAH,CAAX,MAAqB,QAnB3B;AAoB7Cc,IAAAA,cAAc,EAAdA,cApB6C;AAqB7CC,IAAAA,OAAO,EAAPA,OArB6C;AAsB7CzB,IAAAA,OAAO,EAAPA,OAtB6C;AAuB7C8B,IAAAA,mBAAmB,EAAnBA,mBAvB6C;AAwB7CI,IAAAA,WAAW,EAAEE,kBAxBgC;AAyB7CoF,IAAAA,UAAU,EAAVA,UAzB6C;AA0B7CG,IAAAA,YAAY,EAAZA,YA1B6C;AA2B7CrF,IAAAA,OAAO,EAAE,iBAACmI,OAAD,EAAa;AACpB,UAAMK,WAAW,GAAG;AAClBV,QAAAA,cAAc,EAAdA,cADkB;AAElBW,QAAAA,cAAc,EAAEN,OAAO,CAACM,cAFN;AAGlBL,QAAAA,cAAc,EAAED,OAAO,CAACC,cAAR,IAA0BpI,QAHxB;AAIlBqI,QAAAA,OAAO,EAAEF,OAAO,CAACE,OAAR,IAAmB,SAJV;AAKlBC,QAAAA,KAAK,EAAEH,OAAO,CAACG,KALG;AAMlB5K,QAAAA,OAAO,EAAPA;AANkB,OAApB;;AASA,UAAMgL,aAAa,GAAG,SAAhBA,aAAgB,GAAM;AAC1B,YAAI3I,WAAJ,EAAiB,OAAOA,WAAW,CAACyI,WAAD,CAAlB;AACjB,YAAIvI,kBAAJ,EAAwB,OAAOA,kBAAkB,CAACuI,WAAD,CAAzB;AACxB,YAAIL,OAAO,CAACC,cAAZ,EAA4B,OAAOD,OAAO,CAACC,cAAR,EAAP;AAE5B,eAAOpI,QAAO,EAAd;AACD,OAND;;AAQA0I,MAAAA,aAAa;AACd,KA9C4C;AA+C7CtI,IAAAA,SAAS,EACPD,aAAa,IAAIE,oBAAjB,GACI,UAAC8H,OAAD,EAAa;AACX,UAAMQ,aAAa,GAAG;AACpBb,QAAAA,cAAc,EAAdA,cADoB;AAEpBM,QAAAA,cAAc,EAAED,OAAO,CAACC,cAFJ;AAGpBC,QAAAA,OAAO,EAAEF,OAAO,CAACE,OAAR,IAAmB,SAHR;AAIpBC,QAAAA,KAAK,EAAEH,OAAO,CAACG,KAJK;AAKpB5K,QAAAA,OAAO,EAAPA;AALoB,OAAtB;;AAOA,UAAMkL,eAAe,GAAG,SAAlBA,eAAkB,GAAM;AAC5B,YAAIzI,aAAJ,EAAmB,OAAOA,aAAa,CAACwI,aAAD,CAApB;AACnB,YAAItI,oBAAJ,EAA0B,OAAOA,oBAAoB,CAACsI,aAAD,CAA3B;AAC3B,OAHD;;AAIAC,MAAAA,eAAe;AAChB,KAdL,GAeI,IA/DuC;AAgE7Cf,IAAAA,gBAAgB,EAAEnE,WAAW,CAACQ,KAhEe;AAiE7CxD,IAAAA,YAAY,EAAZA,YAjE6C;AAkE7C+E,IAAAA,SAAS,EAATA,SAlE6C;AAmE7CvE,IAAAA,UAAU,EAAVA,UAnE6C;AAoE7CsC,IAAAA,kBAAkB,EAAlBA,kBApE6C;AAqE7CrC,IAAAA,iBAAiB,EAAE,OAAOA,iBAAP,KAA6B,SAA7B,GAAyCA,iBAAzC,GAA6DmB,WArEnC;AAsE7Cb,IAAAA,UAAU,EAAVA,UAtE6C;AAuE7C2C,IAAAA,MAAM,EAAEV,WAAW,CAACU;AAvEyB,GAAxB,CAAvB;AA0EA,MAAI,EAAE3G,oBAAoB,IAAI+B,mBAAmB,CAACkF,MAA9C,CAAJ,EAA2D,OAAO,IAAP;AAE3D,SACE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CAAChH,OAAO,CAACmL,MAAR,IAAkB;AAAEC,MAAAA,eAAe,EAAE/G;AAAnB,KAAnB,CADT;AAEE,IAAA,MAAM,EAAC,iBAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAIE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLV,KADK,EAEL;AACEyH,MAAAA,eAAe,EAAE1H,kBAAkB,GAAGU,iBAAH,GAAuB2F;AAD5D,KAFK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLjG,iBAAiB;AACXsH,MAAAA,eAAe,EAAE/G;AADN,OACoCC,uBADpC,IAEb,EAHC,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOE,gCAAC,+BAAD;AAAiB,IAAA,KAAK,EAAE2F,cAAxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,aAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,CAPF,CARF,CAJF,CADF;AA2BD,CAxfD;;AA0fA,IAAMoB,QAAQ,GAAG,SAAXA,QAAW,CACfC,SADe,EAEfC,SAFe,EAGZ;AAAA;;AACH,MAC6BC,cAD7B,GAUIF,SAVJ,CACE/J,WADF,CACiBkK,UADjB;AAAA,MAEeC,eAFf,GAUIJ,SAVJ,CAEE7K,WAFF;AAAA,MAGEkL,iBAHF,GAUIL,SAVJ,CAGEK,iBAHF;AAAA,MAIqBC,qBAJrB,GAUIN,SAVJ,CAIExH,iBAJF;AAAA,MAKkB+H,kBALlB,GAUIP,SAVJ,CAKE9J,cALF;AAAA,MAMWsK,WANX,GAUIR,SAVJ,CAME7J,OANF;AAAA,MAOWsK,WAPX,GAUIT,SAVJ,CAOEtL,OAPF;AAAA,MAQsBgM,sBARtB,GAUIV,SAVJ,CAQE5H,kBARF;AAAA,MASKuI,KATL,GAUIX,SAVJ,CASEzH,CATF;AAWA,MAC6BqI,cAD7B,GASIX,SATJ,CACEhK,WADF,CACiBkK,UADjB;AAAA,MAEeU,eAFf,GASIZ,SATJ,CAEE9K,WAFF;AAAA,MAGqB2L,qBAHrB,GASIb,SATJ,CAGEzH,iBAHF;AAAA,MAIkBuI,kBAJlB,GASId,SATJ,CAIE/J,cAJF;AAAA,MAKW8K,WALX,GASIf,SATJ,CAKE9J,OALF;AAAA,MAMW8K,WANX,GASIhB,SATJ,CAMEvL,OANF;AAAA,MAOsBwM,sBAPtB,GASIjB,SATJ,CAOE7H,kBAPF;AAAA,MAQK+I,KARL,GASIlB,SATJ,CAQE1H,CARF;AAWA,MAAM6I,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAYd,WAAZ,EAAyB9E,MAAzB,KAAoC2F,MAAM,CAACC,IAAP,CAAYN,WAAZ,EAAyBtF,MAAlF;AACA,MAAI,CAAC0F,YAAL,EAAmB,OAAO,KAAP;AAEnB,MAAMG,YAAY,GAAGd,WAAW,CAACe,WAAZ,KAA4BP,WAAW,CAACO,WAA7D;AACA,MAAI,CAACD,YAAL,EAAmB,OAAO,KAAP;AAEnB,MAAME,+BAA+B,GACnClB,kBAAkB,KAAKQ,kBAAvB,KACCR,kBAAkB,KAAKE,WAAW,CAAChH,EAAnC,IACC8G,kBAAkB,KAAKU,WAAW,CAACxH,EADpC,IAECsH,kBAAkB,KAAKN,WAAW,CAAChH,EAFpC,IAGCsH,kBAAkB,KAAKE,WAAW,CAACxH,EAJrC,CADF;AAOA,MAAIgI,+BAAJ,EAAqC,OAAO,KAAP;AAErC,MAAMC,4BAA4B,GAChCT,WAAW,CAACU,iBAAZ,IAAiCvB,eAAe,KAAKS,eADvD;AAGA,MAAIa,4BAAJ,EAAkC,OAAO,KAAP;AAElC,MAAME,wBAAwB,GAAGnB,WAAW,CAAC9L,IAAZ,KAAqB,SAAtD;AACA,MAAMkN,wBAAwB,GAAGZ,WAAW,CAACtM,IAAZ,KAAqB,SAAtD;AAEA,MAAMmN,YAAY,GAChBF,wBAAwB,KAAKC,wBAA7B,IACA,CAAC,+DAA0CpB,WAA1C,KAA0DA,WAAW,CAACsB,MAAvE,OACG,+DAA0Cd,WAA1C,KAA0DA,WAAW,CAACc,MADzE,CADA,IAGAtB,WAAW,CAACtH,MAAZ,KAAuB8H,WAAW,CAAC9H,MAHnC,IAIAsH,WAAW,CAAC9L,IAAZ,KAAqBsM,WAAW,CAACtM,IAJjC,IAKA8L,WAAW,CAACxE,IAAZ,KAAqBgF,WAAW,CAAChF,IALjC,IAMAwE,WAAW,CAACZ,MAAZ,KAAuBoB,WAAW,CAACpB,MANnC,IAOA,MAAGY,WAAH,oBAAGA,WAAW,CAAEuB,UAAhB,YAAoCf,WAApC,oBAAoCA,WAAW,CAAEe,UAAjD,CARF;AAUA,MAAI,CAACF,YAAL,EAAmB,OAAO,KAAP;AAEnB,MAAMG,8BAA8B,GAAG,0BAAAxB,WAAW,CAAClG,cAAZ,2CAA4B5F,IAA5B,MAAqC,SAA5E;AACA,MAAMuN,8BAA8B,GAAG,0BAAAjB,WAAW,CAAC1G,cAAZ,2CAA4B5F,IAA5B,MAAqC,SAA5E;AAEA,MAAMwN,kBAAkB,GACtB,2BAAA1B,WAAW,CAAClG,cAAZ,4CAA4Bd,EAA5B,iCAAmCwH,WAAW,CAAC1G,cAA/C,qBAAmC,uBAA4Bd,EAA/D,KACAwI,8BAA8B,KAAKC,8BAFrC;AAIA,MAAI,CAACC,kBAAL,EAAyB,OAAO,KAAP;AAEzB,MAAMC,sBAAsB,GAAG,sBAAA3B,WAAW,CAACjH,IAAZ,uCAAkB6I,MAAlB,4BAA6BpB,WAAW,CAACzH,IAAzC,qBAA6B,kBAAkB6I,MAA/C,CAA/B;AACA,MAAI,CAACD,sBAAL,EAA6B,OAAO,KAAP;AAE7B,MAAME,sBAAsB,GAAG7B,WAAW,CAAC/F,WAA3C;AACA,MAAM6H,sBAAsB,GAAGtB,WAAW,CAACvG,WAA3C;AACA,MAAM8H,gBAAgB,GACnB7H,KAAK,CAACC,OAAN,CAAc0H,sBAAd,KACC3H,KAAK,CAACC,OAAN,CAAc2H,sBAAd,CADD,IAECD,sBAAsB,CAAC5G,MAAvB,KAAkC6G,sBAAsB,CAAC7G,MAF1D,IAGC4G,sBAAsB,CAACG,KAAvB,CAA6B,UAAC5G,UAAD,EAAa6G,KAAb,EAAuB;AAClD,QAAMC,mBAAmB,GACvB9G,UAAU,CAAClH,IAAX,KAAoB,OAApB,GACIkH,UAAU,CAACR,SAAX,KAAyBkH,sBAAsB,CAACG,KAAD,CAAtB,CAA8BrH,SAAvD,IACAQ,UAAU,CAACN,SAAX,KAAyBgH,sBAAsB,CAACG,KAAD,CAAtB,CAA8BnH,SAF3D,GAGIM,UAAU,CAAClH,IAAX,KAAoB4N,sBAAsB,CAACG,KAAD,CAAtB,CAA8B/N,IAJxD;AAMA,QAAI0L,iBAAJ,EACE,OACEsC,mBAAmB,IAAI,CAAC,CAACtC,iBAAiB,CAACxE,UAAD,EAAa0G,sBAAsB,CAACG,KAAD,CAAnC,CAD5C;AAIF,WAAOC,mBAAP;AACD,GAbD,CAHF,IAiBAL,sBAAsB,KAAKC,sBAlB7B;AAmBA,MAAI,CAACC,gBAAL,EAAuB,OAAO,KAAP;AAEvB,MAAMI,oBAAoB,GACxBjI,KAAK,CAACC,OAAN,CAAc6F,WAAW,CAAClE,gBAA1B,KAA+C5B,KAAK,CAACC,OAAN,CAAcqG,WAAW,CAAC1E,gBAA1B,CAA/C,GACIkE,WAAW,CAAClE,gBAAZ,CAA6Bb,MAA7B,KAAwCuF,WAAW,CAAC1E,gBAAZ,CAA6Bb,MAArE,IACA+E,WAAW,CAAClE,gBAAZ,CAA6BkG,KAA7B,CACE,iBAAWC,KAAX;AAAA;;AAAA,QAAG/N,IAAH,SAAGA,IAAH;AAAA,WAAqBA,IAAI,+BAAKsM,WAAW,CAAC1E,gBAAjB,qBAAK,sBAA+BmG,KAA/B,EAAsC/N,IAA3C,CAAzB;AAAA,GADF,CAFJ,GAKI8L,WAAW,CAAClE,gBAAZ,KAAiC0E,WAAW,CAAC1E,gBANnD;AAOA,MAAI,CAACqG,oBAAL,EAA2B,OAAO,KAAP;AAE3B,MAAMC,aAAa,GACjB3C,cAAc,CAACxE,MAAf,KAA0BkF,cAAc,CAAClF,MAAzC,IACAwE,cAAc,CAACtE,IAAf,CAAoB,UAACkH,SAAD;AAAA;;AAAA,WAAeA,SAAS,CAACC,MAAV,CAAiBtJ,EAAjB,4BAAwBgH,WAAW,CAACjH,IAApC,qBAAwB,mBAAkBC,EAA1C,CAAf;AAAA,GAApB,MACEmH,cAAc,CAAChF,IAAf,CAAoB,UAACkH,SAAD;AAAA;;AAAA,WAAeA,SAAS,CAACC,MAAV,CAAiBtJ,EAAjB,4BAAwBwH,WAAW,CAACzH,IAApC,qBAAwB,mBAAkBC,EAA1C,CAAf;AAAA,GAApB,CAHJ;AAIA,MAAI,CAACoJ,aAAL,EAAoB,OAAO,KAAP;AAEpB,MAAMG,uBAAuB,GAAGtC,sBAAsB,KAAKQ,sBAA3D;AACA,MAAI,CAAC8B,uBAAL,EAA8B,OAAO,KAAP;AAE9B,MAAMC,MAAM,GAAGtC,KAAK,KAAKQ,KAAzB;AACA,MAAI,CAAC8B,MAAL,EAAa,OAAO,KAAP;AAEb,MAAMC,oBAAoB,GAAG5C,qBAAqB,KAAKQ,qBAAvD;AACA,MAAI,CAACoC,oBAAL,EAA2B,OAAO,KAAP;AAE3B,SAAO,IAAP;AACD,CAzHD;;AA2HA,IAAMC,eAAe,GAAGC,kBAAMC,IAAN,CAAW9O,kBAAX,EAA+BwL,QAA/B,CAAxB;;AAaO,IAAMuD,OAAO,GAAG,SAAVA,OAAU,CAGrB9O,KAHqB,EAIlB;AACH,2BACE,wCADF;AAAA,MAAQI,OAAR,sBAAQA,OAAR;AAAA,MAAiBC,QAAjB,sBAAiBA,QAAjB;AAAA,MAA2BI,qBAA3B,sBAA2BA,qBAA3B;AAAA,MAAkDkB,OAAlD,sBAAkDA,OAAlD;;AAEA,MAAMF,WAAW,GAAG,kCAApB;;AACA,4BAA4B,0CAA5B;AAAA,MAAQnB,eAAR,uBAAQA,eAAR;;AACA,8BAAoB,sDAApB;AAAA,MAAQgD,OAAR,yBAAQA,OAAR;;AACA,MAAMrB,eAAe,GAAG,0CAAxB;;AACA,2BAAuB,wCAAvB;AAAA,MAAQuB,UAAR,sBAAQA,UAAR;;AACA,0BAAuB,sCAAvB;AAAA,MAAQR,UAAR,qBAAQA,UAAR;;AACA,+BAAc,gDAAd;AAAA,MAAQe,CAAR,0BAAQA,CAAR;;AAEA,SACE,gCAAC,eAAD,gCACM9B,eADN;AAGI7B,IAAAA,OAAO,EAAPA,OAHJ;AAIIqB,IAAAA,WAAW,EAAXA,WAJJ;AAKIpB,IAAAA,QAAQ,EAARA,QALJ;AAMIC,IAAAA,eAAe,EAAfA,eANJ;AAOIG,IAAAA,qBAAqB,EAArBA,qBAPJ;AAQIkB,IAAAA,OAAO,EAAPA,OARJ;AASIM,IAAAA,eAAe,EAAfA,eATJ;AAUIe,IAAAA,UAAU,EAAVA,UAVJ;AAWIM,IAAAA,OAAO,EAAPA,OAXJ;AAYIE,IAAAA,UAAU,EAAVA,UAZJ;AAaIO,IAAAA,CAAC,EAADA;AAbJ,KAeM/D,KAfN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAmBD,CAlCM","sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, Keyboard, StyleProp, View, ViewStyle } from 'react-native';\n\nimport type { Attachment, UserResponse } from 'stream-chat';\n\nimport { useCreateMessageContext } from './hooks/useCreateMessageContext';\nimport { useMessageActionHandlers } from './hooks/useMessageActionHandlers';\nimport { useMessageActions } from './hooks/useMessageActions';\nimport { messageActions as defaultMessageActions } from './utils/messageActions';\n\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n KeyboardContextValue,\n useKeyboardContext,\n} from '../../contexts/keyboardContext/KeyboardContext';\nimport {\n MessageContextValue,\n MessageProvider,\n Reactions,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessageOverlayContextValue,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport { isVideoPackageAvailable, triggerHaptic } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { emojiRegex, MessageStatusTypes } from '../../utils/utils';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n} from '../MessageList/hooks/useMessageList';\nimport type { MessageActionListItemProps } from '../MessageOverlay/MessageActionListItem';\n\nexport type TouchableEmitter =\n | 'fileAttachment'\n | 'gallery'\n | 'giphy'\n | 'message'\n | 'messageContent'\n | 'messageReplies'\n | 'reactionList';\n\nexport type TextMentionTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n emitter: 'textMention';\n additionalInfo?: { user?: UserResponse<StreamChatGenerics> };\n};\n\nexport type UrlTouchableHandlerPayload = {\n emitter: 'textLink' | 'card';\n additionalInfo?: { url?: string };\n};\n\nexport type FileAttachmentTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n emitter: 'fileAttachment';\n additionalInfo?: { attachment?: Attachment<StreamChatGenerics> };\n};\n\nexport type TouchableHandlerPayload = {\n defaultHandler?: () => void;\n event?: GestureResponderEvent;\n} & (\n | {\n emitter?: Exclude<TouchableEmitter, 'textMention' | 'textLink' | 'card' | 'fileAttachment'>;\n }\n | TextMentionTouchableHandlerPayload\n | UrlTouchableHandlerPayload\n | FileAttachmentTouchableHandlerPayload\n);\n\nexport type MessageTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = TouchableHandlerPayload & {\n actionHandlers?: MessageActionHandlers;\n additionalInfo?: Record<string, unknown>;\n message?: MessageType<StreamChatGenerics>;\n};\n\nexport type MessageActionHandlers = {\n deleteMessage: () => Promise<void>;\n editMessage: () => void;\n pinMessage: () => Promise<void>;\n quotedReply: () => void;\n resendMessage: () => Promise<void>;\n showMessageOverlay: () => void;\n toggleBanUser: () => Promise<void>;\n toggleMuteUser: () => Promise<void>;\n toggleReaction: (reactionType: string) => Promise<void>;\n};\n\nexport type MessagePropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n ChannelContextValue<StreamChatGenerics>,\n 'channel' | 'disabled' | 'enforceUniqueReaction' | 'members'\n> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'dismissKeyboardOnMessageTouch'\n | 'forceAlignMessages'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleQuotedReply'\n | 'handleReaction'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'isAttachmentEqual'\n | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'removeMessage'\n | 'retrySendMessage'\n | 'selectReaction'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'updateMessage'\n > &\n Pick<MessageOverlayContextValue<StreamChatGenerics>, 'setData'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'openThread'> &\n Pick<TranslationContextValue, 't'> & {\n chatContext: ChatContextValue<StreamChatGenerics>;\n messagesContext: MessagesContextValue<StreamChatGenerics>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\n isTargetedMessage?: boolean;\n /**\n * Array of allowed actions or null on message, this can also be a function returning the array.\n * If all the actions need to be disabled an empty array should be provided as value of prop\n */\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we show the overlay with all the message actions on long press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n **/\n onLongPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we will dismiss the keyboard on press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n * */\n onPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n onPressIn?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: MessageType<StreamChatGenerics>) => void;\n showUnreadUnderlay?: boolean;\n style?: StyleProp<ViewStyle>;\n };\n\n/**\n * Since this component doesn't consume `messages` from `MessagesContext`,\n * we memoized and broke it up to prevent new messages from re-rendering\n * each individual Message component.\n */\nconst MessageWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const isMessageTypeDeleted = props.message.type === 'deleted';\n\n const {\n channel,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n enableLongPress = true,\n enforceUniqueReaction,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n chatContext,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n onLongPress: onLongPressProp,\n onLongPressMessage: onLongPressMessageProp,\n onPress: onPressProp,\n onPressMessage: onPressMessageProp,\n onPressIn: onPressInProp,\n onPressInMessage: onPressInMessageProp,\n onThreadSelect,\n openThread,\n OverlayReactionList,\n preventPress,\n removeMessage,\n retrySendMessage,\n selectReaction,\n setData,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n showAvatar,\n showMessageStatus,\n showUnreadUnderlay,\n style,\n supportedReactions,\n t,\n isTargetedMessage,\n threadList = false,\n updateMessage,\n } = props;\n const { client } = chatContext;\n const {\n theme: {\n colors: { bg_gradient_start, targetedMessageBackground },\n messageSimple: { targetedMessageUnderlay },\n },\n } = useTheme();\n\n const actionsEnabled =\n message.type === 'regular' && message.status === MessageStatusTypes.RECEIVED;\n\n const isMyMessage = client && message && client.userID === message.user?.id;\n\n const handleAction = async (name: string, value: string) => {\n if (message.id) {\n const data = await channel?.sendAction(message.id, { [name]: value });\n if (data?.message) {\n updateMessage(data.message);\n } else {\n removeMessage({\n id: message.id,\n parent_id: message.parent_id,\n });\n }\n }\n };\n\n const onPressQuotedMessage = (quotedMessage: MessageType<StreamChatGenerics>) => {\n if (!goToMessage) return;\n\n goToMessage(quotedMessage.id);\n };\n\n const errorOrFailed = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const onPress = (error = errorOrFailed) => {\n if (dismissKeyboardOnMessageTouch) {\n Keyboard.dismiss();\n }\n const quotedMessage = message.quoted_message as MessageType<StreamChatGenerics>;\n if (error) {\n showMessageOverlay(false, true);\n } else if (quotedMessage) {\n onPressQuotedMessage(quotedMessage);\n }\n };\n\n const alignment =\n forceAlignMessages && (forceAlignMessages === 'left' || forceAlignMessages === 'right')\n ? forceAlignMessages\n : isMyMessage\n ? 'right'\n : 'left';\n\n /**\n * attachments contain files/images or other attachments\n *\n * if a URL attachment is present with a file/image then we\n * show just the text and markdown should make the link\n * clickable\n */\n const attachments =\n !isMessageTypeDeleted && Array.isArray(message.attachments)\n ? message.attachments.reduce(\n (acc, cur) => {\n if (cur.type === 'file') {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'video' && !cur.og_scrape_url && isVideoPackageAvailable()) {\n acc.videos.push({\n image_url: cur.asset_url,\n thumb_url: cur.thumb_url,\n type: 'video',\n });\n acc.other = [];\n } else if (cur.type === 'video' && !cur.og_scrape_url) {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'audio') {\n acc.files.push(cur);\n } else if (cur.type === 'image' && !cur.title_link && !cur.og_scrape_url) {\n /**\n * this next if is not combined with the above one for cases where we have\n * an image with no url links at all falling back to being an attachment\n */\n if (cur.image_url || cur.thumb_url) {\n acc.images.push(cur);\n acc.other = []; // remove other attachments if an image exists\n }\n // only add other attachments if there are no files/images\n } else if (!acc.files.length && !acc.images.length && !acc.videos.length) {\n acc.other.push(cur);\n }\n\n return acc;\n },\n {\n files: [] as Attachment<StreamChatGenerics>[],\n images: [] as Attachment<StreamChatGenerics>[],\n other: [] as Attachment<StreamChatGenerics>[],\n videos: [] as Attachment<StreamChatGenerics>[],\n },\n )\n : {\n files: [] as Attachment<StreamChatGenerics>[],\n images: [] as Attachment<StreamChatGenerics>[],\n other: [] as Attachment<StreamChatGenerics>[],\n videos: [] as Attachment<StreamChatGenerics>[],\n };\n /**\n * Check if any actions to prevent long press\n */\n const hasAttachmentActions =\n !isMessageTypeDeleted &&\n Array.isArray(message.attachments) &&\n message.attachments.some((attachment) => attachment.actions && attachment.actions.length);\n\n const messageContentOrder = messageContentOrderProp.filter((content) => {\n if (content === 'quoted_reply') {\n return !!message.quoted_message;\n }\n\n switch (content) {\n case 'attachments':\n return !!attachments.other.length;\n case 'files':\n return !!attachments.files.length;\n case 'gallery':\n return !!attachments.images.length || !!attachments.videos.length;\n case 'text':\n default:\n return !!message.text;\n }\n });\n\n const onlyEmojis =\n !attachments.files.length &&\n !attachments.images.length &&\n !attachments.other.length &&\n !!message.text &&\n emojiRegex.test(message.text);\n\n const onOpenThread = () => {\n if (onThreadSelect) {\n onThreadSelect(message);\n }\n if (openThread) {\n openThread(message);\n }\n };\n\n const hasReactions =\n !isMessageTypeDeleted && !!message.latest_reactions && message.latest_reactions.length > 0;\n\n const clientId = client.userID;\n\n const reactions = hasReactions\n ? supportedReactions.reduce((acc, cur) => {\n const reactionType = cur.type;\n const reactionsOfReactionType = message.latest_reactions?.filter(\n (reaction) => reaction.type === reactionType,\n );\n\n if (reactionsOfReactionType?.length) {\n const hasOwnReaction = reactionsOfReactionType.some(\n (reaction) => reaction.user_id === clientId,\n );\n acc.push({ own: hasOwnReaction, type: reactionType });\n }\n\n return acc;\n }, [] as Reactions)\n : [];\n\n const ownCapabilities = useOwnCapabilitiesContext();\n\n const {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n } = useMessageActionHandlers({\n channel,\n client,\n enforceUniqueReaction,\n message,\n removeMessage,\n retrySendMessage,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n updateMessage,\n });\n\n const {\n blockUser,\n copyMessage,\n deleteMessage,\n editMessage,\n flagMessage,\n handleReaction,\n muteUser,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n } = useMessageActions({\n channel,\n client,\n enforceUniqueReaction,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n message,\n onThreadSelect,\n openThread,\n removeMessage,\n retrySendMessage,\n selectReaction,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n supportedReactions,\n t,\n updateMessage,\n });\n\n const { userLanguage } = useTranslationContext();\n\n const showMessageOverlay = async (messageReactions = false, error = errorOrFailed) => {\n await dismissKeyboard();\n\n const isThreadMessage = threadList || !!message.parent_id;\n\n const dismissOverlay = () => setOverlay('none');\n\n const messageActions =\n typeof messageActionsProp !== 'function'\n ? messageActionsProp\n : messageActionsProp({\n blockUser,\n copyMessage,\n deleteMessage,\n dismissOverlay,\n editMessage,\n error,\n flagMessage,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n muteUser,\n ownCapabilities,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n });\n\n setData({\n alignment,\n chatContext,\n clientId: client.userID,\n files: attachments.files,\n groupStyles,\n handleReaction: ownCapabilities.sendReaction ? handleReaction : undefined,\n images: attachments.images,\n message,\n messageActions: messageActions?.filter(Boolean) as MessageActionListItemProps[] | undefined,\n messageContext: { ...messageContext, disabled: true, preventPress: true },\n messageReactionTitle: !error && messageReactions ? t('Message Reactions') : undefined,\n messagesContext: { ...messagesContext, messageContentOrder },\n onlyEmojis,\n otherAttachments: attachments.other,\n OverlayReactionList,\n ownCapabilities,\n supportedReactions,\n threadList,\n userLanguage,\n videos: attachments.videos,\n });\n\n setOverlay('message');\n };\n\n const actionHandlers: MessageActionHandlers = {\n deleteMessage: handleDeleteMessage,\n editMessage: handleEditMessage,\n pinMessage: handleTogglePinMessage,\n quotedReply: handleQuotedReplyMessage,\n resendMessage: handleResendMessage,\n showMessageOverlay,\n toggleBanUser: handleToggleBanUser,\n toggleMuteUser: handleToggleMuteUser,\n toggleReaction: handleToggleReaction,\n };\n\n const onLongPressMessage =\n disabled || hasAttachmentActions\n ? () => null\n : onLongPressMessageProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressMessageProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n message,\n })\n : onLongPressProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n })\n : enableLongPress\n ? () => {\n triggerHaptic('impactMedium');\n showMessageOverlay(false);\n }\n : () => null;\n\n const messageContext = useCreateMessageContext({\n actionsEnabled,\n alignment,\n channel,\n disabled,\n files: attachments.files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images: attachments.images,\n isMyMessage,\n lastGroupMessage: groupStyles?.[0] === 'single' || groupStyles?.[0] === 'bottom',\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress: onLongPressMessage,\n onlyEmojis,\n onOpenThread,\n onPress: (payload) => {\n const onPressArgs = {\n actionHandlers,\n additionalInfo: payload.additionalInfo,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n\n const handleOnPress = () => {\n if (onPressProp) return onPressProp(onPressArgs);\n if (onPressMessageProp) return onPressMessageProp(onPressArgs);\n if (payload.defaultHandler) return payload.defaultHandler();\n\n return onPress();\n };\n\n handleOnPress();\n },\n onPressIn:\n onPressInProp || onPressInMessageProp\n ? (payload) => {\n const onPressInArgs = {\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n const handleOnpressIn = () => {\n if (onPressInProp) return onPressInProp(onPressInArgs);\n if (onPressInMessageProp) return onPressInMessageProp(onPressInArgs);\n };\n handleOnpressIn();\n }\n : null,\n otherAttachments: attachments.other,\n preventPress,\n reactions,\n showAvatar,\n showMessageOverlay,\n showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,\n threadList,\n videos: attachments.videos,\n });\n\n if (!(isMessageTypeDeleted || messageContentOrder.length)) return null;\n\n return (\n <View\n style={[message.pinned && { backgroundColor: targetedMessageBackground }]}\n testID='message-wrapper'\n >\n <View\n style={[\n style,\n {\n backgroundColor: showUnreadUnderlay ? bg_gradient_start : undefined,\n },\n ]}\n >\n <View\n style={[\n isTargetedMessage\n ? { backgroundColor: targetedMessageBackground, ...targetedMessageUnderlay }\n : {},\n ]}\n >\n <MessageProvider value={messageContext}>\n <MessageSimple />\n </MessageProvider>\n </View>\n </View>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessagePropsWithContext<StreamChatGenerics>,\n nextProps: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const {\n chatContext: { mutedUsers: prevMutedUsers },\n goToMessage: prevGoToMessage,\n isAttachmentEqual,\n isTargetedMessage: prevIsTargetedMessage,\n lastReceivedId: prevLastReceivedId,\n members: prevMembers,\n message: prevMessage,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n } = prevProps;\n const {\n chatContext: { mutedUsers: nextMutedUsers },\n goToMessage: nextGoToMessage,\n isTargetedMessage: nextIsTargetedMessage,\n lastReceivedId: nextLastReceivedId,\n members: nextMembers,\n message: nextMessage,\n showUnreadUnderlay: nextShowUnreadUnderlay,\n t: nextT,\n } = nextProps;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const repliesEqual = prevMessage.reply_count === nextMessage.reply_count;\n if (!repliesEqual) return false;\n\n const lastReceivedIdChangedAndMatters =\n prevLastReceivedId !== nextLastReceivedId &&\n (prevLastReceivedId === prevMessage.id ||\n prevLastReceivedId === nextMessage.id ||\n nextLastReceivedId === prevMessage.id ||\n nextLastReceivedId === nextMessage.id);\n\n if (lastReceivedIdChangedAndMatters) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n\n if (goToMessageChangedAndMatters) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n (isMessageWithStylesReadByAndDateSeparator(prevMessage) && prevMessage.readBy) ===\n (isMessageWithStylesReadByAndDateSeparator(nextMessage) && nextMessage.readBy) &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n\n if (!quotedMessageEqual) return false;\n\n const messageUserBannedEqual = prevMessage.user?.banned === nextMessage.user?.banned;\n if (!messageUserBannedEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n (Array.isArray(prevMessageAttachments) &&\n Array.isArray(nextMessageAttachments) &&\n prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.type === 'image'\n ? attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url\n : attachment.type === nextMessageAttachments[index].type;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })) ||\n prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const mutedUserSame =\n prevMutedUsers.length === nextMutedUsers.length ||\n prevMutedUsers.some((mutedUser) => mutedUser.target.id === prevMessage.user?.id) ===\n nextMutedUsers.some((mutedUser) => mutedUser.target.id === nextMessage.user?.id);\n if (!mutedUserSame) return false;\n\n const showUnreadUnderlayEqual = prevShowUnreadUnderlay === nextShowUnreadUnderlay;\n if (!showUnreadUnderlayEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const targetedMessageEqual = prevIsTargetedMessage === nextIsTargetedMessage;\n if (!targetedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessage = React.memo(MessageWithContext, areEqual) as typeof MessageWithContext;\n\nexport type MessageProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>;\n\n/**\n * Message - A high level component which implements all the logic required for a message.\n * The actual rendering of the message is delegated via the \"Message\" property\n *\n * @example ./Message.md\n */\nexport const Message = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageProps<StreamChatGenerics>,\n) => {\n const { channel, disabled, enforceUniqueReaction, members } =\n useChannelContext<StreamChatGenerics>();\n const chatContext = useChatContext<StreamChatGenerics>();\n const { dismissKeyboard } = useKeyboardContext();\n const { setData } = useMessageOverlayContext<StreamChatGenerics>();\n const messagesContext = useMessagesContext<StreamChatGenerics>();\n const { setOverlay } = useOverlayContext();\n const { openThread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedMessage<StreamChatGenerics>\n {...messagesContext}\n {...{\n channel,\n chatContext,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n members,\n messagesContext,\n openThread,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["Message.tsx"],"names":["MessageWithContext","props","isMessageTypeDeleted","message","type","sendReaction","channel","deleteMessageFromContext","deleteMessage","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","enableLongPress","enforceUniqueReaction","forceAlignMessages","goToMessage","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","chatContext","lastReceivedId","members","messageActions","messageActionsProp","defaultMessageActions","messageContentOrderProp","messageContentOrder","messagesContext","MessageSimple","onLongPressProp","onLongPress","onLongPressMessageProp","onLongPressMessage","onPressProp","onPress","onPressMessageProp","onPressMessage","onPressInProp","onPressIn","onPressInMessageProp","onPressInMessage","onThreadSelect","openThread","OverlayReactionList","preventPress","removeMessage","deleteReaction","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","isTargetedMessage","threadList","updateMessage","client","theme","colors","bg_gradient_start","targetedMessageBackground","targetedMessageUnderlay","messageSimple","actionsEnabled","status","MessageStatusTypes","RECEIVED","isMyMessage","userID","user","id","handleAction","name","value","sendAction","data","parent_id","onPressQuotedMessage","quotedMessage","errorOrFailed","FAILED","error","Keyboard","dismiss","quoted_message","showMessageOverlay","alignment","attachments","Array","isArray","reduce","acc","cur","files","push","other","og_scrape_url","videos","image_url","asset_url","thumb_url","title_link","images","length","hasAttachmentActions","some","attachment","actions","filter","content","text","onlyEmojis","emojiRegex","test","onOpenThread","hasReactions","latest_reactions","clientId","reactions","reactionType","reactionsOfReactionType","reaction","hasOwnReaction","user_id","own","ownCapabilities","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleTogglePinMessage","handleToggleReaction","blockUser","copyMessage","editMessage","flagMessage","muteUser","pinMessage","quotedReply","retry","threadReply","unpinMessage","userLanguage","messageReactions","isThreadMessage","dismissOverlay","undefined","Boolean","messageContext","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","lastGroupMessage","onPressArgs","additionalInfo","handleOnPress","onPressInArgs","handleOnpressIn","pinned","backgroundColor","areEqual","prevProps","nextProps","prevMutedUsers","mutedUsers","prevGoToMessage","prevGroupStyles","isAttachmentEqual","prevIsTargetedMessage","prevLastReceivedId","prevMembers","prevMessage","prevShowUnreadUnderlay","prevT","nextMutedUsers","nextGoToMessage","nextGroupStyles","nextIsTargetedMessage","nextLastReceivedId","nextMembers","nextMessage","nextShowUnreadUnderlay","nextT","membersEqual","Object","keys","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","groupStylesEqual","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","readBy","updated_at","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","messageUserBannedEqual","banned","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","index","attachmentKeysEqual","latestReactionsEqual","mutedUserSame","mutedUser","target","showUnreadUnderlayEqual","tEqual","targetedMessageEqual","MemoizedMessage","React","memo","Message"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AAEA;;AAIA;;AACA;;AAIA;;AAKA;;AAIA;;AAIA;;AAIA;;AACA;;AACA;;AACA;;AAKA;;AAEA;;AAEA;;;;;AAsKA,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAGzBC,KAHyB,EAItB;AAAA;;AACH,MAAMC,oBAAoB,GAAGD,KAAK,CAACE,OAAN,CAAcC,IAAd,KAAuB,SAApD;AAEA,MACEC,YADF,GA0DIJ,KA1DJ,CACEI,YADF;AAAA,MAEEC,OAFF,GA0DIL,KA1DJ,CAEEK,OAFF;AAAA,MAGiBC,wBAHjB,GA0DIN,KA1DJ,CAGEO,aAHF;AAAA,MAIEC,QAJF,GA0DIR,KA1DJ,CAIEQ,QAJF;AAAA,MAKEC,eALF,GA0DIT,KA1DJ,CAKES,eALF;AAAA,MAMEC,6BANF,GA0DIV,KA1DJ,CAMEU,6BANF;AAAA,8BA0DIV,KA1DJ,CAOEW,eAPF;AAAA,MAOEA,eAPF,sCAOoB,IAPpB;AAAA,MAQEC,qBARF,GA0DIZ,KA1DJ,CAQEY,qBARF;AAAA,8BA0DIZ,KA1DJ,CASEa,kBATF;AAAA,MASEA,kBATF,sCASuB,KATvB;AAAA,MAUEC,WAVF,GA0DId,KA1DJ,CAUEc,WAVF;AAAA,2BA0DId,KA1DJ,CAWEe,WAXF;AAAA,MAWEA,WAXF,mCAWgB,CAAC,QAAD,CAXhB;AAAA,MAYEC,WAZF,GA0DIhB,KA1DJ,CAYEgB,WAZF;AAAA,MAaEC,UAbF,GA0DIjB,KA1DJ,CAaEiB,UAbF;AAAA,MAcEC,YAdF,GA0DIlB,KA1DJ,CAcEkB,YAdF;AAAA,MAeEC,UAfF,GA0DInB,KA1DJ,CAeEmB,UAfF;AAAA,MAgBEC,UAhBF,GA0DIpB,KA1DJ,CAgBEoB,UAhBF;AAAA,MAiBEC,UAjBF,GA0DIrB,KA1DJ,CAiBEqB,UAjBF;AAAA,MAkBEC,gBAlBF,GA0DItB,KA1DJ,CAkBEsB,gBAlBF;AAAA,MAmBEC,iBAnBF,GA0DIvB,KA1DJ,CAmBEuB,iBAnBF;AAAA,MAoBkBC,kBApBlB,GA0DIxB,KA1DJ,CAoBEyB,cApBF;AAAA,MAqBEC,WArBF,GA0DI1B,KA1DJ,CAqBE0B,WArBF;AAAA,MAsBEC,iBAtBF,GA0DI3B,KA1DJ,CAsBE2B,iBAtBF;AAAA,MAuBEC,WAvBF,GA0DI5B,KA1DJ,CAuBE4B,WAvBF;AAAA,MAwBEC,cAxBF,GA0DI7B,KA1DJ,CAwBE6B,cAxBF;AAAA,MAyBEC,OAzBF,GA0DI9B,KA1DJ,CAyBE8B,OAzBF;AAAA,MA0BE5B,OA1BF,GA0DIF,KA1DJ,CA0BEE,OA1BF;AAAA,8BA0DIF,KA1DJ,CA2BE+B,cA3BF;AAAA,MA2BkBC,kBA3BlB,sCA2BuCC,8BA3BvC;AAAA,MA4BuBC,uBA5BvB,GA0DIlC,KA1DJ,CA4BEmC,mBA5BF;AAAA,MA6BEC,eA7BF,GA0DIpC,KA1DJ,CA6BEoC,eA7BF;AAAA,MA8BEC,aA9BF,GA0DIrC,KA1DJ,CA8BEqC,aA9BF;AAAA,MA+BeC,eA/Bf,GA0DItC,KA1DJ,CA+BEuC,WA/BF;AAAA,MAgCsBC,sBAhCtB,GA0DIxC,KA1DJ,CAgCEyC,kBAhCF;AAAA,MAiCWC,WAjCX,GA0DI1C,KA1DJ,CAiCE2C,OAjCF;AAAA,MAkCkBC,kBAlClB,GA0DI5C,KA1DJ,CAkCE6C,cAlCF;AAAA,MAmCaC,aAnCb,GA0DI9C,KA1DJ,CAmCE+C,SAnCF;AAAA,MAoCoBC,oBApCpB,GA0DIhD,KA1DJ,CAoCEiD,gBApCF;AAAA,MAqCEC,cArCF,GA0DIlD,KA1DJ,CAqCEkD,cArCF;AAAA,MAsCEC,UAtCF,GA0DInD,KA1DJ,CAsCEmD,UAtCF;AAAA,MAuCEC,mBAvCF,GA0DIpD,KA1DJ,CAuCEoD,mBAvCF;AAAA,MAwCEC,YAxCF,GA0DIrD,KA1DJ,CAwCEqD,YAxCF;AAAA,MAyCEC,aAzCF,GA0DItD,KA1DJ,CAyCEsD,aAzCF;AAAA,MA0CEC,cA1CF,GA0DIvD,KA1DJ,CA0CEuD,cA1CF;AAAA,MA2CEC,gBA3CF,GA0DIxD,KA1DJ,CA2CEwD,gBA3CF;AAAA,MA4CEC,cA5CF,GA0DIzD,KA1DJ,CA4CEyD,cA5CF;AAAA,MA6CEC,OA7CF,GA0DI1D,KA1DJ,CA6CE0D,OA7CF;AAAA,MA8CEC,eA9CF,GA0DI3D,KA1DJ,CA8CE2D,eA9CF;AAAA,MA+CEC,UA/CF,GA0DI5D,KA1DJ,CA+CE4D,UA/CF;AAAA,MAgDEC,qBAhDF,GA0DI7D,KA1DJ,CAgDE6D,qBAhDF;AAAA,MAiDEC,UAjDF,GA0DI9D,KA1DJ,CAiDE8D,UAjDF;AAAA,MAkDEC,iBAlDF,GA0DI/D,KA1DJ,CAkDE+D,iBAlDF;AAAA,MAmDEC,kBAnDF,GA0DIhE,KA1DJ,CAmDEgE,kBAnDF;AAAA,MAoDEC,KApDF,GA0DIjE,KA1DJ,CAoDEiE,KApDF;AAAA,MAqDEC,kBArDF,GA0DIlE,KA1DJ,CAqDEkE,kBArDF;AAAA,MAsDEC,CAtDF,GA0DInE,KA1DJ,CAsDEmE,CAtDF;AAAA,MAuDEC,iBAvDF,GA0DIpE,KA1DJ,CAuDEoE,iBAvDF;AAAA,0BA0DIpE,KA1DJ,CAwDEqE,UAxDF;AAAA,MAwDEA,UAxDF,kCAwDe,KAxDf;AAAA,MAyDEC,aAzDF,GA0DItE,KA1DJ,CAyDEsE,aAzDF;AA2DA,MAAQC,MAAR,GAAmB3C,WAAnB,CAAQ2C,MAAR;;AACA,kBAKI,6BALJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAEcC,iBAFd,yBAEcA,iBAFd;AAAA,MAEiCC,yBAFjC,yBAEiCA,yBAFjC;AAAA,MAGqBC,uBAHrB,mBAGIC,aAHJ,CAGqBD,uBAHrB;;AAOA,MAAME,cAAc,GAClB5E,OAAO,CAACC,IAAR,KAAiB,SAAjB,IAA8BD,OAAO,CAAC6E,MAAR,KAAmBC,0BAAmBC,QADtE;AAGA,MAAMC,WAAW,GAAGX,MAAM,IAAIrE,OAAV,IAAqBqE,MAAM,CAACY,MAAP,uBAAkBjF,OAAO,CAACkF,IAA1B,qBAAkB,cAAcC,EAAhC,CAAzC;;AAEA,MAAMC,YAAY;AAAA,+EAAG,iBAAOC,IAAP,EAAqBC,KAArB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBACftF,OAAO,CAACmF,EADO;AAAA;AAAA;AAAA;;AAAA;AAAA,qBAEEhF,OAFF,oBAEEA,OAAO,CAAEoF,UAAT,CAAoBvF,OAAO,CAACmF,EAA5B,uCAAmCE,IAAnC,EAA0CC,KAA1C,EAFF;;AAAA;AAEXE,cAAAA,IAFW;;AAGjB,kBAAIA,IAAJ,YAAIA,IAAI,CAAExF,OAAV,EAAmB;AACjBoE,gBAAAA,aAAa,CAACoB,IAAI,CAACxF,OAAN,CAAb;AACD,eAFD,MAEO;AACLoD,gBAAAA,aAAa,CAAC;AACZ+B,kBAAAA,EAAE,EAAEnF,OAAO,CAACmF,EADA;AAEZM,kBAAAA,SAAS,EAAEzF,OAAO,CAACyF;AAFP,iBAAD,CAAb;AAID;;AAVgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAZL,YAAY;AAAA;AAAA;AAAA,KAAlB;;AAcA,MAAMM,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,aAAD,EAAoD;AAC/E,QAAI,CAAC/E,WAAL,EAAkB;AAElBA,IAAAA,WAAW,CAAC+E,aAAa,CAACR,EAAf,CAAX;AACD,GAJD;;AAMA,MAAMS,aAAa,GAAG5F,OAAO,CAACC,IAAR,KAAiB,OAAjB,IAA4BD,OAAO,CAAC6E,MAAR,KAAmBC,0BAAmBe,MAAxF;;AAEA,MAAMpD,QAAO,GAAG,SAAVA,OAAU,GAA2B;AAAA,QAA1BqD,KAA0B,uEAAlBF,aAAkB;;AACzC,QAAIpF,6BAAJ,EAAmC;AACjCuF,4BAASC,OAAT;AACD;;AACD,QAAML,aAAa,GAAG3F,OAAO,CAACiG,cAA9B;;AACA,QAAIH,KAAJ,EAAW;AACTI,MAAAA,kBAAkB,CAAC,KAAD,EAAQ,IAAR,CAAlB;AACD,KAFD,MAEO,IAAIP,aAAJ,EAAmB;AACxBD,MAAAA,oBAAoB,CAACC,aAAD,CAApB;AACD;AACF,GAVD;;AAYA,MAAMQ,SAAS,GACbxF,kBAAkB,KAAKA,kBAAkB,KAAK,MAAvB,IAAiCA,kBAAkB,KAAK,OAA7D,CAAlB,GACIA,kBADJ,GAEIqE,WAAW,GACX,OADW,GAEX,MALN;AAcA,MAAMoB,WAAW,GACf,CAACrG,oBAAD,IAAyBsG,KAAK,CAACC,OAAN,CAActG,OAAO,CAACoG,WAAtB,CAAzB,GACIpG,OAAO,CAACoG,WAAR,CAAoBG,MAApB,CACE,UAACC,GAAD,EAAMC,GAAN,EAAc;AACZ,QAAIA,GAAG,CAACxG,IAAJ,KAAa,MAAjB,EAAyB;AACvBuG,MAAAA,GAAG,CAACE,KAAJ,CAAUC,IAAV,CAAeF,GAAf;AACAD,MAAAA,GAAG,CAACI,KAAJ,GAAY,EAAZ;AACD,KAHD,MAGO,IAAIH,GAAG,CAACxG,IAAJ,KAAa,OAAb,IAAwB,CAACwG,GAAG,CAACI,aAA7B,IAA8C,sCAAlD,EAA6E;AAClFL,MAAAA,GAAG,CAACM,MAAJ,CAAWH,IAAX,CAAgB;AACdI,QAAAA,SAAS,EAAEN,GAAG,CAACO,SADD;AAEdC,QAAAA,SAAS,EAAER,GAAG,CAACQ,SAFD;AAGdhH,QAAAA,IAAI,EAAE;AAHQ,OAAhB;AAKAuG,MAAAA,GAAG,CAACI,KAAJ,GAAY,EAAZ;AACD,KAPM,MAOA,IAAIH,GAAG,CAACxG,IAAJ,KAAa,OAAb,IAAwB,CAACwG,GAAG,CAACI,aAAjC,EAAgD;AACrDL,MAAAA,GAAG,CAACE,KAAJ,CAAUC,IAAV,CAAeF,GAAf;AACAD,MAAAA,GAAG,CAACI,KAAJ,GAAY,EAAZ;AACD,KAHM,MAGA,IAAIH,GAAG,CAACxG,IAAJ,KAAa,OAAjB,EAA0B;AAC/BuG,MAAAA,GAAG,CAACE,KAAJ,CAAUC,IAAV,CAAeF,GAAf;AACD,KAFM,MAEA,IAAIA,GAAG,CAACxG,IAAJ,KAAa,OAAb,IAAwB,CAACwG,GAAG,CAACS,UAA7B,IAA2C,CAACT,GAAG,CAACI,aAApD,EAAmE;AAKxE,UAAIJ,GAAG,CAACM,SAAJ,IAAiBN,GAAG,CAACQ,SAAzB,EAAoC;AAClCT,QAAAA,GAAG,CAACW,MAAJ,CAAWR,IAAX,CAAgBF,GAAhB;AACAD,QAAAA,GAAG,CAACI,KAAJ,GAAY,EAAZ;AACD;AAEF,KAVM,MAUA,IAAI,CAACJ,GAAG,CAACE,KAAJ,CAAUU,MAAX,IAAqB,CAACZ,GAAG,CAACW,MAAJ,CAAWC,MAAjC,IAA2C,CAACZ,GAAG,CAACM,MAAJ,CAAWM,MAA3D,EAAmE;AACxEZ,MAAAA,GAAG,CAACI,KAAJ,CAAUD,IAAV,CAAeF,GAAf;AACD;;AAED,WAAOD,GAAP;AACD,GAhCH,EAiCE;AACEE,IAAAA,KAAK,EAAE,EADT;AAEES,IAAAA,MAAM,EAAE,EAFV;AAGEP,IAAAA,KAAK,EAAE,EAHT;AAIEE,IAAAA,MAAM,EAAE;AAJV,GAjCF,CADJ,GAyCI;AACEJ,IAAAA,KAAK,EAAE,EADT;AAEES,IAAAA,MAAM,EAAE,EAFV;AAGEP,IAAAA,KAAK,EAAE,EAHT;AAIEE,IAAAA,MAAM,EAAE;AAJV,GA1CN;AAmDA,MAAMO,oBAAoB,GACxB,CAACtH,oBAAD,IACAsG,KAAK,CAACC,OAAN,CAActG,OAAO,CAACoG,WAAtB,CADA,IAEApG,OAAO,CAACoG,WAAR,CAAoBkB,IAApB,CAAyB,UAACC,UAAD;AAAA,WAAgBA,UAAU,CAACC,OAAX,IAAsBD,UAAU,CAACC,OAAX,CAAmBJ,MAAzD;AAAA,GAAzB,CAHF;AAKA,MAAMnF,mBAAmB,GAAGD,uBAAuB,CAACyF,MAAxB,CAA+B,UAACC,OAAD,EAAa;AACtE,QAAIA,OAAO,KAAK,cAAhB,EAAgC;AAC9B,aAAO,CAAC,CAAC1H,OAAO,CAACiG,cAAjB;AACD;;AAED,YAAQyB,OAAR;AACE,WAAK,aAAL;AACE,eAAO,CAAC,CAACtB,WAAW,CAACQ,KAAZ,CAAkBQ,MAA3B;;AACF,WAAK,OAAL;AACE,eAAO,CAAC,CAAChB,WAAW,CAACM,KAAZ,CAAkBU,MAA3B;;AACF,WAAK,SAAL;AACE,eAAO,CAAC,CAAChB,WAAW,CAACe,MAAZ,CAAmBC,MAArB,IAA+B,CAAC,CAAChB,WAAW,CAACU,MAAZ,CAAmBM,MAA3D;;AACF,WAAK,MAAL;AACA;AACE,eAAO,CAAC,CAACpH,OAAO,CAAC2H,IAAjB;AATJ;AAWD,GAhB2B,CAA5B;;AAkBA,MAAMC,UAAU,GACd,CAACxB,WAAW,CAACM,KAAZ,CAAkBU,MAAnB,IACA,CAAChB,WAAW,CAACe,MAAZ,CAAmBC,MADpB,IAEA,CAAChB,WAAW,CAACQ,KAAZ,CAAkBQ,MAFnB,IAGA,CAAC,CAACpH,OAAO,CAAC2H,IAHV,IAIAE,kBAAWC,IAAX,CAAgB9H,OAAO,CAAC2H,IAAxB,CALF;;AAOA,MAAMI,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzB,QAAI/E,cAAJ,EAAoB;AAClBA,MAAAA,cAAc,CAAChD,OAAD,CAAd;AACD;;AACD,QAAIiD,UAAJ,EAAgB;AACdA,MAAAA,UAAU,CAACjD,OAAD,CAAV;AACD;AACF,GAPD;;AASA,MAAMgI,YAAY,GAChB,CAACjI,oBAAD,IAAyB,CAAC,CAACC,OAAO,CAACiI,gBAAnC,IAAuDjI,OAAO,CAACiI,gBAAR,CAAyBb,MAAzB,GAAkC,CAD3F;AAGA,MAAMc,QAAQ,GAAG7D,MAAM,CAACY,MAAxB;AAEA,MAAMkD,SAAS,GAAGH,YAAY,GAC1BhE,kBAAkB,CAACuC,MAAnB,CAA0B,UAACC,GAAD,EAAMC,GAAN,EAAc;AAAA;;AACtC,QAAM2B,YAAY,GAAG3B,GAAG,CAACxG,IAAzB;AACA,QAAMoI,uBAAuB,4BAAGrI,OAAO,CAACiI,gBAAX,qBAAG,sBAA0BR,MAA1B,CAC9B,UAACa,QAAD;AAAA,aAAcA,QAAQ,CAACrI,IAAT,KAAkBmI,YAAhC;AAAA,KAD8B,CAAhC;;AAIA,QAAIC,uBAAJ,YAAIA,uBAAuB,CAAEjB,MAA7B,EAAqC;AACnC,UAAMmB,cAAc,GAAGF,uBAAuB,CAACf,IAAxB,CACrB,UAACgB,QAAD;AAAA,eAAcA,QAAQ,CAACE,OAAT,KAAqBN,QAAnC;AAAA,OADqB,CAAvB;AAGA1B,MAAAA,GAAG,CAACG,IAAJ,CAAS;AAAE8B,QAAAA,GAAG,EAAEF,cAAP;AAAuBtI,QAAAA,IAAI,EAAEmI;AAA7B,OAAT;AACD;;AAED,WAAO5B,GAAP;AACD,GAdD,EAcG,EAdH,CAD0B,GAgB1B,EAhBJ;AAkBA,MAAMkC,eAAe,GAAG,wDAAxB;;AAEA,8BASI,wDAAyB;AAC3BvI,IAAAA,OAAO,EAAPA,OAD2B;AAE3BkE,IAAAA,MAAM,EAANA,MAF2B;AAG3BhE,IAAAA,aAAa,EAAED,wBAHY;AAI3BiD,IAAAA,cAAc,EAAdA,cAJ2B;AAK3B3C,IAAAA,qBAAqB,EAArBA,qBAL2B;AAM3BV,IAAAA,OAAO,EAAPA,OAN2B;AAO3BsD,IAAAA,gBAAgB,EAAhBA,gBAP2B;AAQ3BpD,IAAAA,YAAY,EAAZA,YAR2B;AAS3BuD,IAAAA,eAAe,EAAfA,eAT2B;AAU3BE,IAAAA,qBAAqB,EAArBA,qBAV2B;AAW3BK,IAAAA,kBAAkB,EAAlBA;AAX2B,GAAzB,CATJ;AAAA,MACE2E,mBADF,yBACEA,mBADF;AAAA,MAEEC,iBAFF,yBAEEA,iBAFF;AAAA,MAGEC,wBAHF,yBAGEA,wBAHF;AAAA,MAIEC,mBAJF,yBAIEA,mBAJF;AAAA,MAKEC,mBALF,yBAKEA,mBALF;AAAA,MAMEC,oBANF,yBAMEA,oBANF;AAAA,MAOEC,sBAPF,yBAOEA,sBAPF;AAAA,MAQEC,oBARF,yBAQEA,oBARF;;AAuBA,2BAaI,2CAAkB;AACpB/I,IAAAA,OAAO,EAAPA,OADoB;AAEpBkE,IAAAA,MAAM,EAANA,MAFoB;AAGpBhE,IAAAA,aAAa,EAAED,wBAHK;AAIpBiD,IAAAA,cAAc,EAAdA,cAJoB;AAKpB3C,IAAAA,qBAAqB,EAArBA,qBALoB;AAMpBI,IAAAA,WAAW,EAAXA,WANoB;AAOpBC,IAAAA,UAAU,EAAVA,UAPoB;AAQpBC,IAAAA,YAAY,EAAZA,YARoB;AASpBC,IAAAA,UAAU,EAAVA,UAToB;AAUpBC,IAAAA,UAAU,EAAVA,UAVoB;AAWpBC,IAAAA,UAAU,EAAVA,UAXoB;AAYpBC,IAAAA,gBAAgB,EAAhBA,gBAZoB;AAapBC,IAAAA,iBAAiB,EAAjBA,iBAboB;AAcpBE,IAAAA,cAAc,EAAED,kBAdI;AAepBE,IAAAA,WAAW,EAAXA,WAfoB;AAgBpBC,IAAAA,iBAAiB,EAAjBA,iBAhBoB;AAiBpBzB,IAAAA,OAAO,EAAPA,OAjBoB;AAkBpBgD,IAAAA,cAAc,EAAdA,cAlBoB;AAmBpBC,IAAAA,UAAU,EAAVA,UAnBoB;AAoBpBG,IAAAA,aAAa,EAAbA,aApBoB;AAqBpBE,IAAAA,gBAAgB,EAAhBA,gBArBoB;AAsBpBC,IAAAA,cAAc,EAAdA,cAtBoB;AAuBpBrD,IAAAA,YAAY,EAAZA,YAvBoB;AAwBpBuD,IAAAA,eAAe,EAAfA,eAxBoB;AAyBpBC,IAAAA,UAAU,EAAVA,UAzBoB;AA0BpBC,IAAAA,qBAAqB,EAArBA,qBA1BoB;AA2BpBK,IAAAA,kBAAkB,EAAlBA,kBA3BoB;AA4BpBC,IAAAA,CAAC,EAADA,CA5BoB;AA6BpBG,IAAAA,aAAa,EAAbA;AA7BoB,GAAlB,CAbJ;AAAA,MACE+E,SADF,sBACEA,SADF;AAAA,MAEEC,WAFF,sBAEEA,WAFF;AAAA,MAGE/I,aAHF,sBAGEA,aAHF;AAAA,MAIEgJ,WAJF,sBAIEA,WAJF;AAAA,MAKEC,WALF,sBAKEA,WALF;AAAA,MAME/H,cANF,sBAMEA,cANF;AAAA,MAOEgI,QAPF,sBAOEA,QAPF;AAAA,MAQEC,UARF,sBAQEA,UARF;AAAA,MASEC,WATF,sBASEA,WATF;AAAA,MAUEC,KAVF,sBAUEA,KAVF;AAAA,MAWEC,WAXF,sBAWEA,WAXF;AAAA,MAYEC,YAZF,sBAYEA,YAZF;;AA6CA,8BAAyB,gDAAzB;AAAA,MAAQC,YAAR,yBAAQA,YAAR;;AAEA,MAAM3D,kBAAkB;AAAA,gFAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO4D,cAAAA,gBAAP,8DAA0B,KAA1B;AAAiChE,cAAAA,KAAjC,8DAAyCF,aAAzC;AAAA;AAAA,qBACnBrF,eAAe,EADI;;AAAA;AAGnBwJ,cAAAA,eAHmB,GAGD5F,UAAU,IAAI,CAAC,CAACnE,OAAO,CAACyF,SAHvB;;AAKnBuE,cAAAA,cALmB,GAKF,SAAjBA,cAAiB;AAAA,uBAAMtG,UAAU,CAAC,MAAD,CAAhB;AAAA,eALE;;AAOnB7B,cAAAA,cAPmB,GAQvB,OAAOC,kBAAP,KAA8B,UAA9B,GACIA,kBADJ,GAEIA,kBAAkB,CAAC;AACjBqH,gBAAAA,SAAS,EAATA,SADiB;AAEjBC,gBAAAA,WAAW,EAAXA,WAFiB;AAGjB/I,gBAAAA,aAAa,EAAbA,aAHiB;AAIjB2J,gBAAAA,cAAc,EAAdA,cAJiB;AAKjBX,gBAAAA,WAAW,EAAXA,WALiB;AAMjBvD,gBAAAA,KAAK,EAALA,KANiB;AAOjBwD,gBAAAA,WAAW,EAAXA,WAPiB;AAQjBtE,gBAAAA,WAAW,EAAXA,WARiB;AASjB+E,gBAAAA,eAAe,EAAfA,eATiB;AAUjB/J,gBAAAA,OAAO,EAAPA,OAViB;AAWjB8J,gBAAAA,gBAAgB,EAAhBA,gBAXiB;AAYjBP,gBAAAA,QAAQ,EAARA,QAZiB;AAajBb,gBAAAA,eAAe,EAAfA,eAbiB;AAcjBc,gBAAAA,UAAU,EAAVA,UAdiB;AAejBC,gBAAAA,WAAW,EAAXA,WAfiB;AAgBjBC,gBAAAA,KAAK,EAALA,KAhBiB;AAiBjBC,gBAAAA,WAAW,EAAXA,WAjBiB;AAkBjBC,gBAAAA,YAAY,EAAZA;AAlBiB,eAAD,CAVC;AA+BzBpG,cAAAA,OAAO,CAAC;AACN2C,gBAAAA,SAAS,EAATA,SADM;AAENzE,gBAAAA,WAAW,EAAXA,WAFM;AAGNwG,gBAAAA,QAAQ,EAAE7D,MAAM,CAACY,MAHX;AAINyB,gBAAAA,KAAK,EAAEN,WAAW,CAACM,KAJb;AAKN7F,gBAAAA,WAAW,EAAXA,WALM;AAMNU,gBAAAA,cAAc,EAAEmH,eAAe,CAACxI,YAAhB,GAA+BqB,cAA/B,GAAgD0I,SAN1D;AAON9C,gBAAAA,MAAM,EAAEf,WAAW,CAACe,MAPd;AAQNnH,gBAAAA,OAAO,EAAPA,OARM;AASN6B,gBAAAA,cAAc,EAAEA,cAAF,oBAAEA,cAAc,CAAE4F,MAAhB,CAAuByC,OAAvB,CATV;AAUNC,gBAAAA,cAAc,gCAAOA,cAAP;AAAuB7J,kBAAAA,QAAQ,EAAE,IAAjC;AAAuC6C,kBAAAA,YAAY,EAAE;AAArD,kBAVR;AAWNiH,gBAAAA,oBAAoB,EAAE,CAACtE,KAAD,IAAUgE,gBAAV,GAA6B7F,CAAC,CAAC,mBAAD,CAA9B,GAAsDgG,SAXtE;AAYN/H,gBAAAA,eAAe,gCAAOA,eAAP;AAAwBD,kBAAAA,mBAAmB,EAAnBA;AAAxB,kBAZT;AAaN2F,gBAAAA,UAAU,EAAVA,UAbM;AAcNyC,gBAAAA,gBAAgB,EAAEjE,WAAW,CAACQ,KAdxB;AAeN1D,gBAAAA,mBAAmB,EAAnBA,mBAfM;AAgBNwF,gBAAAA,eAAe,EAAfA,eAhBM;AAiBN1E,gBAAAA,kBAAkB,EAAlBA,kBAjBM;AAkBNG,gBAAAA,UAAU,EAAVA,UAlBM;AAmBN0F,gBAAAA,YAAY,EAAZA,YAnBM;AAoBN/C,gBAAAA,MAAM,EAAEV,WAAW,CAACU;AApBd,eAAD,CAAP;AAuBApD,cAAAA,UAAU,CAAC,SAAD,CAAV;;AAtDyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAAlBwC,kBAAkB;AAAA;AAAA;AAAA,KAAxB;;AAyDA,MAAMoE,cAAqC,GAAG;AAC5CjK,IAAAA,aAAa,EAAEsI,mBAD6B;AAE5CU,IAAAA,WAAW,EAAET,iBAF+B;AAG5CY,IAAAA,UAAU,EAAEP,sBAHgC;AAI5CQ,IAAAA,WAAW,EAAEZ,wBAJ+B;AAK5C0B,IAAAA,aAAa,EAAEzB,mBAL6B;AAM5C5C,IAAAA,kBAAkB,EAAlBA,kBAN4C;AAO5CsE,IAAAA,aAAa,EAAEzB,mBAP6B;AAQ5C0B,IAAAA,cAAc,EAAEzB,oBAR4B;AAS5C0B,IAAAA,cAAc,EAAExB;AAT4B,GAA9C;AAYA,MAAM3G,kBAAkB,GACtBjC,QAAQ,IAAI+G,oBAAZ,GACI;AAAA,WAAM,IAAN;AAAA,GADJ,GAEI/E,sBAAsB,GACtB,UAACqI,OAAD;AAAA,WACErI,sBAAsB,CAAC;AACrBgI,MAAAA,cAAc,EAAdA,cADqB;AAErBM,MAAAA,cAAc,EAAE,CAAAD,OAAO,QAAP,YAAAA,OAAO,CAAEC,cAAT,KAA2B1E,kBAFtB;AAGrB2E,MAAAA,OAAO,EAAE,CAAAF,OAAO,QAAP,YAAAA,OAAO,CAAEE,OAAT,KAAoB,SAHR;AAIrBC,MAAAA,KAAK,EAAEH,OAAF,oBAAEA,OAAO,CAAEG,KAJK;AAKrB9K,MAAAA,OAAO,EAAPA;AALqB,KAAD,CADxB;AAAA,GADsB,GAStBoC,eAAe,GACf,UAACuI,OAAD;AAAA,WACEvI,eAAe,CAAC;AACdkI,MAAAA,cAAc,EAAdA,cADc;AAEdM,MAAAA,cAAc,EAAE,CAAAD,OAAO,QAAP,YAAAA,OAAO,CAAEC,cAAT,KAA2B1E,kBAF7B;AAGd2E,MAAAA,OAAO,EAAE,CAAAF,OAAO,QAAP,YAAAA,OAAO,CAAEE,OAAT,KAAoB,SAHf;AAIdC,MAAAA,KAAK,EAAEH,OAAF,oBAAEA,OAAO,CAAEG;AAJF,KAAD,CADjB;AAAA,GADe,GAQfrK,eAAe,GACf,YAAM;AACJ,+BAAc,cAAd;AACAyF,IAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD,GAJc,GAKf;AAAA,WAAM,IAAN;AAAA,GAzBN;AA2BA,MAAMiE,cAAc,GAAG,sDAAwB;AAC7CvF,IAAAA,cAAc,EAAdA,cAD6C;AAE7CuB,IAAAA,SAAS,EAATA,SAF6C;AAG7ChG,IAAAA,OAAO,EAAPA,OAH6C;AAI7CG,IAAAA,QAAQ,EAARA,QAJ6C;AAK7CoG,IAAAA,KAAK,EAAEN,WAAW,CAACM,KAL0B;AAM7C9F,IAAAA,WAAW,EAAXA,WAN6C;AAO7CC,IAAAA,WAAW,EAAXA,WAP6C;AAQ7CuE,IAAAA,YAAY,EAAZA,YAR6C;AAS7CuD,IAAAA,mBAAmB,EAAnBA,mBAT6C;AAU7CC,IAAAA,iBAAiB,EAAjBA,iBAV6C;AAW7CC,IAAAA,wBAAwB,EAAxBA,wBAX6C;AAY7CC,IAAAA,mBAAmB,EAAnBA,mBAZ6C;AAa7CC,IAAAA,mBAAmB,EAAnBA,mBAb6C;AAc7CC,IAAAA,oBAAoB,EAApBA,oBAd6C;AAe7CE,IAAAA,oBAAoB,EAApBA,oBAf6C;AAgB7ClB,IAAAA,YAAY,EAAZA,YAhB6C;AAiB7Cb,IAAAA,MAAM,EAAEf,WAAW,CAACe,MAjByB;AAkB7CnC,IAAAA,WAAW,EAAXA,WAlB6C;AAmB7C+F,IAAAA,gBAAgB,EAAE,CAAAlK,WAAW,QAAX,YAAAA,WAAW,CAAG,CAAH,CAAX,MAAqB,QAArB,IAAiC,CAAAA,WAAW,QAAX,YAAAA,WAAW,CAAG,CAAH,CAAX,MAAqB,QAnB3B;AAoB7Cc,IAAAA,cAAc,EAAdA,cApB6C;AAqB7CC,IAAAA,OAAO,EAAPA,OArB6C;AAsB7C5B,IAAAA,OAAO,EAAPA,OAtB6C;AAuB7CiC,IAAAA,mBAAmB,EAAnBA,mBAvB6C;AAwB7CI,IAAAA,WAAW,EAAEE,kBAxBgC;AAyB7CqF,IAAAA,UAAU,EAAVA,UAzB6C;AA0B7CG,IAAAA,YAAY,EAAZA,YA1B6C;AA2B7CtF,IAAAA,OAAO,EAAE,iBAACkI,OAAD,EAAa;AACpB,UAAMK,WAAW,GAAG;AAClBV,QAAAA,cAAc,EAAdA,cADkB;AAElBW,QAAAA,cAAc,EAAEN,OAAO,CAACM,cAFN;AAGlBL,QAAAA,cAAc,EAAED,OAAO,CAACC,cAAR,IAA0BnI,QAHxB;AAIlBoI,QAAAA,OAAO,EAAEF,OAAO,CAACE,OAAR,IAAmB,SAJV;AAKlBC,QAAAA,KAAK,EAAEH,OAAO,CAACG,KALG;AAMlB9K,QAAAA,OAAO,EAAPA;AANkB,OAApB;;AASA,UAAMkL,aAAa,GAAG,SAAhBA,aAAgB,GAAM;AAC1B,YAAI1I,WAAJ,EAAiB,OAAOA,WAAW,CAACwI,WAAD,CAAlB;AACjB,YAAItI,kBAAJ,EAAwB,OAAOA,kBAAkB,CAACsI,WAAD,CAAzB;AACxB,YAAIL,OAAO,CAACC,cAAZ,EAA4B,OAAOD,OAAO,CAACC,cAAR,EAAP;AAE5B,eAAOnI,QAAO,EAAd;AACD,OAND;;AAQAyI,MAAAA,aAAa;AACd,KA9C4C;AA+C7CrI,IAAAA,SAAS,EACPD,aAAa,IAAIE,oBAAjB,GACI,UAAC6H,OAAD,EAAa;AACX,UAAMQ,aAAa,GAAG;AACpBb,QAAAA,cAAc,EAAdA,cADoB;AAEpBM,QAAAA,cAAc,EAAED,OAAO,CAACC,cAFJ;AAGpBC,QAAAA,OAAO,EAAEF,OAAO,CAACE,OAAR,IAAmB,SAHR;AAIpBC,QAAAA,KAAK,EAAEH,OAAO,CAACG,KAJK;AAKpB9K,QAAAA,OAAO,EAAPA;AALoB,OAAtB;;AAOA,UAAMoL,eAAe,GAAG,SAAlBA,eAAkB,GAAM;AAC5B,YAAIxI,aAAJ,EAAmB,OAAOA,aAAa,CAACuI,aAAD,CAApB;AACnB,YAAIrI,oBAAJ,EAA0B,OAAOA,oBAAoB,CAACqI,aAAD,CAA3B;AAC3B,OAHD;;AAIAC,MAAAA,eAAe;AAChB,KAdL,GAeI,IA/DuC;AAgE7Cf,IAAAA,gBAAgB,EAAEjE,WAAW,CAACQ,KAhEe;AAiE7CzD,IAAAA,YAAY,EAAZA,YAjE6C;AAkE7CgF,IAAAA,SAAS,EAATA,SAlE6C;AAmE7CvE,IAAAA,UAAU,EAAVA,UAnE6C;AAoE7CsC,IAAAA,kBAAkB,EAAlBA,kBApE6C;AAqE7CrC,IAAAA,iBAAiB,EAAE,OAAOA,iBAAP,KAA6B,SAA7B,GAAyCA,iBAAzC,GAA6DmB,WArEnC;AAsE7Cb,IAAAA,UAAU,EAAVA,UAtE6C;AAuE7C2C,IAAAA,MAAM,EAAEV,WAAW,CAACU;AAvEyB,GAAxB,CAAvB;AA0EA,MAAI,EAAE/G,oBAAoB,IAAIkC,mBAAmB,CAACmF,MAA9C,CAAJ,EAA2D,OAAO,IAAP;AAE3D,SACE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CAACpH,OAAO,CAACqL,MAAR,IAAkB;AAAEC,MAAAA,eAAe,EAAE7G;AAAnB,KAAnB,CADT;AAEE,IAAA,MAAM,EAAC,iBAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAIE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLV,KADK,EAEL;AACEuH,MAAAA,eAAe,EAAExH,kBAAkB,GAAGU,iBAAH,GAAuByF;AAD5D,KAFK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACL/F,iBAAiB;AACXoH,MAAAA,eAAe,EAAE7G;AADN,OACoCC,uBADpC,IAEb,EAHC,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOE,gCAAC,+BAAD;AAAiB,IAAA,KAAK,EAAEyF,cAAxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,aAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,CAPF,CARF,CAJF,CADF;AA2BD,CA/fD;;AAigBA,IAAMoB,QAAQ,GAAG,SAAXA,QAAW,CACfC,SADe,EAEfC,SAFe,EAGZ;AAAA;;AACH,MAC6BC,cAD7B,GAWIF,SAXJ,CACE9J,WADF,CACiBiK,UADjB;AAAA,MAEeC,eAFf,GAWIJ,SAXJ,CAEE5K,WAFF;AAAA,MAGeiL,eAHf,GAWIL,SAXJ,CAGE3K,WAHF;AAAA,MAIEiL,iBAJF,GAWIN,SAXJ,CAIEM,iBAJF;AAAA,MAKqBC,qBALrB,GAWIP,SAXJ,CAKEtH,iBALF;AAAA,MAMkB8H,kBANlB,GAWIR,SAXJ,CAME7J,cANF;AAAA,MAOWsK,WAPX,GAWIT,SAXJ,CAOE5J,OAPF;AAAA,MAQWsK,WARX,GAWIV,SAXJ,CAQExL,OARF;AAAA,MASsBmM,sBATtB,GAWIX,SAXJ,CASE1H,kBATF;AAAA,MAUKsI,KAVL,GAWIZ,SAXJ,CAUEvH,CAVF;AAYA,MAC6BoI,cAD7B,GAUIZ,SAVJ,CACE/J,WADF,CACiBiK,UADjB;AAAA,MAEeW,eAFf,GAUIb,SAVJ,CAEE7K,WAFF;AAAA,MAGe2L,eAHf,GAUId,SAVJ,CAGE5K,WAHF;AAAA,MAIqB2L,qBAJrB,GAUIf,SAVJ,CAIEvH,iBAJF;AAAA,MAKkBuI,kBALlB,GAUIhB,SAVJ,CAKE9J,cALF;AAAA,MAMW+K,WANX,GAUIjB,SAVJ,CAME7J,OANF;AAAA,MAOW+K,WAPX,GAUIlB,SAVJ,CAOEzL,OAPF;AAAA,MAQsB4M,sBARtB,GAUInB,SAVJ,CAQE3H,kBARF;AAAA,MASK+I,KATL,GAUIpB,SAVJ,CASExH,CATF;AAYA,MAAM6I,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAYf,WAAZ,EAAyB7E,MAAzB,KAAoC2F,MAAM,CAACC,IAAP,CAAYN,WAAZ,EAAyBtF,MAAlF;AACA,MAAI,CAAC0F,YAAL,EAAmB,OAAO,KAAP;AAEnB,MAAMG,YAAY,GAAGf,WAAW,CAACgB,WAAZ,KAA4BP,WAAW,CAACO,WAA7D;AACA,MAAI,CAACD,YAAL,EAAmB,OAAO,KAAP;AAEnB,MAAME,+BAA+B,GACnCnB,kBAAkB,KAAKS,kBAAvB,KACCT,kBAAkB,KAAKE,WAAW,CAAC/G,EAAnC,IACC6G,kBAAkB,KAAKW,WAAW,CAACxH,EADpC,IAECsH,kBAAkB,KAAKP,WAAW,CAAC/G,EAFpC,IAGCsH,kBAAkB,KAAKE,WAAW,CAACxH,EAJrC,CADF;AAOA,MAAIgI,+BAAJ,EAAqC,OAAO,KAAP;AAErC,MAAMC,4BAA4B,GAChCT,WAAW,CAACU,iBAAZ,IAAiCzB,eAAe,KAAKU,eADvD;AAGA,MAAIc,4BAAJ,EAAkC,OAAO,KAAP;AAElC,MAAME,gBAAgB,GACpBzB,eAAe,CAACzE,MAAhB,KAA2BmF,eAAe,CAACnF,MAA3C,IAAqDyE,eAAe,CAAC,CAAD,CAAf,KAAuBU,eAAe,CAAC,CAAD,CAD7F;AAEA,MAAI,CAACe,gBAAL,EAAuB,OAAO,KAAP;AAEvB,MAAMC,wBAAwB,GAAGrB,WAAW,CAACjM,IAAZ,KAAqB,SAAtD;AACA,MAAMuN,wBAAwB,GAAGb,WAAW,CAAC1M,IAAZ,KAAqB,SAAtD;AAEA,MAAMwN,YAAY,GAChBF,wBAAwB,KAAKC,wBAA7B,IACA,CAAC,+DAA0CtB,WAA1C,KAA0DA,WAAW,CAACwB,MAAvE,OACG,+DAA0Cf,WAA1C,KAA0DA,WAAW,CAACe,MADzE,CADA,IAGAxB,WAAW,CAACrH,MAAZ,KAAuB8H,WAAW,CAAC9H,MAHnC,IAIAqH,WAAW,CAACjM,IAAZ,KAAqB0M,WAAW,CAAC1M,IAJjC,IAKAiM,WAAW,CAACvE,IAAZ,KAAqBgF,WAAW,CAAChF,IALjC,IAMAuE,WAAW,CAACb,MAAZ,KAAuBsB,WAAW,CAACtB,MANnC,IAOA,MAAGa,WAAH,oBAAGA,WAAW,CAAEyB,UAAhB,YAAoChB,WAApC,oBAAoCA,WAAW,CAAEgB,UAAjD,CARF;AAUA,MAAI,CAACF,YAAL,EAAmB,OAAO,KAAP;AAEnB,MAAMG,8BAA8B,GAAG,0BAAA1B,WAAW,CAACjG,cAAZ,2CAA4BhG,IAA5B,MAAqC,SAA5E;AACA,MAAM4N,8BAA8B,GAAG,0BAAAlB,WAAW,CAAC1G,cAAZ,2CAA4BhG,IAA5B,MAAqC,SAA5E;AAEA,MAAM6N,kBAAkB,GACtB,2BAAA5B,WAAW,CAACjG,cAAZ,4CAA4Bd,EAA5B,iCAAmCwH,WAAW,CAAC1G,cAA/C,qBAAmC,uBAA4Bd,EAA/D,KACAyI,8BAA8B,KAAKC,8BAFrC;AAIA,MAAI,CAACC,kBAAL,EAAyB,OAAO,KAAP;AAEzB,MAAMC,sBAAsB,GAAG,sBAAA7B,WAAW,CAAChH,IAAZ,uCAAkB8I,MAAlB,4BAA6BrB,WAAW,CAACzH,IAAzC,qBAA6B,kBAAkB8I,MAA/C,CAA/B;AACA,MAAI,CAACD,sBAAL,EAA6B,OAAO,KAAP;AAE7B,MAAME,sBAAsB,GAAG/B,WAAW,CAAC9F,WAA3C;AACA,MAAM8H,sBAAsB,GAAGvB,WAAW,CAACvG,WAA3C;AACA,MAAM+H,gBAAgB,GACnB9H,KAAK,CAACC,OAAN,CAAc2H,sBAAd,KACC5H,KAAK,CAACC,OAAN,CAAc4H,sBAAd,CADD,IAECD,sBAAsB,CAAC7G,MAAvB,KAAkC8G,sBAAsB,CAAC9G,MAF1D,IAGC6G,sBAAsB,CAACG,KAAvB,CAA6B,UAAC7G,UAAD,EAAa8G,KAAb,EAAuB;AAClD,QAAMC,mBAAmB,GACvB/G,UAAU,CAACtH,IAAX,KAAoB,OAApB,GACIsH,UAAU,CAACR,SAAX,KAAyBmH,sBAAsB,CAACG,KAAD,CAAtB,CAA8BtH,SAAvD,IACAQ,UAAU,CAACN,SAAX,KAAyBiH,sBAAsB,CAACG,KAAD,CAAtB,CAA8BpH,SAF3D,GAGIM,UAAU,CAACtH,IAAX,KAAoBiO,sBAAsB,CAACG,KAAD,CAAtB,CAA8BpO,IAJxD;AAMA,QAAI6L,iBAAJ,EACE,OACEwC,mBAAmB,IAAI,CAAC,CAACxC,iBAAiB,CAACvE,UAAD,EAAa2G,sBAAsB,CAACG,KAAD,CAAnC,CAD5C;AAIF,WAAOC,mBAAP;AACD,GAbD,CAHF,IAiBAL,sBAAsB,KAAKC,sBAlB7B;AAmBA,MAAI,CAACC,gBAAL,EAAuB,OAAO,KAAP;AAEvB,MAAMI,oBAAoB,GACxBlI,KAAK,CAACC,OAAN,CAAc4F,WAAW,CAACjE,gBAA1B,KAA+C5B,KAAK,CAACC,OAAN,CAAcqG,WAAW,CAAC1E,gBAA1B,CAA/C,GACIiE,WAAW,CAACjE,gBAAZ,CAA6Bb,MAA7B,KAAwCuF,WAAW,CAAC1E,gBAAZ,CAA6Bb,MAArE,IACA8E,WAAW,CAACjE,gBAAZ,CAA6BmG,KAA7B,CACE,iBAAWC,KAAX;AAAA;;AAAA,QAAGpO,IAAH,SAAGA,IAAH;AAAA,WAAqBA,IAAI,+BAAK0M,WAAW,CAAC1E,gBAAjB,qBAAK,sBAA+BoG,KAA/B,EAAsCpO,IAA3C,CAAzB;AAAA,GADF,CAFJ,GAKIiM,WAAW,CAACjE,gBAAZ,KAAiC0E,WAAW,CAAC1E,gBANnD;AAOA,MAAI,CAACsG,oBAAL,EAA2B,OAAO,KAAP;AAE3B,MAAMC,aAAa,GACjB9C,cAAc,CAACtE,MAAf,KAA0BiF,cAAc,CAACjF,MAAzC,IACAsE,cAAc,CAACpE,IAAf,CAAoB,UAACmH,SAAD;AAAA;;AAAA,WAAeA,SAAS,CAACC,MAAV,CAAiBvJ,EAAjB,4BAAwB+G,WAAW,CAAChH,IAApC,qBAAwB,mBAAkBC,EAA1C,CAAf;AAAA,GAApB,MACEkH,cAAc,CAAC/E,IAAf,CAAoB,UAACmH,SAAD;AAAA;;AAAA,WAAeA,SAAS,CAACC,MAAV,CAAiBvJ,EAAjB,4BAAwBwH,WAAW,CAACzH,IAApC,qBAAwB,mBAAkBC,EAA1C,CAAf;AAAA,GAApB,CAHJ;AAIA,MAAI,CAACqJ,aAAL,EAAoB,OAAO,KAAP;AAEpB,MAAMG,uBAAuB,GAAGxC,sBAAsB,KAAKS,sBAA3D;AACA,MAAI,CAAC+B,uBAAL,EAA8B,OAAO,KAAP;AAE9B,MAAMC,MAAM,GAAGxC,KAAK,KAAKS,KAAzB;AACA,MAAI,CAAC+B,MAAL,EAAa,OAAO,KAAP;AAEb,MAAMC,oBAAoB,GAAG9C,qBAAqB,KAAKS,qBAAvD;AACA,MAAI,CAACqC,oBAAL,EAA2B,OAAO,KAAP;AAE3B,SAAO,IAAP;AACD,CA/HD;;AAiIA,IAAMC,eAAe,GAAGC,kBAAMC,IAAN,CAAWnP,kBAAX,EAA+B0L,QAA/B,CAAxB;;AAaO,IAAM0D,OAAO,GAAG,SAAVA,OAAU,CAGrBnP,KAHqB,EAIlB;AACH,2BACE,wCADF;AAAA,MAAQK,OAAR,sBAAQA,OAAR;AAAA,MAAiBG,QAAjB,sBAAiBA,QAAjB;AAAA,MAA2BI,qBAA3B,sBAA2BA,qBAA3B;AAAA,MAAkDkB,OAAlD,sBAAkDA,OAAlD;;AAEA,MAAMF,WAAW,GAAG,kCAApB;;AACA,4BAA4B,0CAA5B;AAAA,MAAQnB,eAAR,uBAAQA,eAAR;;AACA,8BAAoB,sDAApB;AAAA,MAAQiD,OAAR,yBAAQA,OAAR;;AACA,MAAMtB,eAAe,GAAG,0CAAxB;;AACA,2BAAuB,wCAAvB;AAAA,MAAQwB,UAAR,sBAAQA,UAAR;;AACA,0BAAuB,sCAAvB;AAAA,MAAQT,UAAR,qBAAQA,UAAR;;AACA,+BAAc,gDAAd;AAAA,MAAQgB,CAAR,0BAAQA,CAAR;;AAEA,SACE,gCAAC,eAAD,gCACM/B,eADN;AAGI/B,IAAAA,OAAO,EAAPA,OAHJ;AAIIuB,IAAAA,WAAW,EAAXA,WAJJ;AAKIpB,IAAAA,QAAQ,EAARA,QALJ;AAMIC,IAAAA,eAAe,EAAfA,eANJ;AAOIG,IAAAA,qBAAqB,EAArBA,qBAPJ;AAQIkB,IAAAA,OAAO,EAAPA,OARJ;AASIM,IAAAA,eAAe,EAAfA,eATJ;AAUIe,IAAAA,UAAU,EAAVA,UAVJ;AAWIO,IAAAA,OAAO,EAAPA,OAXJ;AAYIE,IAAAA,UAAU,EAAVA,UAZJ;AAaIO,IAAAA,CAAC,EAADA;AAbJ,KAeMnE,KAfN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAmBD,CAlCM","sourcesContent":["import React from 'react';\nimport { GestureResponderEvent, Keyboard, StyleProp, View, ViewStyle } from 'react-native';\n\nimport type { Attachment, UserResponse } from 'stream-chat';\n\nimport { useCreateMessageContext } from './hooks/useCreateMessageContext';\nimport { useMessageActionHandlers } from './hooks/useMessageActionHandlers';\nimport { useMessageActions } from './hooks/useMessageActions';\nimport { messageActions as defaultMessageActions } from './utils/messageActions';\n\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n KeyboardContextValue,\n useKeyboardContext,\n} from '../../contexts/keyboardContext/KeyboardContext';\nimport {\n MessageContextValue,\n MessageProvider,\n Reactions,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessageOverlayContextValue,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport { isVideoPackageAvailable, triggerHaptic } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { emojiRegex, MessageStatusTypes } from '../../utils/utils';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n} from '../MessageList/hooks/useMessageList';\nimport type { MessageActionListItemProps } from '../MessageOverlay/MessageActionListItem';\n\nexport type TouchableEmitter =\n | 'fileAttachment'\n | 'gallery'\n | 'giphy'\n | 'message'\n | 'messageContent'\n | 'messageReplies'\n | 'reactionList';\n\nexport type TextMentionTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n emitter: 'textMention';\n additionalInfo?: { user?: UserResponse<StreamChatGenerics> };\n};\n\nexport type UrlTouchableHandlerPayload = {\n emitter: 'textLink' | 'card';\n additionalInfo?: { url?: string };\n};\n\nexport type FileAttachmentTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n emitter: 'fileAttachment';\n additionalInfo?: { attachment?: Attachment<StreamChatGenerics> };\n};\n\nexport type TouchableHandlerPayload = {\n defaultHandler?: () => void;\n event?: GestureResponderEvent;\n} & (\n | {\n emitter?: Exclude<TouchableEmitter, 'textMention' | 'textLink' | 'card' | 'fileAttachment'>;\n }\n | TextMentionTouchableHandlerPayload\n | UrlTouchableHandlerPayload\n | FileAttachmentTouchableHandlerPayload\n);\n\nexport type MessageTouchableHandlerPayload<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = TouchableHandlerPayload & {\n actionHandlers?: MessageActionHandlers;\n additionalInfo?: Record<string, unknown>;\n message?: MessageType<StreamChatGenerics>;\n};\n\nexport type MessageActionHandlers = {\n deleteMessage: () => Promise<void>;\n editMessage: () => void;\n pinMessage: () => Promise<void>;\n quotedReply: () => void;\n resendMessage: () => Promise<void>;\n showMessageOverlay: () => void;\n toggleBanUser: () => Promise<void>;\n toggleMuteUser: () => Promise<void>;\n toggleReaction: (reactionType: string) => Promise<void>;\n};\n\nexport type MessagePropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n ChannelContextValue<StreamChatGenerics>,\n 'channel' | 'disabled' | 'enforceUniqueReaction' | 'members'\n> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'sendReaction'\n | 'deleteMessage'\n | 'dismissKeyboardOnMessageTouch'\n | 'forceAlignMessages'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleQuotedReply'\n | 'handleReaction'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'isAttachmentEqual'\n | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'removeMessage'\n | 'deleteReaction'\n | 'retrySendMessage'\n | 'selectReaction'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'updateMessage'\n > &\n Pick<MessageOverlayContextValue<StreamChatGenerics>, 'setData'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'openThread'> &\n Pick<TranslationContextValue, 't'> & {\n chatContext: ChatContextValue<StreamChatGenerics>;\n messagesContext: MessagesContextValue<StreamChatGenerics>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\n isTargetedMessage?: boolean;\n /**\n * Array of allowed actions or null on message, this can also be a function returning the array.\n * If all the actions need to be disabled an empty array should be provided as value of prop\n */\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we show the overlay with all the message actions on long press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n **/\n onLongPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/Message.tsx)\n *\n * By default, we will dismiss the keyboard on press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n * */\n onPress?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n onPressIn?: (payload: Partial<MessageTouchableHandlerPayload<StreamChatGenerics>>) => void;\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: MessageType<StreamChatGenerics>) => void;\n showUnreadUnderlay?: boolean;\n style?: StyleProp<ViewStyle>;\n };\n\n/**\n * Since this component doesn't consume `messages` from `MessagesContext`,\n * we memoized and broke it up to prevent new messages from re-rendering\n * each individual Message component.\n */\nconst MessageWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const isMessageTypeDeleted = props.message.type === 'deleted';\n\n const {\n sendReaction,\n channel,\n deleteMessage: deleteMessageFromContext,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n enableLongPress = true,\n enforceUniqueReaction,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n chatContext,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n onLongPress: onLongPressProp,\n onLongPressMessage: onLongPressMessageProp,\n onPress: onPressProp,\n onPressMessage: onPressMessageProp,\n onPressIn: onPressInProp,\n onPressInMessage: onPressInMessageProp,\n onThreadSelect,\n openThread,\n OverlayReactionList,\n preventPress,\n removeMessage,\n deleteReaction,\n retrySendMessage,\n selectReaction,\n setData,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n showAvatar,\n showMessageStatus,\n showUnreadUnderlay,\n style,\n supportedReactions,\n t,\n isTargetedMessage,\n threadList = false,\n updateMessage,\n } = props;\n const { client } = chatContext;\n const {\n theme: {\n colors: { bg_gradient_start, targetedMessageBackground },\n messageSimple: { targetedMessageUnderlay },\n },\n } = useTheme();\n\n const actionsEnabled =\n message.type === 'regular' && message.status === MessageStatusTypes.RECEIVED;\n\n const isMyMessage = client && message && client.userID === message.user?.id;\n\n const handleAction = async (name: string, value: string) => {\n if (message.id) {\n const data = await channel?.sendAction(message.id, { [name]: value });\n if (data?.message) {\n updateMessage(data.message);\n } else {\n removeMessage({\n id: message.id,\n parent_id: message.parent_id,\n });\n }\n }\n };\n\n const onPressQuotedMessage = (quotedMessage: MessageType<StreamChatGenerics>) => {\n if (!goToMessage) return;\n\n goToMessage(quotedMessage.id);\n };\n\n const errorOrFailed = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const onPress = (error = errorOrFailed) => {\n if (dismissKeyboardOnMessageTouch) {\n Keyboard.dismiss();\n }\n const quotedMessage = message.quoted_message as MessageType<StreamChatGenerics>;\n if (error) {\n showMessageOverlay(false, true);\n } else if (quotedMessage) {\n onPressQuotedMessage(quotedMessage);\n }\n };\n\n const alignment =\n forceAlignMessages && (forceAlignMessages === 'left' || forceAlignMessages === 'right')\n ? forceAlignMessages\n : isMyMessage\n ? 'right'\n : 'left';\n\n /**\n * attachments contain files/images or other attachments\n *\n * if a URL attachment is present with a file/image then we\n * show just the text and markdown should make the link\n * clickable\n */\n const attachments =\n !isMessageTypeDeleted && Array.isArray(message.attachments)\n ? message.attachments.reduce(\n (acc, cur) => {\n if (cur.type === 'file') {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'video' && !cur.og_scrape_url && isVideoPackageAvailable()) {\n acc.videos.push({\n image_url: cur.asset_url,\n thumb_url: cur.thumb_url,\n type: 'video',\n });\n acc.other = [];\n } else if (cur.type === 'video' && !cur.og_scrape_url) {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'audio') {\n acc.files.push(cur);\n } else if (cur.type === 'image' && !cur.title_link && !cur.og_scrape_url) {\n /**\n * this next if is not combined with the above one for cases where we have\n * an image with no url links at all falling back to being an attachment\n */\n if (cur.image_url || cur.thumb_url) {\n acc.images.push(cur);\n acc.other = []; // remove other attachments if an image exists\n }\n // only add other attachments if there are no files/images\n } else if (!acc.files.length && !acc.images.length && !acc.videos.length) {\n acc.other.push(cur);\n }\n\n return acc;\n },\n {\n files: [] as Attachment<StreamChatGenerics>[],\n images: [] as Attachment<StreamChatGenerics>[],\n other: [] as Attachment<StreamChatGenerics>[],\n videos: [] as Attachment<StreamChatGenerics>[],\n },\n )\n : {\n files: [] as Attachment<StreamChatGenerics>[],\n images: [] as Attachment<StreamChatGenerics>[],\n other: [] as Attachment<StreamChatGenerics>[],\n videos: [] as Attachment<StreamChatGenerics>[],\n };\n /**\n * Check if any actions to prevent long press\n */\n const hasAttachmentActions =\n !isMessageTypeDeleted &&\n Array.isArray(message.attachments) &&\n message.attachments.some((attachment) => attachment.actions && attachment.actions.length);\n\n const messageContentOrder = messageContentOrderProp.filter((content) => {\n if (content === 'quoted_reply') {\n return !!message.quoted_message;\n }\n\n switch (content) {\n case 'attachments':\n return !!attachments.other.length;\n case 'files':\n return !!attachments.files.length;\n case 'gallery':\n return !!attachments.images.length || !!attachments.videos.length;\n case 'text':\n default:\n return !!message.text;\n }\n });\n\n const onlyEmojis =\n !attachments.files.length &&\n !attachments.images.length &&\n !attachments.other.length &&\n !!message.text &&\n emojiRegex.test(message.text);\n\n const onOpenThread = () => {\n if (onThreadSelect) {\n onThreadSelect(message);\n }\n if (openThread) {\n openThread(message);\n }\n };\n\n const hasReactions =\n !isMessageTypeDeleted && !!message.latest_reactions && message.latest_reactions.length > 0;\n\n const clientId = client.userID;\n\n const reactions = hasReactions\n ? supportedReactions.reduce((acc, cur) => {\n const reactionType = cur.type;\n const reactionsOfReactionType = message.latest_reactions?.filter(\n (reaction) => reaction.type === reactionType,\n );\n\n if (reactionsOfReactionType?.length) {\n const hasOwnReaction = reactionsOfReactionType.some(\n (reaction) => reaction.user_id === clientId,\n );\n acc.push({ own: hasOwnReaction, type: reactionType });\n }\n\n return acc;\n }, [] as Reactions)\n : [];\n\n const ownCapabilities = useOwnCapabilitiesContext();\n\n const {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n } = useMessageActionHandlers({\n channel,\n client,\n deleteMessage: deleteMessageFromContext,\n deleteReaction,\n enforceUniqueReaction,\n message,\n retrySendMessage,\n sendReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n });\n\n const {\n blockUser,\n copyMessage,\n deleteMessage,\n editMessage,\n flagMessage,\n handleReaction,\n muteUser,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n } = useMessageActions({\n channel,\n client,\n deleteMessage: deleteMessageFromContext,\n deleteReaction,\n enforceUniqueReaction,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n message,\n onThreadSelect,\n openThread,\n removeMessage,\n retrySendMessage,\n selectReaction,\n sendReaction,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n supportedReactions,\n t,\n updateMessage,\n });\n\n const { userLanguage } = useTranslationContext();\n\n const showMessageOverlay = async (messageReactions = false, error = errorOrFailed) => {\n await dismissKeyboard();\n\n const isThreadMessage = threadList || !!message.parent_id;\n\n const dismissOverlay = () => setOverlay('none');\n\n const messageActions =\n typeof messageActionsProp !== 'function'\n ? messageActionsProp\n : messageActionsProp({\n blockUser,\n copyMessage,\n deleteMessage,\n dismissOverlay,\n editMessage,\n error,\n flagMessage,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n muteUser,\n ownCapabilities,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n });\n\n setData({\n alignment,\n chatContext,\n clientId: client.userID,\n files: attachments.files,\n groupStyles,\n handleReaction: ownCapabilities.sendReaction ? handleReaction : undefined,\n images: attachments.images,\n message,\n messageActions: messageActions?.filter(Boolean) as MessageActionListItemProps[] | undefined,\n messageContext: { ...messageContext, disabled: true, preventPress: true },\n messageReactionTitle: !error && messageReactions ? t('Message Reactions') : undefined,\n messagesContext: { ...messagesContext, messageContentOrder },\n onlyEmojis,\n otherAttachments: attachments.other,\n OverlayReactionList,\n ownCapabilities,\n supportedReactions,\n threadList,\n userLanguage,\n videos: attachments.videos,\n });\n\n setOverlay('message');\n };\n\n const actionHandlers: MessageActionHandlers = {\n deleteMessage: handleDeleteMessage,\n editMessage: handleEditMessage,\n pinMessage: handleTogglePinMessage,\n quotedReply: handleQuotedReplyMessage,\n resendMessage: handleResendMessage,\n showMessageOverlay,\n toggleBanUser: handleToggleBanUser,\n toggleMuteUser: handleToggleMuteUser,\n toggleReaction: handleToggleReaction,\n };\n\n const onLongPressMessage =\n disabled || hasAttachmentActions\n ? () => null\n : onLongPressMessageProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressMessageProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n message,\n })\n : onLongPressProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n })\n : enableLongPress\n ? () => {\n triggerHaptic('impactMedium');\n showMessageOverlay(false);\n }\n : () => null;\n\n const messageContext = useCreateMessageContext({\n actionsEnabled,\n alignment,\n channel,\n disabled,\n files: attachments.files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images: attachments.images,\n isMyMessage,\n lastGroupMessage: groupStyles?.[0] === 'single' || groupStyles?.[0] === 'bottom',\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress: onLongPressMessage,\n onlyEmojis,\n onOpenThread,\n onPress: (payload) => {\n const onPressArgs = {\n actionHandlers,\n additionalInfo: payload.additionalInfo,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n\n const handleOnPress = () => {\n if (onPressProp) return onPressProp(onPressArgs);\n if (onPressMessageProp) return onPressMessageProp(onPressArgs);\n if (payload.defaultHandler) return payload.defaultHandler();\n\n return onPress();\n };\n\n handleOnPress();\n },\n onPressIn:\n onPressInProp || onPressInMessageProp\n ? (payload) => {\n const onPressInArgs = {\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n };\n const handleOnpressIn = () => {\n if (onPressInProp) return onPressInProp(onPressInArgs);\n if (onPressInMessageProp) return onPressInMessageProp(onPressInArgs);\n };\n handleOnpressIn();\n }\n : null,\n otherAttachments: attachments.other,\n preventPress,\n reactions,\n showAvatar,\n showMessageOverlay,\n showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,\n threadList,\n videos: attachments.videos,\n });\n\n if (!(isMessageTypeDeleted || messageContentOrder.length)) return null;\n\n return (\n <View\n style={[message.pinned && { backgroundColor: targetedMessageBackground }]}\n testID='message-wrapper'\n >\n <View\n style={[\n style,\n {\n backgroundColor: showUnreadUnderlay ? bg_gradient_start : undefined,\n },\n ]}\n >\n <View\n style={[\n isTargetedMessage\n ? { backgroundColor: targetedMessageBackground, ...targetedMessageUnderlay }\n : {},\n ]}\n >\n <MessageProvider value={messageContext}>\n <MessageSimple />\n </MessageProvider>\n </View>\n </View>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessagePropsWithContext<StreamChatGenerics>,\n nextProps: MessagePropsWithContext<StreamChatGenerics>,\n) => {\n const {\n chatContext: { mutedUsers: prevMutedUsers },\n goToMessage: prevGoToMessage,\n groupStyles: prevGroupStyles,\n isAttachmentEqual,\n isTargetedMessage: prevIsTargetedMessage,\n lastReceivedId: prevLastReceivedId,\n members: prevMembers,\n message: prevMessage,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n } = prevProps;\n const {\n chatContext: { mutedUsers: nextMutedUsers },\n goToMessage: nextGoToMessage,\n groupStyles: nextGroupStyles,\n isTargetedMessage: nextIsTargetedMessage,\n lastReceivedId: nextLastReceivedId,\n members: nextMembers,\n message: nextMessage,\n showUnreadUnderlay: nextShowUnreadUnderlay,\n t: nextT,\n } = nextProps;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const repliesEqual = prevMessage.reply_count === nextMessage.reply_count;\n if (!repliesEqual) return false;\n\n const lastReceivedIdChangedAndMatters =\n prevLastReceivedId !== nextLastReceivedId &&\n (prevLastReceivedId === prevMessage.id ||\n prevLastReceivedId === nextMessage.id ||\n nextLastReceivedId === prevMessage.id ||\n nextLastReceivedId === nextMessage.id);\n\n if (lastReceivedIdChangedAndMatters) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n\n if (goToMessageChangedAndMatters) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n (isMessageWithStylesReadByAndDateSeparator(prevMessage) && prevMessage.readBy) ===\n (isMessageWithStylesReadByAndDateSeparator(nextMessage) && nextMessage.readBy) &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n\n if (!quotedMessageEqual) return false;\n\n const messageUserBannedEqual = prevMessage.user?.banned === nextMessage.user?.banned;\n if (!messageUserBannedEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n (Array.isArray(prevMessageAttachments) &&\n Array.isArray(nextMessageAttachments) &&\n prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.type === 'image'\n ? attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url\n : attachment.type === nextMessageAttachments[index].type;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })) ||\n prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const mutedUserSame =\n prevMutedUsers.length === nextMutedUsers.length ||\n prevMutedUsers.some((mutedUser) => mutedUser.target.id === prevMessage.user?.id) ===\n nextMutedUsers.some((mutedUser) => mutedUser.target.id === nextMessage.user?.id);\n if (!mutedUserSame) return false;\n\n const showUnreadUnderlayEqual = prevShowUnreadUnderlay === nextShowUnreadUnderlay;\n if (!showUnreadUnderlayEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const targetedMessageEqual = prevIsTargetedMessage === nextIsTargetedMessage;\n if (!targetedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessage = React.memo(MessageWithContext, areEqual) as typeof MessageWithContext;\n\nexport type MessageProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>> &\n Pick<MessagePropsWithContext<StreamChatGenerics>, 'groupStyles' | 'message'>;\n\n/**\n * Message - A high level component which implements all the logic required for a message.\n * The actual rendering of the message is delegated via the \"Message\" property\n *\n * @example ./Message.md\n */\nexport const Message = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageProps<StreamChatGenerics>,\n) => {\n const { channel, disabled, enforceUniqueReaction, members } =\n useChannelContext<StreamChatGenerics>();\n const chatContext = useChatContext<StreamChatGenerics>();\n const { dismissKeyboard } = useKeyboardContext();\n const { setData } = useMessageOverlayContext<StreamChatGenerics>();\n const messagesContext = useMessagesContext<StreamChatGenerics>();\n const { setOverlay } = useOverlayContext();\n const { openThread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedMessage<StreamChatGenerics>\n {...messagesContext}\n {...{\n channel,\n chatContext,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n members,\n messagesContext,\n openThread,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"]}
@@ -21,6 +21,8 @@ var _TranslationContext = require("../../../contexts/translationContext/Translat
21
21
 
22
22
  var _icons = require("../../../icons");
23
23
 
24
+ var _utils = require("../../../utils/utils");
25
+
24
26
  var _this = this,
25
27
  _jsxFileName = "/Users/vishalnarkhede/projects/stream-chat-react-native/package/src/components/Message/MessageSimple/MessageFooter.tsx";
26
28
 
@@ -60,7 +62,7 @@ var MessageFooterWithContext = function MessageFooterWithContext(props) {
60
62
  __self: _this,
61
63
  __source: {
62
64
  fileName: _jsxFileName,
63
- lineNumber: 78,
65
+ lineNumber: 79,
64
66
  columnNumber: 7
65
67
  }
66
68
  }, deletedMessagesVisibilityType === 'sender' && _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_icons.Eye, (0, _extends2["default"])({
@@ -69,7 +71,7 @@ var MessageFooterWithContext = function MessageFooterWithContext(props) {
69
71
  __self: _this,
70
72
  __source: {
71
73
  fileName: _jsxFileName,
72
- lineNumber: 81,
74
+ lineNumber: 82,
73
75
  columnNumber: 13
74
76
  }
75
77
  })), _react["default"].createElement(_reactNative.Text, {
@@ -81,7 +83,7 @@ var MessageFooterWithContext = function MessageFooterWithContext(props) {
81
83
  __self: _this,
82
84
  __source: {
83
85
  fileName: _jsxFileName,
84
- lineNumber: 82,
86
+ lineNumber: 83,
85
87
  columnNumber: 13
86
88
  }
87
89
  }, t('Only visible to you'))), _react["default"].createElement(_reactNative.Text, {
@@ -92,13 +94,13 @@ var MessageFooterWithContext = function MessageFooterWithContext(props) {
92
94
  __self: _this,
93
95
  __source: {
94
96
  fileName: _jsxFileName,
95
- lineNumber: 97,
97
+ lineNumber: 98,
96
98
  columnNumber: 9
97
99
  }
98
100
  }, formattedDate));
99
101
  }
100
102
 
101
- if (lastGroupMessage === false) {
103
+ if (lastGroupMessage === false && message.status === _utils.MessageStatusTypes.RECEIVED) {
102
104
  return null;
103
105
  }
104
106
 
@@ -108,7 +110,7 @@ var MessageFooterWithContext = function MessageFooterWithContext(props) {
108
110
  __self: _this,
109
111
  __source: {
110
112
  fileName: _jsxFileName,
111
- lineNumber: 117,
113
+ lineNumber: 118,
112
114
  columnNumber: 5
113
115
  }
114
116
  }, otherAttachments.length && otherAttachments[0].actions ? _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_icons.Eye, (0, _extends2["default"])({
@@ -117,7 +119,7 @@ var MessageFooterWithContext = function MessageFooterWithContext(props) {
117
119
  __self: _this,
118
120
  __source: {
119
121
  fileName: _jsxFileName,
120
- lineNumber: 120,
122
+ lineNumber: 121,
121
123
  columnNumber: 11
122
124
  }
123
125
  })), _react["default"].createElement(_reactNative.Text, {
@@ -128,7 +130,7 @@ var MessageFooterWithContext = function MessageFooterWithContext(props) {
128
130
  __self: _this,
129
131
  __source: {
130
132
  fileName: _jsxFileName,
131
- lineNumber: 121,
133
+ lineNumber: 122,
132
134
  columnNumber: 11
133
135
  }
134
136
  }, t('Only visible to you'))) : null, Object.keys(members).length > 2 && alignment === 'left' && (_message$user = message.user) != null && _message$user.name ? _react["default"].createElement(_reactNative.Text, {
@@ -138,14 +140,14 @@ var MessageFooterWithContext = function MessageFooterWithContext(props) {
138
140
  __self: _this,
139
141
  __source: {
140
142
  fileName: _jsxFileName,
141
- lineNumber: 136,
143
+ lineNumber: 137,
142
144
  columnNumber: 9
143
145
  }
144
146
  }, message.user.name) : null, showMessageStatus && _react["default"].createElement(MessageStatus, {
145
147
  __self: _this,
146
148
  __source: {
147
149
  fileName: _jsxFileName,
148
- lineNumber: 138,
150
+ lineNumber: 139,
149
151
  columnNumber: 29
150
152
  }
151
153
  }), _react["default"].createElement(_reactNative.Text, {
@@ -156,7 +158,7 @@ var MessageFooterWithContext = function MessageFooterWithContext(props) {
156
158
  __self: _this,
157
159
  __source: {
158
160
  fileName: _jsxFileName,
159
- lineNumber: 139,
161
+ lineNumber: 140,
160
162
  columnNumber: 7
161
163
  }
162
164
  }, formattedDate));
@@ -228,7 +230,7 @@ var MessageFooter = function MessageFooter(props) {
228
230
  __self: _this,
229
231
  __source: {
230
232
  fileName: _jsxFileName,
231
- lineNumber: 234,
233
+ lineNumber: 235,
232
234
  columnNumber: 5
233
235
  }
234
236
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageFooter.tsx"],"names":["MessageFooterWithContext","props","alignment","deletedMessagesVisibilityType","formattedDate","isDeleted","lastGroupMessage","members","message","MessageStatus","otherAttachments","showMessageStatus","theme","colors","grey","grey_dark","messageSimple","content","deletedMetaText","eyeIcon","messageUser","metaContainer","metaText","t","color","textAlign","length","actions","Object","keys","user","name","areEqual","prevProps","nextProps","prevAlignment","prevFormattedDate","prevLastGroupMessage","prevMembers","prevMessage","prevOtherAttachments","prevShowMessageStatus","nextAlignment","nextFormattedDate","nextLastGroupMessage","nextMembers","nextMessage","nextOtherAttachments","nextShowMessageStatus","alignmentEqual","membersEqual","lastGroupMessageEqual","deletedMessagesVisibilityTypeEqual","isPrevMessageTypeDeleted","type","isNextMessageTypeDeleted","messageEqual","reply_count","status","text","pinned","otherAttachmentsEqual","showMessageStatusEqual","formattedDateEqual","MemoizedMessageFooter","React","memo","MessageFooter"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Text, View } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport type { MessageStatusProps } from './MessageStatus';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport {\n Alignment,\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { Eye } from '../../../icons';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { MessageType } from '../../MessageList/hooks/useMessageList';\n\ntype MessageFooterComponentProps = {\n formattedDate: string | Date;\n isDeleted?: boolean;\n};\n\ntype MessageFooterPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'members'\n | 'message'\n | 'otherAttachments'\n | 'showMessageStatus'\n | 'lastGroupMessage'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n 'deletedMessagesVisibilityType' | 'MessageStatus'\n > &\n MessageFooterComponentProps;\n\nconst MessageFooterWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n deletedMessagesVisibilityType,\n formattedDate,\n isDeleted,\n lastGroupMessage,\n members,\n message,\n MessageStatus,\n otherAttachments,\n showMessageStatus,\n } = props;\n\n const {\n theme: {\n colors: { grey, grey_dark },\n messageSimple: {\n content: { deletedMetaText, eyeIcon, messageUser, metaContainer, metaText },\n },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n if (isDeleted) {\n return (\n <View style={metaContainer} testID='message-deleted'>\n {deletedMessagesVisibilityType === 'sender' && (\n <>\n <Eye pathFill={grey_dark} {...eyeIcon} />\n <Text\n style={[\n {\n color: grey_dark,\n textAlign: alignment,\n },\n metaText,\n deletedMetaText,\n ]}\n testID='only-visible-to-you'\n >\n {t('Only visible to you')}\n </Text>\n </>\n )}\n <Text\n style={[\n {\n color: grey,\n textAlign: alignment,\n },\n metaText,\n ]}\n >\n {formattedDate}\n </Text>\n </View>\n );\n }\n\n if (lastGroupMessage === false) {\n return null;\n }\n\n return (\n <View style={metaContainer} testID='message-status-time'>\n {otherAttachments.length && otherAttachments[0].actions ? (\n <>\n <Eye pathFill={grey_dark} {...eyeIcon} />\n <Text\n style={[\n {\n color: grey_dark,\n textAlign: alignment,\n },\n metaText,\n deletedMetaText,\n ]}\n >\n {t('Only visible to you')}\n </Text>\n </>\n ) : null}\n {Object.keys(members).length > 2 && alignment === 'left' && message.user?.name ? (\n <Text style={[{ color: grey }, messageUser]}>{message.user.name}</Text>\n ) : null}\n {showMessageStatus && <MessageStatus />}\n <Text style={[{ color: grey, textAlign: alignment }, metaText]}>{formattedDate}</Text>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageFooterPropsWithContext<StreamChatGenerics>,\n nextProps: MessageFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment: prevAlignment,\n formattedDate: prevFormattedDate,\n lastGroupMessage: prevLastGroupMessage,\n members: prevMembers,\n message: prevMessage,\n otherAttachments: prevOtherAttachments,\n showMessageStatus: prevShowMessageStatus,\n } = prevProps;\n const {\n alignment: nextAlignment,\n formattedDate: nextFormattedDate,\n lastGroupMessage: nextLastGroupMessage,\n members: nextMembers,\n message: nextMessage,\n otherAttachments: nextOtherAttachments,\n showMessageStatus: nextShowMessageStatus,\n } = nextProps;\n\n const alignmentEqual = prevAlignment === nextAlignment;\n if (!alignmentEqual) return false;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;\n if (!lastGroupMessageEqual) return false;\n\n const deletedMessagesVisibilityTypeEqual =\n prevProps.deletedMessagesVisibilityType === nextProps.deletedMessagesVisibilityType;\n if (!deletedMessagesVisibilityTypeEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n prevMessage.reply_count === nextMessage.reply_count &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned;\n if (!messageEqual) return false;\n\n const otherAttachmentsEqual =\n prevOtherAttachments.length === nextOtherAttachments.length &&\n prevOtherAttachments?.[0]?.actions?.length === nextOtherAttachments?.[0]?.actions?.length;\n if (!otherAttachmentsEqual) return false;\n\n const showMessageStatusEqual = prevShowMessageStatus === nextShowMessageStatus;\n if (!showMessageStatusEqual) return false;\n\n const formattedDateEqual = prevFormattedDate === nextFormattedDate;\n if (!formattedDateEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageFooter = React.memo(\n MessageFooterWithContext,\n areEqual,\n) as typeof MessageFooterWithContext;\n\nexport type MessageFooterProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Pick<ChannelContextValue<StreamChatGenerics>, 'members'>> &\n MessageFooterComponentProps & {\n alignment?: Alignment;\n lastGroupMessage?: boolean;\n message?: MessageType<StreamChatGenerics>;\n MessageStatus?: React.ComponentType<MessageStatusProps<StreamChatGenerics>>;\n otherAttachments?: Attachment<StreamChatGenerics>[];\n showMessageStatus?: boolean;\n };\n\nexport const MessageFooter = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageFooterProps<StreamChatGenerics>,\n) => {\n const { alignment, lastGroupMessage, members, message, otherAttachments, showMessageStatus } =\n useMessageContext<StreamChatGenerics>();\n\n const { deletedMessagesVisibilityType, MessageStatus } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedMessageFooter\n {...{\n alignment,\n deletedMessagesVisibilityType,\n lastGroupMessage,\n members,\n message,\n MessageStatus,\n otherAttachments,\n showMessageStatus,\n }}\n {...props}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["MessageFooter.tsx"],"names":["MessageFooterWithContext","props","alignment","deletedMessagesVisibilityType","formattedDate","isDeleted","lastGroupMessage","members","message","MessageStatus","otherAttachments","showMessageStatus","theme","colors","grey","grey_dark","messageSimple","content","deletedMetaText","eyeIcon","messageUser","metaContainer","metaText","t","color","textAlign","status","MessageStatusTypes","RECEIVED","length","actions","Object","keys","user","name","areEqual","prevProps","nextProps","prevAlignment","prevFormattedDate","prevLastGroupMessage","prevMembers","prevMessage","prevOtherAttachments","prevShowMessageStatus","nextAlignment","nextFormattedDate","nextLastGroupMessage","nextMembers","nextMessage","nextOtherAttachments","nextShowMessageStatus","alignmentEqual","membersEqual","lastGroupMessageEqual","deletedMessagesVisibilityTypeEqual","isPrevMessageTypeDeleted","type","isNextMessageTypeDeleted","messageEqual","reply_count","text","pinned","otherAttachmentsEqual","showMessageStatusEqual","formattedDateEqual","MemoizedMessageFooter","React","memo","MessageFooter"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Text, View } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport type { MessageStatusProps } from './MessageStatus';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport {\n Alignment,\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { Eye } from '../../../icons';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes } from '../../../utils/utils';\nimport type { MessageType } from '../../MessageList/hooks/useMessageList';\n\ntype MessageFooterComponentProps = {\n formattedDate: string | Date;\n isDeleted?: boolean;\n};\n\ntype MessageFooterPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'members'\n | 'message'\n | 'otherAttachments'\n | 'showMessageStatus'\n | 'lastGroupMessage'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n 'deletedMessagesVisibilityType' | 'MessageStatus'\n > &\n MessageFooterComponentProps;\n\nconst MessageFooterWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n deletedMessagesVisibilityType,\n formattedDate,\n isDeleted,\n lastGroupMessage,\n members,\n message,\n MessageStatus,\n otherAttachments,\n showMessageStatus,\n } = props;\n\n const {\n theme: {\n colors: { grey, grey_dark },\n messageSimple: {\n content: { deletedMetaText, eyeIcon, messageUser, metaContainer, metaText },\n },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n if (isDeleted) {\n return (\n <View style={metaContainer} testID='message-deleted'>\n {deletedMessagesVisibilityType === 'sender' && (\n <>\n <Eye pathFill={grey_dark} {...eyeIcon} />\n <Text\n style={[\n {\n color: grey_dark,\n textAlign: alignment,\n },\n metaText,\n deletedMetaText,\n ]}\n testID='only-visible-to-you'\n >\n {t('Only visible to you')}\n </Text>\n </>\n )}\n <Text\n style={[\n {\n color: grey,\n textAlign: alignment,\n },\n metaText,\n ]}\n >\n {formattedDate}\n </Text>\n </View>\n );\n }\n\n if (lastGroupMessage === false && message.status === MessageStatusTypes.RECEIVED) {\n return null;\n }\n\n return (\n <View style={metaContainer} testID='message-status-time'>\n {otherAttachments.length && otherAttachments[0].actions ? (\n <>\n <Eye pathFill={grey_dark} {...eyeIcon} />\n <Text\n style={[\n {\n color: grey_dark,\n textAlign: alignment,\n },\n metaText,\n deletedMetaText,\n ]}\n >\n {t('Only visible to you')}\n </Text>\n </>\n ) : null}\n {Object.keys(members).length > 2 && alignment === 'left' && message.user?.name ? (\n <Text style={[{ color: grey }, messageUser]}>{message.user.name}</Text>\n ) : null}\n {showMessageStatus && <MessageStatus />}\n <Text style={[{ color: grey, textAlign: alignment }, metaText]}>{formattedDate}</Text>\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageFooterPropsWithContext<StreamChatGenerics>,\n nextProps: MessageFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment: prevAlignment,\n formattedDate: prevFormattedDate,\n lastGroupMessage: prevLastGroupMessage,\n members: prevMembers,\n message: prevMessage,\n otherAttachments: prevOtherAttachments,\n showMessageStatus: prevShowMessageStatus,\n } = prevProps;\n const {\n alignment: nextAlignment,\n formattedDate: nextFormattedDate,\n lastGroupMessage: nextLastGroupMessage,\n members: nextMembers,\n message: nextMessage,\n otherAttachments: nextOtherAttachments,\n showMessageStatus: nextShowMessageStatus,\n } = nextProps;\n\n const alignmentEqual = prevAlignment === nextAlignment;\n if (!alignmentEqual) return false;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;\n if (!lastGroupMessageEqual) return false;\n\n const deletedMessagesVisibilityTypeEqual =\n prevProps.deletedMessagesVisibilityType === nextProps.deletedMessagesVisibilityType;\n if (!deletedMessagesVisibilityTypeEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n prevMessage.reply_count === nextMessage.reply_count &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned;\n if (!messageEqual) return false;\n\n const otherAttachmentsEqual =\n prevOtherAttachments.length === nextOtherAttachments.length &&\n prevOtherAttachments?.[0]?.actions?.length === nextOtherAttachments?.[0]?.actions?.length;\n if (!otherAttachmentsEqual) return false;\n\n const showMessageStatusEqual = prevShowMessageStatus === nextShowMessageStatus;\n if (!showMessageStatusEqual) return false;\n\n const formattedDateEqual = prevFormattedDate === nextFormattedDate;\n if (!formattedDateEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageFooter = React.memo(\n MessageFooterWithContext,\n areEqual,\n) as typeof MessageFooterWithContext;\n\nexport type MessageFooterProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Pick<ChannelContextValue<StreamChatGenerics>, 'members'>> &\n MessageFooterComponentProps & {\n alignment?: Alignment;\n lastGroupMessage?: boolean;\n message?: MessageType<StreamChatGenerics>;\n MessageStatus?: React.ComponentType<MessageStatusProps<StreamChatGenerics>>;\n otherAttachments?: Attachment<StreamChatGenerics>[];\n showMessageStatus?: boolean;\n };\n\nexport const MessageFooter = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageFooterProps<StreamChatGenerics>,\n) => {\n const { alignment, lastGroupMessage, members, message, otherAttachments, showMessageStatus } =\n useMessageContext<StreamChatGenerics>();\n\n const { deletedMessagesVisibilityType, MessageStatus } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedMessageFooter\n {...{\n alignment,\n deletedMessagesVisibilityType,\n lastGroupMessage,\n members,\n message,\n MessageStatus,\n otherAttachments,\n showMessageStatus,\n }}\n {...props}\n />\n );\n};\n"]}
@@ -9,19 +9,17 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
9
9
 
10
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
11
 
12
- var _utils = require("../../../utils/utils");
13
-
14
12
  var useMessageActionHandlers = function useMessageActionHandlers(_ref) {
15
13
  var channel = _ref.channel,
16
14
  client = _ref.client,
17
- enforceUniqueReaction = _ref.enforceUniqueReaction,
15
+ deleteMessage = _ref.deleteMessage,
16
+ deleteReaction = _ref.deleteReaction,
18
17
  message = _ref.message,
19
- removeMessage = _ref.removeMessage,
20
18
  retrySendMessage = _ref.retrySendMessage,
19
+ sendReaction = _ref.sendReaction,
21
20
  setEditingState = _ref.setEditingState,
22
21
  setQuotedMessageState = _ref.setQuotedMessageState,
23
- supportedReactions = _ref.supportedReactions,
24
- updateMessage = _ref.updateMessage;
22
+ supportedReactions = _ref.supportedReactions;
25
23
 
26
24
  var handleResendMessage = function handleResendMessage() {
27
25
  return retrySendMessage(message);
@@ -39,29 +37,14 @@ var useMessageActionHandlers = function useMessageActionHandlers(_ref) {
39
37
 
40
38
  var handleDeleteMessage = function () {
41
39
  var _ref2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
42
- var data;
43
40
  return _regenerator["default"].wrap(function _callee$(_context) {
44
41
  while (1) {
45
42
  switch (_context.prev = _context.next) {
46
43
  case 0:
47
- if (!(message.status === _utils.MessageStatusTypes.FAILED)) {
48
- _context.next = 4;
49
- break;
50
- }
51
-
52
- removeMessage(message);
53
- _context.next = 8;
54
- break;
55
-
56
- case 4:
57
- _context.next = 6;
58
- return client.deleteMessage(message.id);
59
-
60
- case 6:
61
- data = _context.sent;
62
- updateMessage(data.message);
44
+ _context.next = 2;
45
+ return deleteMessage(message);
63
46
 
64
- case 8:
47
+ case 2:
65
48
  case "end":
66
49
  return _context.stop();
67
50
  }
@@ -255,7 +238,7 @@ var useMessageActionHandlers = function useMessageActionHandlers(_ref) {
255
238
  }
256
239
 
257
240
  _context5.next = 7;
258
- return channel.deleteReaction(messageId, reactionType);
241
+ return deleteReaction(reactionType, messageId);
259
242
 
260
243
  case 7:
261
244
  _context5.next = 11;
@@ -263,11 +246,7 @@ var useMessageActionHandlers = function useMessageActionHandlers(_ref) {
263
246
 
264
247
  case 9:
265
248
  _context5.next = 11;
266
- return channel.sendReaction(messageId, {
267
- type: reactionType
268
- }, {
269
- enforce_unique: enforceUniqueReaction
270
- });
249
+ return sendReaction(reactionType, messageId);
271
250
 
272
251
  case 11:
273
252
  _context5.next = 16;
@@ -1 +1 @@
1
- {"version":3,"sources":["useMessageActionHandlers.ts"],"names":["useMessageActionHandlers","channel","client","enforceUniqueReaction","message","removeMessage","retrySendMessage","setEditingState","setQuotedMessageState","supportedReactions","updateMessage","handleResendMessage","handleQuotedReplyMessage","isMuted","mutedUsers","some","mute","user","id","userID","target","handleDeleteMessage","status","MessageStatusTypes","FAILED","deleteMessage","data","handleToggleMuteUser","unmuteUser","muteUser","handleToggleBanUser","messageUser","banned","unbanUser","banUser","handleTogglePinMessage","MessagePinnedHeaderStatus","pinned","pinMessage","unpinMessage","handleEditMessage","clientId","isMessageTypeDeleted","type","hasReactions","latest_reactions","length","reactions","reduce","acc","cur","reactionType","reactionsOfReactionType","filter","reaction","hasOwnReaction","user_id","push","own","handleToggleReaction","messageId","ownReaction","find","deleteReaction","sendReaction","enforce_unique","console","log"],"mappings":"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","sourcesContent":["import type { MessageResponse, Reaction } from 'stream-chat';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';\nimport type {\n MessageContextValue,\n Reactions,\n} from '../../../contexts/messageContext/MessageContext';\nimport type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes } from '../../../utils/utils';\n\nexport const useMessageActionHandlers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channel,\n client,\n enforceUniqueReaction,\n message,\n removeMessage,\n retrySendMessage,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n updateMessage,\n}: Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'removeMessage'\n | 'retrySendMessage'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'updateMessage'\n> &\n Pick<ChannelContextValue<StreamChatGenerics>, 'channel' | 'enforceUniqueReaction'> &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<MessageContextValue<StreamChatGenerics>, 'message'>) => {\n const handleResendMessage = () =>\n retrySendMessage(message as MessageResponse<StreamChatGenerics>);\n\n const handleQuotedReplyMessage = () => {\n setQuotedMessageState(message);\n };\n\n const isMuted = (client.mutedUsers || []).some(\n (mute) => mute.user.id === client.userID && mute.target.id === message.user?.id,\n );\n\n const handleDeleteMessage = async () => {\n if (message.status === MessageStatusTypes.FAILED) {\n removeMessage(message);\n } else {\n const data = await client.deleteMessage(message.id);\n updateMessage(data.message);\n }\n };\n\n const handleToggleMuteUser = async () => {\n if (!message.user?.id) {\n return;\n }\n\n if (isMuted) {\n await client.unmuteUser(message.user.id);\n } else {\n await client.muteUser(message.user.id);\n }\n };\n\n const handleToggleBanUser = async () => {\n const messageUser = message.user;\n if (!messageUser) {\n return;\n }\n\n if (messageUser.banned) {\n await client.unbanUser(messageUser.id);\n } else {\n await client.banUser(messageUser.id);\n }\n };\n\n const handleTogglePinMessage = async () => {\n const MessagePinnedHeaderStatus = message.pinned;\n if (!MessagePinnedHeaderStatus) {\n await client.pinMessage(message, null);\n } else {\n await client.unpinMessage(message);\n }\n };\n\n const handleEditMessage = () => {\n setEditingState(message);\n };\n\n const clientId = client.userID;\n const isMessageTypeDeleted = message.type === 'deleted';\n\n const hasReactions =\n !isMessageTypeDeleted && !!message.latest_reactions && message.latest_reactions.length > 0;\n\n const reactions = hasReactions\n ? supportedReactions.reduce((acc, cur) => {\n const reactionType = cur.type;\n const reactionsOfReactionType = message.latest_reactions?.filter(\n (reaction) => reaction.type === reactionType,\n );\n\n if (reactionsOfReactionType?.length) {\n const hasOwnReaction = reactionsOfReactionType.some(\n (reaction) => reaction.user_id === clientId,\n );\n acc.push({ own: hasOwnReaction, type: reactionType });\n }\n\n return acc;\n }, [] as Reactions)\n : [];\n\n const handleToggleReaction = async (reactionType: string) => {\n const messageId = message.id;\n const ownReaction = !!reactions.find(\n (reaction) => reaction.own && reaction.type === reactionType,\n );\n\n // Change reaction in local state, make API call in background, revert to old message if fails\n try {\n if (channel && messageId) {\n if (ownReaction) {\n await channel.deleteReaction(messageId, reactionType);\n } else {\n await channel.sendReaction(\n messageId,\n {\n type: reactionType,\n } as Reaction<StreamChatGenerics>,\n { enforce_unique: enforceUniqueReaction },\n );\n }\n }\n } catch (err) {\n console.log(err);\n }\n };\n\n return {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n };\n};\n"]}
1
+ {"version":3,"sources":["useMessageActionHandlers.ts"],"names":["useMessageActionHandlers","channel","client","deleteMessage","deleteReaction","message","retrySendMessage","sendReaction","setEditingState","setQuotedMessageState","supportedReactions","handleResendMessage","handleQuotedReplyMessage","isMuted","mutedUsers","some","mute","user","id","userID","target","handleDeleteMessage","handleToggleMuteUser","unmuteUser","muteUser","handleToggleBanUser","messageUser","banned","unbanUser","banUser","handleTogglePinMessage","MessagePinnedHeaderStatus","pinned","pinMessage","unpinMessage","handleEditMessage","clientId","isMessageTypeDeleted","type","hasReactions","latest_reactions","length","reactions","reduce","acc","cur","reactionType","reactionsOfReactionType","filter","reaction","hasOwnReaction","user_id","push","own","handleToggleReaction","messageId","ownReaction","find","console","log"],"mappings":"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","sourcesContent":["import type { MessageResponse } from 'stream-chat';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';\nimport type {\n MessageContextValue,\n Reactions,\n} from '../../../contexts/messageContext/MessageContext';\nimport type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const useMessageActionHandlers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channel,\n client,\n deleteMessage,\n deleteReaction,\n message,\n retrySendMessage,\n sendReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n}: Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'sendReaction'\n | 'deleteMessage'\n | 'deleteReaction'\n | 'retrySendMessage'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n> &\n Pick<ChannelContextValue<StreamChatGenerics>, 'channel' | 'enforceUniqueReaction'> &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<MessageContextValue<StreamChatGenerics>, 'message'>) => {\n const handleResendMessage = () =>\n retrySendMessage(message as MessageResponse<StreamChatGenerics>);\n\n const handleQuotedReplyMessage = () => {\n setQuotedMessageState(message);\n };\n\n const isMuted = (client.mutedUsers || []).some(\n (mute) => mute.user.id === client.userID && mute.target.id === message.user?.id,\n );\n\n const handleDeleteMessage = async () => {\n await deleteMessage(message as MessageResponse<StreamChatGenerics>);\n };\n\n const handleToggleMuteUser = async () => {\n if (!message.user?.id) {\n return;\n }\n\n if (isMuted) {\n await client.unmuteUser(message.user.id);\n } else {\n await client.muteUser(message.user.id);\n }\n };\n\n const handleToggleBanUser = async () => {\n const messageUser = message.user;\n if (!messageUser) {\n return;\n }\n\n if (messageUser.banned) {\n await client.unbanUser(messageUser.id);\n } else {\n await client.banUser(messageUser.id);\n }\n };\n\n const handleTogglePinMessage = async () => {\n const MessagePinnedHeaderStatus = message.pinned;\n if (!MessagePinnedHeaderStatus) {\n await client.pinMessage(message, null);\n } else {\n await client.unpinMessage(message);\n }\n };\n\n const handleEditMessage = () => {\n setEditingState(message);\n };\n\n const clientId = client.userID;\n const isMessageTypeDeleted = message.type === 'deleted';\n\n const hasReactions =\n !isMessageTypeDeleted && !!message.latest_reactions && message.latest_reactions.length > 0;\n\n const reactions = hasReactions\n ? supportedReactions.reduce((acc, cur) => {\n const reactionType = cur.type;\n const reactionsOfReactionType = message.latest_reactions?.filter(\n (reaction) => reaction.type === reactionType,\n );\n\n if (reactionsOfReactionType?.length) {\n const hasOwnReaction = reactionsOfReactionType.some(\n (reaction) => reaction.user_id === clientId,\n );\n acc.push({ own: hasOwnReaction, type: reactionType });\n }\n\n return acc;\n }, [] as Reactions)\n : [];\n\n const handleToggleReaction = async (reactionType: string) => {\n const messageId = message.id;\n const ownReaction = !!reactions.find(\n (reaction) => reaction.own && reaction.type === reactionType,\n );\n\n // Change reaction in local state, make API call in background, revert to old message if fails\n try {\n if (channel && messageId) {\n if (ownReaction) {\n await deleteReaction(reactionType, messageId);\n } else {\n await sendReaction(reactionType, messageId);\n }\n }\n } catch (err) {\n console.log(err);\n }\n };\n\n return {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n };\n};\n"]}