stream-chat-react-native-core 5.21.0 → 5.22.0-beta.10

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 (285) hide show
  1. package/README.md +10 -5
  2. package/lib/commonjs/components/Attachment/AudioAttachment.js +12 -12
  3. package/lib/commonjs/components/Attachment/AudioAttachment.js.map +1 -1
  4. package/lib/commonjs/components/Attachment/FileAttachment.js +10 -7
  5. package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
  6. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +8 -6
  7. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  8. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js +24 -20
  9. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  10. package/lib/commonjs/components/AttachmentPicker/components/AttachmentSelectionBar.js +26 -11
  11. package/lib/commonjs/components/AttachmentPicker/components/AttachmentSelectionBar.js.map +1 -1
  12. package/lib/commonjs/components/Channel/Channel.js +65 -46
  13. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  14. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +2 -0
  15. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  16. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -2
  17. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  18. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js +16 -14
  19. package/lib/commonjs/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  20. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js +4 -2
  21. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
  22. package/lib/commonjs/components/ImageGallery/ImageGallery.js +30 -32
  23. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  24. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +7 -5
  25. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  26. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +10 -8
  27. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  28. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +18 -15
  29. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  30. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +41 -12
  31. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  32. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +10 -8
  33. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
  34. package/lib/commonjs/components/Indicators/EmptyStateIndicator.js +17 -12
  35. package/lib/commonjs/components/Indicators/EmptyStateIndicator.js.map +1 -1
  36. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +20 -17
  37. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  38. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +18 -17
  39. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
  40. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.js +7 -5
  41. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.js.map +1 -1
  42. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.test.js +8 -0
  43. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.test.js.map +1 -0
  44. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +25 -17
  45. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  46. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +30 -20
  47. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  48. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +13 -13
  49. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  50. package/lib/commonjs/components/MessageInput/MessageInput.js +1 -1
  51. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  52. package/lib/commonjs/components/MessageInput/UploadProgressIndicator.js.map +1 -1
  53. package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js +13 -11
  54. package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js.map +1 -1
  55. package/lib/commonjs/components/MessageOverlay/MessageActionList.js +8 -14
  56. package/lib/commonjs/components/MessageOverlay/MessageActionList.js.map +1 -1
  57. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +11 -8
  58. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js.map +1 -1
  59. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +32 -29
  60. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  61. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js +17 -15
  62. package/lib/commonjs/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  63. package/lib/commonjs/contexts/channelContext/ChannelContext.js +2 -2
  64. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  65. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +66 -45
  66. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  67. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -2
  68. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  69. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  70. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  71. package/lib/commonjs/contexts/themeContext/utils/theme.js +1 -4
  72. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  73. package/lib/commonjs/hooks/index.js +11 -0
  74. package/lib/commonjs/hooks/index.js.map +1 -1
  75. package/lib/commonjs/hooks/useViewport.js +47 -0
  76. package/lib/commonjs/hooks/useViewport.js.map +1 -0
  77. package/lib/commonjs/i18n/en.json +6 -1
  78. package/lib/commonjs/i18n/es.json +77 -0
  79. package/lib/commonjs/i18n/fr.json +65 -60
  80. package/lib/commonjs/i18n/he.json +6 -1
  81. package/lib/commonjs/i18n/hi.json +65 -60
  82. package/lib/commonjs/i18n/it.json +65 -60
  83. package/lib/commonjs/i18n/ja.json +6 -1
  84. package/lib/commonjs/i18n/ko.json +6 -1
  85. package/lib/commonjs/i18n/nl.json +65 -60
  86. package/lib/commonjs/i18n/ru.json +65 -60
  87. package/lib/commonjs/i18n/tr.json +65 -60
  88. package/lib/commonjs/native.js.map +1 -1
  89. package/lib/commonjs/types/types.js.map +1 -1
  90. package/lib/commonjs/utils/Streami18n.js +4 -1
  91. package/lib/commonjs/utils/Streami18n.js.map +1 -1
  92. package/lib/commonjs/utils/compressImage.js +37 -0
  93. package/lib/commonjs/utils/compressImage.js.map +1 -0
  94. package/lib/commonjs/utils/utils.js +1 -15
  95. package/lib/commonjs/utils/utils.js.map +1 -1
  96. package/lib/commonjs/version.json +1 -1
  97. package/lib/module/components/Attachment/AudioAttachment.js +12 -12
  98. package/lib/module/components/Attachment/AudioAttachment.js.map +1 -1
  99. package/lib/module/components/Attachment/FileAttachment.js +10 -7
  100. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  101. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +8 -6
  102. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  103. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +24 -20
  104. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  105. package/lib/module/components/AttachmentPicker/components/AttachmentSelectionBar.js +26 -11
  106. package/lib/module/components/AttachmentPicker/components/AttachmentSelectionBar.js.map +1 -1
  107. package/lib/module/components/Channel/Channel.js +65 -46
  108. package/lib/module/components/Channel/Channel.js.map +1 -1
  109. package/lib/module/components/Channel/hooks/useCreateChannelContext.js +2 -0
  110. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  111. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -2
  112. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  113. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js +16 -14
  114. package/lib/module/components/ChannelPreview/ChannelPreviewMessenger.js.map +1 -1
  115. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js +4 -2
  116. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
  117. package/lib/module/components/ImageGallery/ImageGallery.js +30 -32
  118. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  119. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +7 -5
  120. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  121. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +10 -8
  122. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  123. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +18 -15
  124. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  125. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +41 -12
  126. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  127. package/lib/module/components/ImageGallery/components/ImageGrid.js +10 -8
  128. package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
  129. package/lib/module/components/Indicators/EmptyStateIndicator.js +17 -12
  130. package/lib/module/components/Indicators/EmptyStateIndicator.js.map +1 -1
  131. package/lib/module/components/Message/MessageSimple/MessageContent.js +20 -17
  132. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  133. package/lib/module/components/Message/MessageSimple/ReactionList.js +18 -17
  134. package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
  135. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.js +7 -5
  136. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.js.map +1 -1
  137. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.test.js +8 -0
  138. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.test.js.map +1 -0
  139. package/lib/module/components/Message/MessageSimple/utils/renderText.js +25 -17
  140. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  141. package/lib/module/components/MessageInput/FileUploadPreview.js +30 -20
  142. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  143. package/lib/module/components/MessageInput/ImageUploadPreview.js +13 -13
  144. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  145. package/lib/module/components/MessageInput/MessageInput.js +1 -1
  146. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  147. package/lib/module/components/MessageInput/UploadProgressIndicator.js.map +1 -1
  148. package/lib/module/components/MessageList/InlineUnreadIndicator.js +13 -11
  149. package/lib/module/components/MessageList/InlineUnreadIndicator.js.map +1 -1
  150. package/lib/module/components/MessageOverlay/MessageActionList.js +8 -14
  151. package/lib/module/components/MessageOverlay/MessageActionList.js.map +1 -1
  152. package/lib/module/components/MessageOverlay/MessageActionListItem.js +11 -8
  153. package/lib/module/components/MessageOverlay/MessageActionListItem.js.map +1 -1
  154. package/lib/module/components/MessageOverlay/MessageOverlay.js +32 -29
  155. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  156. package/lib/module/components/Thread/components/ThreadFooterComponent.js +17 -15
  157. package/lib/module/components/Thread/components/ThreadFooterComponent.js.map +1 -1
  158. package/lib/module/contexts/channelContext/ChannelContext.js +2 -2
  159. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  160. package/lib/module/contexts/messageInputContext/MessageInputContext.js +66 -45
  161. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  162. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -2
  163. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  164. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  165. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  166. package/lib/module/contexts/themeContext/utils/theme.js +1 -4
  167. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  168. package/lib/module/hooks/index.js +11 -0
  169. package/lib/module/hooks/index.js.map +1 -1
  170. package/lib/module/hooks/useViewport.js +47 -0
  171. package/lib/module/hooks/useViewport.js.map +1 -0
  172. package/lib/module/i18n/en.json +6 -1
  173. package/lib/module/i18n/es.json +77 -0
  174. package/lib/module/i18n/fr.json +65 -60
  175. package/lib/module/i18n/he.json +6 -1
  176. package/lib/module/i18n/hi.json +65 -60
  177. package/lib/module/i18n/it.json +65 -60
  178. package/lib/module/i18n/ja.json +6 -1
  179. package/lib/module/i18n/ko.json +6 -1
  180. package/lib/module/i18n/nl.json +65 -60
  181. package/lib/module/i18n/ru.json +65 -60
  182. package/lib/module/i18n/tr.json +65 -60
  183. package/lib/module/native.js.map +1 -1
  184. package/lib/module/types/types.js.map +1 -1
  185. package/lib/module/utils/Streami18n.js +4 -1
  186. package/lib/module/utils/Streami18n.js.map +1 -1
  187. package/lib/module/utils/compressImage.js +37 -0
  188. package/lib/module/utils/compressImage.js.map +1 -0
  189. package/lib/module/utils/utils.js +1 -15
  190. package/lib/module/utils/utils.js.map +1 -1
  191. package/lib/module/version.json +1 -1
  192. package/lib/typescript/components/Attachment/AudioAttachment.d.ts +1 -1
  193. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
  194. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +3 -0
  195. package/lib/typescript/components/Message/MessageSimple/utils/generateMarkdownText.d.ts +1 -3
  196. package/lib/typescript/components/Message/MessageSimple/utils/generateMarkdownText.test.d.ts +1 -0
  197. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +1 -1
  198. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +1 -1
  199. package/lib/typescript/components/MessageInput/UploadProgressIndicator.d.ts +5 -2
  200. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +5 -0
  201. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +1 -1
  202. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +3 -23
  203. package/lib/typescript/contexts/messageInputContext/hooks/useMessageDetailsForState.d.ts +2 -2
  204. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +2 -2
  205. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +1 -3
  206. package/lib/typescript/hooks/index.d.ts +1 -0
  207. package/lib/typescript/hooks/useViewport.d.ts +11 -0
  208. package/lib/typescript/i18n/en.json +6 -1
  209. package/lib/typescript/i18n/es.json +77 -0
  210. package/lib/typescript/i18n/fr.json +65 -60
  211. package/lib/typescript/i18n/he.json +6 -1
  212. package/lib/typescript/i18n/hi.json +65 -60
  213. package/lib/typescript/i18n/it.json +65 -60
  214. package/lib/typescript/i18n/ja.json +6 -1
  215. package/lib/typescript/i18n/ko.json +6 -1
  216. package/lib/typescript/i18n/nl.json +65 -60
  217. package/lib/typescript/i18n/ru.json +65 -60
  218. package/lib/typescript/i18n/tr.json +65 -60
  219. package/lib/typescript/native.d.ts +2 -0
  220. package/lib/typescript/store/mappers/mapStorableToChannel.d.ts +1 -1
  221. package/lib/typescript/types/types.d.ts +27 -10
  222. package/lib/typescript/utils/Streami18n.d.ts +7 -1
  223. package/lib/typescript/utils/compressImage.d.ts +8 -0
  224. package/lib/typescript/utils/utils.d.ts +0 -2
  225. package/package.json +2 -2
  226. package/src/components/Attachment/AudioAttachment.tsx +2 -1
  227. package/src/components/Attachment/FileAttachment.tsx +12 -3
  228. package/src/components/AttachmentPicker/AttachmentPicker.tsx +4 -2
  229. package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx +7 -5
  230. package/src/components/AttachmentPicker/components/AttachmentSelectionBar.tsx +13 -1
  231. package/src/components/Channel/Channel.tsx +32 -8
  232. package/src/components/Channel/hooks/useCreateChannelContext.ts +2 -0
  233. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +2 -9
  234. package/src/components/ChannelPreview/ChannelPreviewMessenger.tsx +4 -3
  235. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayName.ts +4 -3
  236. package/src/components/ImageGallery/ImageGallery.tsx +10 -19
  237. package/src/components/ImageGallery/components/AnimatedGalleryImage.tsx +5 -3
  238. package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +5 -3
  239. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +6 -2
  240. package/src/components/ImageGallery/components/ImageGalleryVideoControl.tsx +12 -7
  241. package/src/components/ImageGallery/components/ImageGrid.tsx +2 -1
  242. package/src/components/Indicators/EmptyStateIndicator.tsx +8 -7
  243. package/src/components/Message/MessageSimple/MessageContent.tsx +3 -1
  244. package/src/components/Message/MessageSimple/ReactionList.tsx +2 -1
  245. package/src/components/Message/MessageSimple/utils/generateMarkdownText.test.ts +23 -0
  246. package/src/components/Message/MessageSimple/utils/generateMarkdownText.ts +12 -13
  247. package/src/components/Message/MessageSimple/utils/renderText.tsx +12 -2
  248. package/src/components/MessageInput/FileUploadPreview.tsx +17 -3
  249. package/src/components/MessageInput/ImageUploadPreview.tsx +1 -2
  250. package/src/components/MessageInput/MessageInput.tsx +1 -1
  251. package/src/components/MessageInput/UploadProgressIndicator.tsx +2 -2
  252. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.tsx +1 -1
  253. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.tsx +1 -1
  254. package/src/components/MessageInput/__tests__/MessageInput.test.js +2 -2
  255. package/src/components/MessageList/InlineUnreadIndicator.tsx +2 -1
  256. package/src/components/MessageOverlay/MessageActionList.tsx +3 -11
  257. package/src/components/MessageOverlay/MessageActionListItem.tsx +5 -2
  258. package/src/components/MessageOverlay/MessageOverlay.tsx +5 -3
  259. package/src/components/Thread/components/ThreadFooterComponent.tsx +2 -1
  260. package/src/contexts/channelContext/ChannelContext.tsx +5 -0
  261. package/src/contexts/messageInputContext/MessageInputContext.tsx +81 -69
  262. package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +3 -3
  263. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +2 -2
  264. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +2 -2
  265. package/src/contexts/messagesContext/MessagesContext.tsx +2 -2
  266. package/src/contexts/themeContext/utils/theme.ts +2 -7
  267. package/src/hooks/index.ts +1 -0
  268. package/src/hooks/useViewport.ts +41 -0
  269. package/src/i18n/en.json +6 -1
  270. package/src/i18n/es.json +77 -0
  271. package/src/i18n/fr.json +65 -60
  272. package/src/i18n/he.json +6 -1
  273. package/src/i18n/hi.json +65 -60
  274. package/src/i18n/it.json +65 -60
  275. package/src/i18n/ja.json +6 -1
  276. package/src/i18n/ko.json +6 -1
  277. package/src/i18n/nl.json +65 -60
  278. package/src/i18n/ru.json +65 -60
  279. package/src/i18n/tr.json +65 -60
  280. package/src/native.ts +5 -1
  281. package/src/types/types.ts +29 -10
  282. package/src/utils/Streami18n.ts +13 -6
  283. package/src/utils/compressImage.ts +32 -0
  284. package/src/utils/utils.ts +0 -13
  285. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSvg","_interopRequireWildcard","_MessageContext","_MessagesContext","_ThemeContext","_Unknown","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","container","left","position","top","reactionBubble","alignItems","flexDirection","justifyContent","reactionBubbleBackground","Icon","_ref","_supportedReactions$f","pathFill","size","style","supportedReactions","type","ReactionIcon","find","reaction","Unknown","createElement","View","__self","__source","fileName","lineNumber","columnNumber","height","width","ReactionListWithContext","props","alignment","propFill","fill","message","messageContentWidth","onLongPress","onPress","onPressIn","preventPress","propRadius","radius","reactions","propReactionSize","reactionSize","showMessageOverlay","propStroke","stroke","propStrokeSize","strokeSize","targetedMessage","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","accent_blue","grey","grey_gainsboro","grey_whisper","targetedMessageBackground","white","white_snow","_useTheme$theme$messa","messageSimple","_useTheme$theme$messa2","avatarWrapper","leftAlign","spacer","_useTheme$theme$messa3","reactionList","middleIcon","themeRadius","themeReactionSize","themeStrokeSize","screenPadding","useWindowDimensions","supportedReactionTypes","map","supportedReaction","hasSupportedReactions","some","includes","alignmentLeft","highlighted","pinned","id","x1","Number","marginRight","x2","y1","y2","insideLeftBound","length","insideRightBound","pointerEvents","testID","absoluteFill","Circle","cx","cy","r","backgroundColor","borderColor","borderRadius","borderWidth","TouchableOpacity","disabled","event","emitter","defaultHandler","own","areEqual","prevProps","nextProps","prevMessage","prevMessageContentWidth","prevTargetedMessage","nextMessage","nextMessageContentWidth","nextTargetedMessage","messageContentWidthEqual","messagePinnedEqual","targetedMessageEqual","latestReactionsEqual","Array","isArray","latest_reactions","every","_ref2","index","_nextMessage$latest_r","MemoizedReactionList","React","memo","ReactionList","_useMessageContext","useMessageContext","_useMessagesContext","useMessagesContext","_extends2","exports"],"sources":["ReactionList.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, TouchableOpacity, useWindowDimensions, View } from 'react-native';\n\nimport Svg, { Circle } from 'react-native-svg';\n\nimport {\n MessageContextValue,\n Reactions,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport { Unknown } from '../../../icons/Unknown';\n\nimport type { IconProps } from '../../../icons/utils/base';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { ReactionData } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n left: 0,\n position: 'absolute',\n top: 0,\n },\n reactionBubble: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-evenly',\n position: 'absolute',\n },\n reactionBubbleBackground: {\n position: 'absolute',\n },\n});\n\nexport type MessageReactions = {\n reactions: Reactions;\n supportedReactions?: ReactionData[];\n};\n\nconst Icon: React.FC<\n Pick<IconProps, 'pathFill' | 'style'> & {\n size: number;\n supportedReactions: ReactionData[];\n type: string;\n }\n> = ({ pathFill, size, style, supportedReactions, type }) => {\n const ReactionIcon =\n supportedReactions.find((reaction) => reaction.type === type)?.Icon || Unknown;\n\n return (\n <View>\n <ReactionIcon height={size} pathFill={pathFill} style={style} width={size} />\n </View>\n );\n};\n\nexport type ReactionListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'message'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'reactions'\n | 'showMessageOverlay'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'targetedMessage'> & {\n messageContentWidth: number;\n supportedReactions: ReactionData[];\n fill?: string;\n radius?: number; // not recommended to change this\n reactionSize?: number;\n stroke?: string;\n strokeSize?: number; // not recommended to change this\n };\n\nconst ReactionListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n fill: propFill,\n message,\n messageContentWidth,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n radius: propRadius,\n reactions,\n reactionSize: propReactionSize,\n showMessageOverlay,\n stroke: propStroke,\n strokeSize: propStrokeSize,\n supportedReactions,\n targetedMessage,\n } = props;\n\n const {\n theme: {\n colors: {\n accent_blue,\n grey,\n grey_gainsboro,\n grey_whisper,\n targetedMessageBackground,\n white,\n white_snow,\n },\n messageSimple: {\n avatarWrapper: { leftAlign, spacer },\n reactionList: {\n container,\n middleIcon,\n radius: themeRadius,\n reactionBubble,\n reactionBubbleBackground,\n reactionSize: themeReactionSize,\n strokeSize: themeStrokeSize,\n },\n },\n screenPadding,\n },\n } = useTheme();\n\n const width = useWindowDimensions().width;\n\n const supportedReactionTypes = supportedReactions.map(\n (supportedReaction) => supportedReaction.type,\n );\n const hasSupportedReactions = reactions.some((reaction) =>\n supportedReactionTypes.includes(reaction.type),\n );\n\n if (!hasSupportedReactions || messageContentWidth === 0) {\n return null;\n }\n\n const alignmentLeft = alignment === 'left';\n const fill = propFill || (alignmentLeft ? grey_gainsboro : grey_whisper);\n const radius = propRadius || themeRadius;\n const reactionSize = propReactionSize || themeReactionSize;\n const highlighted = message.pinned || targetedMessage === message.id;\n const stroke = propStroke || (highlighted ? targetedMessageBackground : white_snow);\n const strokeSize = propStrokeSize || themeStrokeSize;\n\n const x1 = alignmentLeft\n ? messageContentWidth +\n (Number(leftAlign.marginRight) || 0) +\n (Number(spacer.width) || 0) -\n radius * 0.5\n : width - screenPadding * 2 - messageContentWidth;\n const x2 = x1 + radius * 2 * (alignmentLeft ? 1 : -1);\n const y1 = reactionSize + radius * 2;\n const y2 = reactionSize - radius;\n\n const insideLeftBound = x2 - (reactionSize * reactions.length) / 2 > screenPadding;\n const insideRightBound =\n x2 + strokeSize + (reactionSize * reactions.length) / 2 < width - screenPadding * 2;\n const left =\n reactions.length === 1\n ? x1 + (alignmentLeft ? -radius : radius - reactionSize)\n : !insideLeftBound\n ? screenPadding\n : !insideRightBound\n ? width - screenPadding * 2 - reactionSize * reactions.length - strokeSize\n : x2 - (reactionSize * reactions.length) / 2 - strokeSize;\n\n return (\n <View\n pointerEvents='box-none'\n style={[\n styles.container,\n {\n height: reactionSize + radius * 5,\n width,\n },\n container,\n ]}\n testID='reaction-list'\n >\n {reactions.length ? (\n <View pointerEvents='box-none' style={[StyleSheet.absoluteFill]}>\n <Svg pointerEvents='none'>\n <Circle cx={x1} cy={y1} fill={stroke} r={radius + strokeSize * 3} />\n <Circle cx={x2} cy={y2} fill={stroke} r={radius * 2 + strokeSize * 3} />\n <Circle cx={x1} cy={y1} fill={fill} r={radius + strokeSize} />\n <Circle cx={x2} cy={y2} fill={fill} r={radius * 2 + strokeSize} />\n <Circle cx={x1} cy={y1} fill={alignmentLeft ? fill : white} r={radius} />\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n <View\n style={[\n styles.reactionBubbleBackground,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderColor: fill,\n borderRadius: reactionSize,\n borderWidth: strokeSize,\n height: reactionSize,\n left,\n width: reactionSize * reactions.length,\n },\n reactionBubbleBackground,\n ]}\n />\n <View pointerEvents='none' style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n </View>\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n style={[\n styles.reactionBubble,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderRadius: reactionSize - strokeSize * 2,\n height: reactionSize - strokeSize * 2,\n left: left + strokeSize,\n top: strokeSize,\n width: reactionSize * reactions.length - strokeSize * 2,\n },\n reactionBubble,\n ]}\n >\n {reactions.map((reaction) => (\n <Icon\n key={reaction.type}\n pathFill={reaction.own ? accent_blue : grey}\n size={reactionSize / 2}\n style={middleIcon}\n supportedReactions={supportedReactions}\n type={reaction.type}\n />\n ))}\n </TouchableOpacity>\n </View>\n ) : null}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ReactionListPropsWithContext<StreamChatGenerics>,\n nextProps: ReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n message: prevMessage,\n messageContentWidth: prevMessageContentWidth,\n targetedMessage: prevTargetedMessage,\n } = prevProps;\n const {\n message: nextMessage,\n messageContentWidth: nextMessageContentWidth,\n targetedMessage: nextTargetedMessage,\n } = nextProps;\n\n const messageContentWidthEqual = prevMessageContentWidth === nextMessageContentWidth;\n if (!messageContentWidthEqual) return false;\n\n const messagePinnedEqual = prevMessage.pinned === nextMessage.pinned;\n\n if (!messagePinnedEqual) return false;\n\n const targetedMessageEqual = prevTargetedMessage === nextTargetedMessage;\n\n if (!targetedMessageEqual) 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 return true;\n};\n\nconst MemoizedReactionList = React.memo(\n ReactionListWithContext,\n areEqual,\n) as typeof ReactionListWithContext;\n\nexport type ReactionListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ReactionListPropsWithContext<StreamChatGenerics>, 'messageContentWidth'>> &\n Pick<ReactionListPropsWithContext<StreamChatGenerics>, 'messageContentWidth'>;\n\n/**\n * ReactionList - A high level component which implements all the logic required for a message reaction list\n */\nexport const ReactionList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReactionListProps<StreamChatGenerics>,\n) => {\n const {\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n } = useMessageContext<StreamChatGenerics>();\n const { supportedReactions, targetedMessage } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedReactionList\n {...{\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n supportedReactions,\n targetedMessage,\n }}\n {...props}\n />\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSvg","_interopRequireWildcard","_MessageContext","_MessagesContext","_ThemeContext","_Unknown","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","container","left","position","top","reactionBubble","alignItems","flexDirection","justifyContent","reactionBubbleBackground","Icon","_ref","_supportedReactions$f","pathFill","size","style","supportedReactions","type","ReactionIcon","find","reaction","Unknown","createElement","View","__self","__source","fileName","lineNumber","columnNumber","height","width","ReactionListWithContext","props","alignment","propFill","fill","message","messageContentWidth","onLongPress","onPress","onPressIn","preventPress","propRadius","radius","reactions","propReactionSize","reactionSize","showMessageOverlay","propStroke","stroke","propStrokeSize","strokeSize","targetedMessage","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","accent_blue","grey","grey_gainsboro","grey_whisper","targetedMessageBackground","white","white_snow","_useTheme$theme$messa","messageSimple","_useTheme$theme$messa2","avatarWrapper","leftAlign","spacer","_useTheme$theme$messa3","reactionList","iconFillColor","middleIcon","themeRadius","themeReactionSize","themeStrokeSize","screenPadding","useWindowDimensions","supportedReactionTypes","map","supportedReaction","hasSupportedReactions","some","includes","alignmentLeft","highlighted","pinned","id","x1","Number","marginRight","x2","y1","y2","insideLeftBound","length","insideRightBound","pointerEvents","testID","absoluteFill","Circle","cx","cy","r","backgroundColor","borderColor","borderRadius","borderWidth","TouchableOpacity","disabled","event","emitter","defaultHandler","own","areEqual","prevProps","nextProps","prevMessage","prevMessageContentWidth","prevTargetedMessage","nextMessage","nextMessageContentWidth","nextTargetedMessage","messageContentWidthEqual","messagePinnedEqual","targetedMessageEqual","latestReactionsEqual","Array","isArray","latest_reactions","every","_ref2","index","_nextMessage$latest_r","MemoizedReactionList","React","memo","ReactionList","_useMessageContext","useMessageContext","_useMessagesContext","useMessagesContext","_extends2","exports"],"sources":["ReactionList.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, TouchableOpacity, useWindowDimensions, View } from 'react-native';\n\nimport Svg, { Circle } from 'react-native-svg';\n\nimport {\n MessageContextValue,\n Reactions,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport { Unknown } from '../../../icons/Unknown';\n\nimport type { IconProps } from '../../../icons/utils/base';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { ReactionData } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n left: 0,\n position: 'absolute',\n top: 0,\n },\n reactionBubble: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-evenly',\n position: 'absolute',\n },\n reactionBubbleBackground: {\n position: 'absolute',\n },\n});\n\nexport type MessageReactions = {\n reactions: Reactions;\n supportedReactions?: ReactionData[];\n};\n\nconst Icon: React.FC<\n Pick<IconProps, 'pathFill' | 'style'> & {\n size: number;\n supportedReactions: ReactionData[];\n type: string;\n }\n> = ({ pathFill, size, style, supportedReactions, type }) => {\n const ReactionIcon =\n supportedReactions.find((reaction) => reaction.type === type)?.Icon || Unknown;\n\n return (\n <View>\n <ReactionIcon height={size} pathFill={pathFill} style={style} width={size} />\n </View>\n );\n};\n\nexport type ReactionListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'message'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'reactions'\n | 'showMessageOverlay'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'targetedMessage'> & {\n messageContentWidth: number;\n supportedReactions: ReactionData[];\n fill?: string;\n radius?: number; // not recommended to change this\n reactionSize?: number;\n stroke?: string;\n strokeSize?: number; // not recommended to change this\n };\n\nconst ReactionListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n fill: propFill,\n message,\n messageContentWidth,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n radius: propRadius,\n reactions,\n reactionSize: propReactionSize,\n showMessageOverlay,\n stroke: propStroke,\n strokeSize: propStrokeSize,\n supportedReactions,\n targetedMessage,\n } = props;\n\n const {\n theme: {\n colors: {\n accent_blue,\n grey,\n grey_gainsboro,\n grey_whisper,\n targetedMessageBackground,\n white,\n white_snow,\n },\n messageSimple: {\n avatarWrapper: { leftAlign, spacer },\n reactionList: {\n container,\n iconFillColor,\n middleIcon,\n radius: themeRadius,\n reactionBubble,\n reactionBubbleBackground,\n reactionSize: themeReactionSize,\n strokeSize: themeStrokeSize,\n },\n },\n screenPadding,\n },\n } = useTheme();\n\n const width = useWindowDimensions().width;\n\n const supportedReactionTypes = supportedReactions.map(\n (supportedReaction) => supportedReaction.type,\n );\n const hasSupportedReactions = reactions.some((reaction) =>\n supportedReactionTypes.includes(reaction.type),\n );\n\n if (!hasSupportedReactions || messageContentWidth === 0) {\n return null;\n }\n\n const alignmentLeft = alignment === 'left';\n const fill = propFill || (alignmentLeft ? grey_gainsboro : grey_whisper);\n const radius = propRadius || themeRadius;\n const reactionSize = propReactionSize || themeReactionSize;\n const highlighted = message.pinned || targetedMessage === message.id;\n const stroke = propStroke || (highlighted ? targetedMessageBackground : white_snow);\n const strokeSize = propStrokeSize || themeStrokeSize;\n\n const x1 = alignmentLeft\n ? messageContentWidth +\n (Number(leftAlign.marginRight) || 0) +\n (Number(spacer.width) || 0) -\n radius * 0.5\n : width - screenPadding * 2 - messageContentWidth;\n const x2 = x1 + radius * 2 * (alignmentLeft ? 1 : -1);\n const y1 = reactionSize + radius * 2;\n const y2 = reactionSize - radius;\n\n const insideLeftBound = x2 - (reactionSize * reactions.length) / 2 > screenPadding;\n const insideRightBound =\n x2 + strokeSize + (reactionSize * reactions.length) / 2 < width - screenPadding * 2;\n const left =\n reactions.length === 1\n ? x1 + (alignmentLeft ? -radius : radius - reactionSize)\n : !insideLeftBound\n ? screenPadding\n : !insideRightBound\n ? width - screenPadding * 2 - reactionSize * reactions.length - strokeSize\n : x2 - (reactionSize * reactions.length) / 2 - strokeSize;\n\n return (\n <View\n pointerEvents='box-none'\n style={[\n styles.container,\n {\n height: reactionSize + radius * 5,\n width,\n },\n container,\n ]}\n testID='reaction-list'\n >\n {reactions.length ? (\n <View pointerEvents='box-none' style={[StyleSheet.absoluteFill]}>\n <Svg pointerEvents='none'>\n <Circle cx={x1} cy={y1} fill={stroke} r={radius + strokeSize * 3} />\n <Circle cx={x2} cy={y2} fill={stroke} r={radius * 2 + strokeSize * 3} />\n <Circle cx={x1} cy={y1} fill={fill} r={radius + strokeSize} />\n <Circle cx={x2} cy={y2} fill={fill} r={radius * 2 + strokeSize} />\n <Circle cx={x1} cy={y1} fill={alignmentLeft ? fill : white} r={radius} />\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n <View\n style={[\n styles.reactionBubbleBackground,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderColor: fill,\n borderRadius: reactionSize,\n borderWidth: strokeSize,\n height: reactionSize,\n left,\n width: reactionSize * reactions.length,\n },\n reactionBubbleBackground,\n ]}\n />\n <View pointerEvents='none' style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n </View>\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n style={[\n styles.reactionBubble,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderRadius: reactionSize - strokeSize * 2,\n height: reactionSize - strokeSize * 2,\n left: left + strokeSize,\n top: strokeSize,\n width: reactionSize * reactions.length - strokeSize * 2,\n },\n reactionBubble,\n ]}\n >\n {reactions.map((reaction) => (\n <Icon\n key={reaction.type}\n pathFill={reaction.own ? iconFillColor || accent_blue : grey}\n size={reactionSize / 2}\n style={middleIcon}\n supportedReactions={supportedReactions}\n type={reaction.type}\n />\n ))}\n </TouchableOpacity>\n </View>\n ) : null}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ReactionListPropsWithContext<StreamChatGenerics>,\n nextProps: ReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n message: prevMessage,\n messageContentWidth: prevMessageContentWidth,\n targetedMessage: prevTargetedMessage,\n } = prevProps;\n const {\n message: nextMessage,\n messageContentWidth: nextMessageContentWidth,\n targetedMessage: nextTargetedMessage,\n } = nextProps;\n\n const messageContentWidthEqual = prevMessageContentWidth === nextMessageContentWidth;\n if (!messageContentWidthEqual) return false;\n\n const messagePinnedEqual = prevMessage.pinned === nextMessage.pinned;\n\n if (!messagePinnedEqual) return false;\n\n const targetedMessageEqual = prevTargetedMessage === nextTargetedMessage;\n\n if (!targetedMessageEqual) 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 return true;\n};\n\nconst MemoizedReactionList = React.memo(\n ReactionListWithContext,\n areEqual,\n) as typeof ReactionListWithContext;\n\nexport type ReactionListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ReactionListPropsWithContext<StreamChatGenerics>, 'messageContentWidth'>> &\n Pick<ReactionListPropsWithContext<StreamChatGenerics>, 'messageContentWidth'>;\n\n/**\n * ReactionList - A high level component which implements all the logic required for a message reaction list\n */\nexport const ReactionList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReactionListProps<StreamChatGenerics>,\n) => {\n const {\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n } = useMessageContext<StreamChatGenerics>();\n const { supportedReactions, targetedMessage } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedReactionList\n {...{\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n supportedReactions,\n targetedMessage,\n }}\n {...props}\n />\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAC,uBAAA,CAAAH,OAAA;AAEA,IAAAI,eAAA,GAAAJ,OAAA;AAKA,IAAAK,gBAAA,GAAAL,OAAA;AAIA,IAAAM,aAAA,GAAAN,OAAA;AAEA,IAAAO,QAAA,GAAAP,OAAA;AAAiD,IAAAQ,KAAA;EAAAC,YAAA;AAAA,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAR,wBAAAY,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAE,OAAA,CAAAF,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,cAAAN,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAMjD,IAAMW,MAAM,GAAGC,uBAAU,CAACC,MAAM,CAAC;EAC/BC,SAAS,EAAE;IACTC,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE;EACP,CAAC;EACDC,cAAc,EAAE;IACdC,UAAU,EAAE,QAAQ;IACpBC,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,cAAc;IAC9BL,QAAQ,EAAE;EACZ,CAAC;EACDM,wBAAwB,EAAE;IACxBN,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAOF,IAAMO,IAML,GAAG,SANEA,IAMLA,CAAAC,IAAA,EAA4D;EAAA,IAAAC,qBAAA;EAAA,IAAtDC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IAAEC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IAAEC,KAAK,GAAAJ,IAAA,CAALI,KAAK;IAAEC,kBAAkB,GAAAL,IAAA,CAAlBK,kBAAkB;IAAEC,IAAI,GAAAN,IAAA,CAAJM,IAAI;EACpD,IAAMC,YAAY,GAChB,EAAAN,qBAAA,GAAAI,kBAAkB,CAACG,IAAI,CAAC,UAACC,QAAQ;IAAA,OAAKA,QAAQ,CAACH,IAAI,KAAKA,IAAI;EAAA,EAAC,qBAA7DL,qBAAA,CAA+DF,IAAI,KAAIW,gBAAO;EAEhF,OACEzD,MAAA,YAAA0D,aAAA,CAACvD,YAAA,CAAAwD,IAAI;IAAAC,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,GACHhE,MAAA,YAAA0D,aAAA,CAACJ,YAAY;IAACW,MAAM,EAAEf,IAAK;IAACD,QAAQ,EAAEA,QAAS;IAACE,KAAK,EAAEA,KAAM;IAACe,KAAK,EAAEhB,IAAK;IAAAU,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CACxE,CAAC;AAEX,CAAC;AAyBD,IAAMG,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAG3BC,KAAuD,EACpD;EACH,IACEC,SAAS,GAgBPD,KAAK,CAhBPC,SAAS;IACHC,QAAQ,GAeZF,KAAK,CAfPG,IAAI;IACJC,OAAO,GAcLJ,KAAK,CAdPI,OAAO;IACPC,mBAAmB,GAajBL,KAAK,CAbPK,mBAAmB;IACnBC,YAAW,GAYTN,KAAK,CAZPM,WAAW;IACXC,QAAO,GAWLP,KAAK,CAXPO,OAAO;IACPC,UAAS,GAUPR,KAAK,CAVPQ,SAAS;IACTC,YAAY,GASVT,KAAK,CATPS,YAAY;IACJC,UAAU,GAQhBV,KAAK,CARPW,MAAM;IACNC,SAAS,GAOPZ,KAAK,CAPPY,SAAS;IACKC,gBAAgB,GAM5Bb,KAAK,CANPc,YAAY;IACZC,kBAAkB,GAKhBf,KAAK,CALPe,kBAAkB;IACVC,UAAU,GAIhBhB,KAAK,CAJPiB,MAAM;IACMC,cAAc,GAGxBlB,KAAK,CAHPmB,UAAU;IACVnC,kBAAkB,GAEhBgB,KAAK,CAFPhB,kBAAkB;IAClBoC,eAAe,GACbpB,KAAK,CADPoB,eAAe;EAGjB,IAAAC,SAAA,GA0BI,IAAAC,sBAAQ,EAAC,CAAC;IAAAC,eAAA,GAAAF,SAAA,CAzBZG,KAAK;IAAAC,qBAAA,GAAAF,eAAA,CACHG,MAAM;IACJC,WAAW,GAAAF,qBAAA,CAAXE,WAAW;IACXC,IAAI,GAAAH,qBAAA,CAAJG,IAAI;IACJC,cAAc,GAAAJ,qBAAA,CAAdI,cAAc;IACdC,YAAY,GAAAL,qBAAA,CAAZK,YAAY;IACZC,yBAAyB,GAAAN,qBAAA,CAAzBM,yBAAyB;IACzBC,KAAK,GAAAP,qBAAA,CAALO,KAAK;IACLC,UAAU,GAAAR,qBAAA,CAAVQ,UAAU;IAAAC,qBAAA,GAAAX,eAAA,CAEZY,aAAa;IAAAC,sBAAA,GAAAF,qBAAA,CACXG,aAAa;IAAIC,SAAS,GAAAF,sBAAA,CAATE,SAAS;IAAEC,MAAM,GAAAH,sBAAA,CAANG,MAAM;IAAAC,sBAAA,GAAAN,qBAAA,CAClCO,YAAY;IACVxE,SAAS,GAAAuE,sBAAA,CAATvE,SAAS;IACTyE,aAAa,GAAAF,sBAAA,CAAbE,aAAa;IACbC,UAAU,GAAAH,sBAAA,CAAVG,UAAU;IACFC,WAAW,GAAAJ,sBAAA,CAAnB7B,MAAM;IACNtC,cAAc,GAAAmE,sBAAA,CAAdnE,cAAc;IACdI,wBAAwB,GAAA+D,sBAAA,CAAxB/D,wBAAwB;IACVoE,iBAAiB,GAAAL,sBAAA,CAA/B1B,YAAY;IACAgC,eAAe,GAAAN,sBAAA,CAA3BrB,UAAU;IAGd4B,aAAa,GAAAxB,eAAA,CAAbwB,aAAa;EAIjB,IAAMjD,KAAK,GAAG,IAAAkD,gCAAmB,EAAC,CAAC,CAAClD,KAAK;EAEzC,IAAMmD,sBAAsB,GAAGjE,kBAAkB,CAACkE,GAAG,CACnD,UAACC,iBAAiB;IAAA,OAAKA,iBAAiB,CAAClE,IAAI;EAAA,CAC/C,CAAC;EACD,IAAMmE,qBAAqB,GAAGxC,SAAS,CAACyC,IAAI,CAAC,UAACjE,QAAQ;IAAA,OACpD6D,sBAAsB,CAACK,QAAQ,CAAClE,QAAQ,CAACH,IAAI,CAAC;EAAA,CAChD,CAAC;EAED,IAAI,CAACmE,qBAAqB,IAAI/C,mBAAmB,KAAK,CAAC,EAAE;IACvD,OAAO,IAAI;EACb;EAEA,IAAMkD,aAAa,GAAGtD,SAAS,KAAK,MAAM;EAC1C,IAAME,IAAI,GAAGD,QAAQ,KAAKqD,aAAa,GAAG1B,cAAc,GAAGC,YAAY,CAAC;EACxE,IAAMnB,MAAM,GAAGD,UAAU,IAAIkC,WAAW;EACxC,IAAM9B,YAAY,GAAGD,gBAAgB,IAAIgC,iBAAiB;EAC1D,IAAMW,WAAW,GAAGpD,OAAO,CAACqD,MAAM,IAAIrC,eAAe,KAAKhB,OAAO,CAACsD,EAAE;EACpE,IAAMzC,MAAM,GAAGD,UAAU,KAAKwC,WAAW,GAAGzB,yBAAyB,GAAGE,UAAU,CAAC;EACnF,IAAMd,UAAU,GAAGD,cAAc,IAAI4B,eAAe;EAEpD,IAAMa,EAAE,GAAGJ,aAAa,GACpBlD,mBAAmB,IAClBuD,MAAM,CAACtB,SAAS,CAACuB,WAAW,CAAC,IAAI,CAAC,CAAC,IACnCD,MAAM,CAACrB,MAAM,CAACzC,KAAK,CAAC,IAAI,CAAC,CAAC,GAC3Ba,MAAM,GAAG,GAAG,GACZb,KAAK,GAAGiD,aAAa,GAAG,CAAC,GAAG1C,mBAAmB;EACnD,IAAMyD,EAAE,GAAGH,EAAE,GAAGhD,MAAM,GAAG,CAAC,IAAI4C,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACrD,IAAMQ,EAAE,GAAGjD,YAAY,GAAGH,MAAM,GAAG,CAAC;EACpC,IAAMqD,EAAE,GAAGlD,YAAY,GAAGH,MAAM;EAEhC,IAAMsD,eAAe,GAAGH,EAAE,GAAIhD,YAAY,GAAGF,SAAS,CAACsD,MAAM,GAAI,CAAC,GAAGnB,aAAa;EAClF,IAAMoB,gBAAgB,GACpBL,EAAE,GAAG3C,UAAU,GAAIL,YAAY,GAAGF,SAAS,CAACsD,MAAM,GAAI,CAAC,GAAGpE,KAAK,GAAGiD,aAAa,GAAG,CAAC;EACrF,IAAM7E,IAAI,GACR0C,SAAS,CAACsD,MAAM,KAAK,CAAC,GAClBP,EAAE,IAAIJ,aAAa,GAAG,CAAC5C,MAAM,GAAGA,MAAM,GAAGG,YAAY,CAAC,GACtD,CAACmD,eAAe,GAChBlB,aAAa,GACb,CAACoB,gBAAgB,GACjBrE,KAAK,GAAGiD,aAAa,GAAG,CAAC,GAAGjC,YAAY,GAAGF,SAAS,CAACsD,MAAM,GAAG/C,UAAU,GACxE2C,EAAE,GAAIhD,YAAY,GAAGF,SAAS,CAACsD,MAAM,GAAI,CAAC,GAAG/C,UAAU;EAE7D,OACEvF,MAAA,YAAA0D,aAAA,CAACvD,YAAA,CAAAwD,IAAI;IACH6E,aAAa,EAAC,UAAU;IACxBrF,KAAK,EAAE,CACLjB,MAAM,CAACG,SAAS,EAChB;MACE4B,MAAM,EAAEiB,YAAY,GAAGH,MAAM,GAAG,CAAC;MACjCb,KAAK,EAALA;IACF,CAAC,EACD7B,SAAS,CACT;IACFoG,MAAM,EAAC,eAAe;IAAA7E,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAErBgB,SAAS,CAACsD,MAAM,GACftI,MAAA,YAAA0D,aAAA,CAACvD,YAAA,CAAAwD,IAAI;IAAC6E,aAAa,EAAC,UAAU;IAACrF,KAAK,EAAE,CAAChB,uBAAU,CAACuG,YAAY,CAAE;IAAA9E,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAC9DhE,MAAA,YAAA0D,aAAA,CAACtD,eAAA,WAAG;IAACoI,aAAa,EAAC,MAAM;IAAA5E,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,GACvBhE,MAAA,YAAA0D,aAAA,CAACtD,eAAA,CAAAuI,MAAM;IAACC,EAAE,EAAEb,EAAG;IAACc,EAAE,EAAEV,EAAG;IAAC5D,IAAI,EAAEc,MAAO;IAACyD,CAAC,EAAE/D,MAAM,GAAGQ,UAAU,GAAG,CAAE;IAAA3B,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CAAC,EACpEhE,MAAA,YAAA0D,aAAA,CAACtD,eAAA,CAAAuI,MAAM;IAACC,EAAE,EAAEV,EAAG;IAACW,EAAE,EAAET,EAAG;IAAC7D,IAAI,EAAEc,MAAO;IAACyD,CAAC,EAAE/D,MAAM,GAAG,CAAC,GAAGQ,UAAU,GAAG,CAAE;IAAA3B,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CAAC,EACxEhE,MAAA,YAAA0D,aAAA,CAACtD,eAAA,CAAAuI,MAAM;IAACC,EAAE,EAAEb,EAAG;IAACc,EAAE,EAAEV,EAAG;IAAC5D,IAAI,EAAEA,IAAK;IAACuE,CAAC,EAAE/D,MAAM,GAAGQ,UAAW;IAAA3B,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CAAC,EAC9DhE,MAAA,YAAA0D,aAAA,CAACtD,eAAA,CAAAuI,MAAM;IAACC,EAAE,EAAEV,EAAG;IAACW,EAAE,EAAET,EAAG;IAAC7D,IAAI,EAAEA,IAAK;IAACuE,CAAC,EAAE/D,MAAM,GAAG,CAAC,GAAGQ,UAAW;IAAA3B,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CAAC,EAClEhE,MAAA,YAAA0D,aAAA,CAACtD,eAAA,CAAAuI,MAAM;IAACC,EAAE,EAAEb,EAAG;IAACc,EAAE,EAAEV,EAAG;IAAC5D,IAAI,EAAEoD,aAAa,GAAGpD,IAAI,GAAG6B,KAAM;IAAC0C,CAAC,EAAE/D,MAAO;IAAAnB,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CAAC,EACzEhE,MAAA,YAAA0D,aAAA,CAACtD,eAAA,CAAAuI,MAAM;IAACC,EAAE,EAAEV,EAAG;IAACW,EAAE,EAAET,EAAG;IAAC7D,IAAI,EAAEoD,aAAa,GAAGpD,IAAI,GAAG6B,KAAM;IAAC0C,CAAC,EAAE/D,MAAM,GAAG,CAAE;IAAAnB,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CACzE,CAAC,EACNhE,MAAA,YAAA0D,aAAA,CAACvD,YAAA,CAAAwD,IAAI;IACHR,KAAK,EAAE,CACLjB,MAAM,CAACW,wBAAwB,EAC/B;MACEkG,eAAe,EAAEpB,aAAa,GAAGpD,IAAI,GAAG6B,KAAK;MAC7C4C,WAAW,EAAEzE,IAAI;MACjB0E,YAAY,EAAE/D,YAAY;MAC1BgE,WAAW,EAAE3D,UAAU;MACvBtB,MAAM,EAAEiB,YAAY;MACpB5C,IAAI,EAAJA,IAAI;MACJ4B,KAAK,EAAEgB,YAAY,GAAGF,SAAS,CAACsD;IAClC,CAAC,EACDzF,wBAAwB,CACxB;IAAAe,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,CACH,CAAC,EACFhE,MAAA,YAAA0D,aAAA,CAACvD,YAAA,CAAAwD,IAAI;IAAC6E,aAAa,EAAC,MAAM;IAACrF,KAAK,EAAE,CAAChB,uBAAU,CAACuG,YAAY,CAAE;IAAA9E,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAC1DhE,MAAA,YAAA0D,aAAA,CAACtD,eAAA,WAAG;IAAAwD,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,GACFhE,MAAA,YAAA0D,aAAA,CAACtD,eAAA,CAAAuI,MAAM;IAACC,EAAE,EAAEV,EAAG;IAACW,EAAE,EAAET,EAAG;IAAC7D,IAAI,EAAEoD,aAAa,GAAGpD,IAAI,GAAG6B,KAAM;IAAC0C,CAAC,EAAE/D,MAAM,GAAG,CAAE;IAAAnB,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CACzE,CACD,CAAC,EACPhE,MAAA,YAAA0D,aAAA,CAACvD,YAAA,CAAAgJ,gBAAgB;IACfC,QAAQ,EAAEvE,YAAa;IACvBH,WAAW,EAAE,SAAAA,YAAC2E,KAAK,EAAK;MACtB,IAAI3E,YAAW,EAAE;QACfA,YAAW,CAAC;UACV4E,OAAO,EAAE,cAAc;UACvBD,KAAK,EAALA;QACF,CAAC,CAAC;MACJ;IACF,CAAE;IACF1E,OAAO,EAAE,SAAAA,QAAC0E,KAAK,EAAK;MAClB,IAAI1E,QAAO,EAAE;QACXA,QAAO,CAAC;UACN4E,cAAc,EAAE,SAAAA,eAAA;YAAA,OAAMpE,kBAAkB,CAAC,IAAI,CAAC;UAAA;UAC9CmE,OAAO,EAAE,cAAc;UACvBD,KAAK,EAALA;QACF,CAAC,CAAC;MACJ;IACF,CAAE;IACFzE,SAAS,EAAE,SAAAA,UAACyE,KAAK,EAAK;MACpB,IAAIzE,UAAS,EAAE;QACbA,UAAS,CAAC;UACR2E,cAAc,EAAE,SAAAA,eAAA;YAAA,OAAMpE,kBAAkB,CAAC,IAAI,CAAC;UAAA;UAC9CmE,OAAO,EAAE,cAAc;UACvBD,KAAK,EAALA;QACF,CAAC,CAAC;MACJ;IACF,CAAE;IACFlG,KAAK,EAAE,CACLjB,MAAM,CAACO,cAAc,EACrB;MACEsG,eAAe,EAAEpB,aAAa,GAAGpD,IAAI,GAAG6B,KAAK;MAC7C6C,YAAY,EAAE/D,YAAY,GAAGK,UAAU,GAAG,CAAC;MAC3CtB,MAAM,EAAEiB,YAAY,GAAGK,UAAU,GAAG,CAAC;MACrCjD,IAAI,EAAEA,IAAI,GAAGiD,UAAU;MACvB/C,GAAG,EAAE+C,UAAU;MACfrB,KAAK,EAAEgB,YAAY,GAAGF,SAAS,CAACsD,MAAM,GAAG/C,UAAU,GAAG;IACxD,CAAC,EACD9C,cAAc,CACd;IAAAmB,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEDgB,SAAS,CAACsC,GAAG,CAAC,UAAC9D,QAAQ;IAAA,OACtBxD,MAAA,YAAA0D,aAAA,CAACZ,IAAI;MACHlB,GAAG,EAAE4B,QAAQ,CAACH,IAAK;MACnBJ,QAAQ,EAAEO,QAAQ,CAACgG,GAAG,GAAG1C,aAAa,IAAIf,WAAW,GAAGC,IAAK;MAC7D9C,IAAI,EAAEgC,YAAY,GAAG,CAAE;MACvB/B,KAAK,EAAE4D,UAAW;MAClB3D,kBAAkB,EAAEA,kBAAmB;MACvCC,IAAI,EAAEG,QAAQ,CAACH,IAAK;MAAAO,MAAA,EAAAlD,KAAA;MAAAmD,QAAA;QAAAC,QAAA,EAAAnD,YAAA;QAAAoD,UAAA;QAAAC,YAAA;MAAA;IAAA,CACrB,CAAC;EAAA,CACH,CACe,CACd,CAAC,GACL,IACA,CAAC;AAEX,CAAC;AAED,IAAMyF,QAAQ,GAAG,SAAXA,QAAQA,CACZC,SAA2D,EAC3DC,SAA2D,EACxD;EACH,IACWC,WAAW,GAGlBF,SAAS,CAHXlF,OAAO;IACcqF,uBAAuB,GAE1CH,SAAS,CAFXjF,mBAAmB;IACFqF,mBAAmB,GAClCJ,SAAS,CADXlE,eAAe;EAEjB,IACWuE,WAAW,GAGlBJ,SAAS,CAHXnF,OAAO;IACcwF,uBAAuB,GAE1CL,SAAS,CAFXlF,mBAAmB;IACFwF,mBAAmB,GAClCN,SAAS,CADXnE,eAAe;EAGjB,IAAM0E,wBAAwB,GAAGL,uBAAuB,KAAKG,uBAAuB;EACpF,IAAI,CAACE,wBAAwB,EAAE,OAAO,KAAK;EAE3C,IAAMC,kBAAkB,GAAGP,WAAW,CAAC/B,MAAM,KAAKkC,WAAW,CAAClC,MAAM;EAEpE,IAAI,CAACsC,kBAAkB,EAAE,OAAO,KAAK;EAErC,IAAMC,oBAAoB,GAAGN,mBAAmB,KAAKG,mBAAmB;EAExE,IAAI,CAACG,oBAAoB,EAAE,OAAO,KAAK;EAEvC,IAAMC,oBAAoB,GACxBC,KAAK,CAACC,OAAO,CAACX,WAAW,CAACY,gBAAgB,CAAC,IAAIF,KAAK,CAACC,OAAO,CAACR,WAAW,CAACS,gBAAgB,CAAC,GACtFZ,WAAW,CAACY,gBAAgB,CAAClC,MAAM,KAAKyB,WAAW,CAACS,gBAAgB,CAAClC,MAAM,IAC3EsB,WAAW,CAACY,gBAAgB,CAACC,KAAK,CAChC,UAAAC,KAAA,EAAWC,KAAK;IAAA,IAAAC,qBAAA;IAAA,IAAbvH,IAAI,GAAAqH,KAAA,CAAJrH,IAAI;IAAA,OAAcA,IAAI,OAAAuH,qBAAA,GAAKb,WAAW,CAACS,gBAAgB,qBAA5BI,qBAAA,CAA+BD,KAAK,CAAC,CAACtH,IAAI;EAAA,CAC1E,CAAC,GACDuG,WAAW,CAACY,gBAAgB,KAAKT,WAAW,CAACS,gBAAgB;EACnE,IAAI,CAACH,oBAAoB,EAAE,OAAO,KAAK;EAEvC,OAAO,IAAI;AACb,CAAC;AAED,IAAMQ,oBAAoB,GAAGC,iBAAK,CAACC,IAAI,CACrC5G,uBAAuB,EACvBsF,QACF,CAAmC;AAU5B,IAAMuB,YAAY,GAAG,SAAfA,YAAYA,CAGvB5G,KAA4C,EACzC;EACH,IAAA6G,kBAAA,GASI,IAAAC,iCAAiB,EAAqB,CAAC;IARzC7G,SAAS,GAAA4G,kBAAA,CAAT5G,SAAS;IACTG,OAAO,GAAAyG,kBAAA,CAAPzG,OAAO;IACPE,WAAW,GAAAuG,kBAAA,CAAXvG,WAAW;IACXC,OAAO,GAAAsG,kBAAA,CAAPtG,OAAO;IACPC,SAAS,GAAAqG,kBAAA,CAATrG,SAAS;IACTC,YAAY,GAAAoG,kBAAA,CAAZpG,YAAY;IACZG,SAAS,GAAAiG,kBAAA,CAATjG,SAAS;IACTG,kBAAkB,GAAA8F,kBAAA,CAAlB9F,kBAAkB;EAEpB,IAAAgG,mBAAA,GAAgD,IAAAC,mCAAkB,EAAqB,CAAC;IAAhFhI,kBAAkB,GAAA+H,mBAAA,CAAlB/H,kBAAkB;IAAEoC,eAAe,GAAA2F,mBAAA,CAAf3F,eAAe;EAE3C,OACExF,MAAA,YAAA0D,aAAA,CAACmH,oBAAoB,MAAAQ,SAAA;IAEjBhH,SAAS,EAATA,SAAS;IACTG,OAAO,EAAPA,OAAO;IACPE,WAAW,EAAXA,WAAW;IACXC,OAAO,EAAPA,OAAO;IACPC,SAAS,EAATA,SAAS;IACTC,YAAY,EAAZA,YAAY;IACZG,SAAS,EAATA,SAAS;IACTG,kBAAkB,EAAlBA,kBAAkB;IAClB/B,kBAAkB,EAAlBA,kBAAkB;IAClBoC,eAAe,EAAfA;EAAe,GAEbpB,KAAK;IAAAR,MAAA,EAAAlD,KAAA;IAAAmD,QAAA;MAAAC,QAAA,EAAAnD,YAAA;MAAAoD,UAAA;MAAAC,YAAA;IAAA;EAAA,EACV,CAAC;AAEN,CAAC;AAACsH,OAAA,CAAAN,YAAA,GAAAA,YAAA"}
@@ -8,8 +8,10 @@ var _parseLinks = require("./parseLinks");
8
8
  function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
9
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
10
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
- var generateMarkdownText = function generateMarkdownText(message) {
12
- var text = message.text;
11
+ function escapeRegExp(text) {
12
+ return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
13
+ }
14
+ var generateMarkdownText = function generateMarkdownText(text) {
13
15
  if (!text) return null;
14
16
  var resultText = text.trim();
15
17
  var linkInfos = (0, _parseLinks.parseLinksFromText)(resultText);
@@ -19,13 +21,13 @@ var generateMarkdownText = function generateMarkdownText(message) {
19
21
  length: 200,
20
22
  omission: '...'
21
23
  });
22
- var normalRegEx = new RegExp(linkInfo.raw, 'g');
24
+ var normalRegEx = new RegExp(escapeRegExp(linkInfo.raw), 'g');
23
25
  var markdown = "[" + displayLink + "](" + linkInfo.encodedUrl + ")";
24
26
  resultText = text.replace(normalRegEx, markdown);
25
- var mentionsRegex = new RegExp("@\\[" + displayLink + "\\]\\(" + linkInfo.encodedUrl + "\\)", 'g');
27
+ var mentionsRegex = new RegExp("@\\[" + escapeRegExp(displayLink) + "\\]\\(" + escapeRegExp(linkInfo.encodedUrl) + "\\)", 'g');
26
28
  resultText = resultText.replace(mentionsRegex, "@" + displayLink);
27
29
  }
28
- resultText = resultText.replace(/[<&"'>]/g, '\\$&');
30
+ resultText = resultText.replace(/[<"'>]/g, '\\$&');
29
31
  return resultText;
30
32
  };
31
33
  exports.generateMarkdownText = generateMarkdownText;
@@ -1 +1 @@
1
- {"version":3,"names":["_truncate","_interopRequireDefault","require","_parseLinks","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","generateMarkdownText","message","text","resultText","trim","linkInfos","parseLinksFromText","_iterator","_step","linkInfo","displayLink","truncate","raw","omission","normalRegEx","RegExp","markdown","encodedUrl","replace","mentionsRegex","exports"],"sources":["generateMarkdownText.ts"],"sourcesContent":["import truncate from 'lodash/truncate';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nexport const generateMarkdownText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n message: MessageType<StreamChatGenerics>,\n) => {\n const { text } = message;\n\n if (!text) return null;\n\n // Trim the extra spaces from the text.\n let resultText = text.trim();\n\n // List of all the links present in the text.\n const linkInfos = parseLinksFromText(resultText);\n\n for (const linkInfo of linkInfos) {\n const displayLink = truncate(linkInfo.raw, {\n length: 200,\n omission: '...',\n });\n // Convert raw links/emails in the text to respective markdown syntax.\n // Eg: Hi getstream.io -> Hi [getstream.io](getstream.io).\n const normalRegEx = new RegExp(linkInfo.raw, 'g');\n const markdown = `[${displayLink}](${linkInfo.encodedUrl})`;\n resultText = text.replace(normalRegEx, markdown);\n\n // After previous step, in some cases, the mentioned user after `@` might have a link/email so we convert it back to normal raw text.\n // Eg: Hi, @[test.user@gmail.com](mailto:test.user@gmail.com) to @test.user@gmail.com.\n const mentionsRegex = new RegExp(`@\\\\[${displayLink}\\\\]\\\\(${linkInfo.encodedUrl}\\\\)`, 'g');\n resultText = resultText.replace(mentionsRegex, `@${displayLink}`);\n }\n\n resultText = resultText.replace(/[<&\"'>]/g, '\\\\$&');\n\n return resultText;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_truncate","_interopRequireDefault","require","_parseLinks","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","escapeRegExp","text","replace","generateMarkdownText","resultText","trim","linkInfos","parseLinksFromText","_iterator","_step","linkInfo","displayLink","truncate","raw","omission","normalRegEx","RegExp","markdown","encodedUrl","mentionsRegex","exports"],"sources":["generateMarkdownText.ts"],"sourcesContent":["import truncate from 'lodash/truncate';\n\nimport { parseLinksFromText } from './parseLinks';\n\n// If you need to use any of the special characters literally (actually searching for a \"*\", for instance), you must escape it by putting a backslash in front of it.\nfunction escapeRegExp(text: string) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nexport const generateMarkdownText = (text?: string) => {\n if (!text) return null;\n\n // Trim the extra spaces from the text.\n let resultText = text.trim();\n\n // List of all the links present in the text.\n const linkInfos = parseLinksFromText(resultText);\n\n for (const linkInfo of linkInfos) {\n const displayLink = truncate(linkInfo.raw, {\n length: 200,\n omission: '...',\n });\n // Convert raw links/emails in the text to respective markdown syntax.\n // Eg: Hi @getstream.io -> Hi @[getstream.io](getstream.io).\n const normalRegEx = new RegExp(escapeRegExp(linkInfo.raw), 'g');\n const markdown = `[${displayLink}](${linkInfo.encodedUrl})`;\n resultText = text.replace(normalRegEx, markdown);\n\n // After previous step, in some cases, the mentioned user after `@` might have a link/email so we convert it back to normal raw text.\n // Eg: Hi, @[test.user@gmail.com](mailto:test.user@gmail.com) to @test.user@gmail.com.\n const mentionsRegex = new RegExp(\n `@\\\\[${escapeRegExp(displayLink)}\\\\]\\\\(${escapeRegExp(linkInfo.encodedUrl)}\\\\)`,\n 'g',\n );\n resultText = resultText.replace(mentionsRegex, `@${displayLink}`);\n }\n\n resultText = resultText.replace(/[<\"'>]/g, '\\\\$&');\n\n return resultText;\n};\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ var _generateMarkdownText = require("./generateMarkdownText");
2
+ describe('generateMarkdownText', function () {
3
+ it.each([['', null], [' test message ', 'test message'], ['https://www.getstream.io', '[https://www.getstream.io](https://www.getstream.io)'], ['https://getstream-production.s3-accelerate.amazonaws.com/N336903591601695/33e78ef89e64642862a75c5cca2541eaf6b1c924/trimmedVideos/alert/2_270_881/outputVideo.mp4?AWSAccessKeyId=AKIAVJAW2AD2SQVQCBXV&Expires=1699998768&Signature=zdEMCGzf4Pq++16YkPprvN5NAds=', '[https://getstream-production.s3-accelerate.amazonaws.com/N336903591601695/33e78ef89e64642862a75c5cca2541eaf6b1c924/trimmedVideos/alert/2_270_881/outputVideo.mp4?AWSAccessKeyId=AKIAVJAW2AD2SQVQCBXV&...](https://getstream-production.s3-accelerate.amazonaws.com/N336903591601695/33e78ef89e64642862a75c5cca2541eaf6b1c924/trimmedVideos/alert/2_270_881/outputVideo.mp4?AWSAccessKeyId=AKIAVJAW2AD2SQVQCBXV&Expires=1699998768&Signature=zdEMCGzf4Pq++16YkPprvN5NAds=)'], ['Hi @getstream.io', 'Hi @getstream.io'], ['Hi test@gmail.com @test@gmail.com', 'Hi [test@gmail.com](mailto:test@gmail.com) @test@gmail.com'], ['Hi @getstream.io getstream.io', 'Hi @getstream.io [getstream.io](http://getstream.io)'], ['Hi <Stream>', 'Hi \\<Stream\\>']])('Returns the generated markdown text for %p and %p', function (text, expected) {
4
+ var result = (0, _generateMarkdownText.generateMarkdownText)(text);
5
+ expect(result).toBe(expected);
6
+ });
7
+ });
8
+ //# sourceMappingURL=generateMarkdownText.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_generateMarkdownText","require","describe","it","each","text","expected","result","generateMarkdownText","expect","toBe"],"sources":["generateMarkdownText.test.ts"],"sourcesContent":["import { generateMarkdownText } from './generateMarkdownText';\n\ndescribe('generateMarkdownText', () => {\n it.each([\n ['', null],\n [' test message ', 'test message'],\n ['https://www.getstream.io', '[https://www.getstream.io](https://www.getstream.io)'],\n [\n 'https://getstream-production.s3-accelerate.amazonaws.com/N336903591601695/33e78ef89e64642862a75c5cca2541eaf6b1c924/trimmedVideos/alert/2_270_881/outputVideo.mp4?AWSAccessKeyId=AKIAVJAW2AD2SQVQCBXV&Expires=1699998768&Signature=zdEMCGzf4Pq++16YkPprvN5NAds=',\n '[https://getstream-production.s3-accelerate.amazonaws.com/N336903591601695/33e78ef89e64642862a75c5cca2541eaf6b1c924/trimmedVideos/alert/2_270_881/outputVideo.mp4?AWSAccessKeyId=AKIAVJAW2AD2SQVQCBXV&...](https://getstream-production.s3-accelerate.amazonaws.com/N336903591601695/33e78ef89e64642862a75c5cca2541eaf6b1c924/trimmedVideos/alert/2_270_881/outputVideo.mp4?AWSAccessKeyId=AKIAVJAW2AD2SQVQCBXV&Expires=1699998768&Signature=zdEMCGzf4Pq++16YkPprvN5NAds=)',\n ],\n ['Hi @getstream.io', 'Hi @getstream.io'],\n [\n 'Hi test@gmail.com @test@gmail.com',\n 'Hi [test@gmail.com](mailto:test@gmail.com) @test@gmail.com',\n ],\n ['Hi @getstream.io getstream.io', 'Hi @getstream.io [getstream.io](http://getstream.io)'],\n ['Hi <Stream>', 'Hi \\\\<Stream\\\\>'],\n ])('Returns the generated markdown text for %p and %p', (text, expected) => {\n const result = generateMarkdownText(text);\n expect(result).toBe(expected);\n });\n});\n"],"mappings":"AAAA,IAAAA,qBAAA,GAAAC,OAAA;AAEAC,QAAQ,CAAC,sBAAsB,EAAE,YAAM;EACrCC,EAAE,CAACC,IAAI,CAAC,CACN,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,kBAAkB,EAAE,cAAc,CAAC,EACpC,CAAC,0BAA0B,EAAE,sDAAsD,CAAC,EACpF,CACE,gQAAgQ,EAChQ,4cAA4c,CAC7c,EACD,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,EACxC,CACE,mCAAmC,EACnC,4DAA4D,CAC7D,EACD,CAAC,+BAA+B,EAAE,sDAAsD,CAAC,EACzF,CAAC,aAAa,EAAE,iBAAiB,CAAC,CACnC,CAAC,CAAC,mDAAmD,EAAE,UAACC,IAAI,EAAEC,QAAQ,EAAK;IAC1E,IAAMC,MAAM,GAAG,IAAAC,0CAAoB,EAACH,IAAI,CAAC;IACzCI,MAAM,CAACF,MAAM,CAAC,CAACG,IAAI,CAACJ,QAAQ,CAAC;EAC/B,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -64,7 +64,8 @@ var renderText = function renderText(params) {
64
64
  onlyEmojis = params.onlyEmojis,
65
65
  onPressParam = params.onPress,
66
66
  preventPress = params.preventPress;
67
- var markdownText = (0, _generateMarkdownText.generateMarkdownText)(message);
67
+ var text = message.text;
68
+ var markdownText = (0, _generateMarkdownText.generateMarkdownText)(text);
68
69
  var styles = (0, _extends2["default"])({}, defaultMarkdownStyles, markdownStyles, {
69
70
  autolink: (0, _extends2["default"])({}, defaultMarkdownStyles.autolink, {
70
71
  color: colors.accent_blue
@@ -90,9 +91,16 @@ var renderText = function renderText(params) {
90
91
  return canOpenUrl && _reactNative.Linking.openURL(url);
91
92
  });
92
93
  };
94
+ var previousLink;
93
95
  var linkReact = function linkReact(node, output, _ref) {
94
96
  var state = (0, _extends2["default"])({}, ((0, _objectDestructuringEmpty2["default"])(_ref), _ref));
95
- var url = node.target;
97
+ var url;
98
+ if (state != null && state.withinLink && previousLink) {
99
+ url = previousLink;
100
+ } else {
101
+ url = node.target;
102
+ previousLink = node.target;
103
+ }
96
104
  var onPress = function onPress(event) {
97
105
  if (!preventPress && onPressParam) {
98
106
  onPressParam({
@@ -127,7 +135,7 @@ var renderText = function renderText(params) {
127
135
  __self: _this,
128
136
  __source: {
129
137
  fileName: _jsxFileName,
130
- lineNumber: 170,
138
+ lineNumber: 180,
131
139
  columnNumber: 7
132
140
  }
133
141
  }, output(node.content, (0, _extends2["default"])({}, state, {
@@ -145,7 +153,7 @@ var renderText = function renderText(params) {
145
153
  __self: _this,
146
154
  __source: {
147
155
  fileName: _jsxFileName,
148
- lineNumber: 188,
156
+ lineNumber: 198,
149
157
  columnNumber: 11
150
158
  }
151
159
  }, output(node.content, state));
@@ -159,7 +167,7 @@ var renderText = function renderText(params) {
159
167
  __self: _this,
160
168
  __source: {
161
169
  fileName: _jsxFileName,
162
- lineNumber: 198,
170
+ lineNumber: 208,
163
171
  columnNumber: 7
164
172
  }
165
173
  }, output(node.content, state));
@@ -211,7 +219,7 @@ var renderText = function renderText(params) {
211
219
  __self: _this,
212
220
  __source: {
213
221
  fileName: _jsxFileName,
214
- lineNumber: 253,
222
+ lineNumber: 263,
215
223
  columnNumber: 7
216
224
  }
217
225
  }, Array.isArray(node.content) ? node.content.reduce(function (acc, current) {
@@ -228,7 +236,7 @@ var renderText = function renderText(params) {
228
236
  __self: _this,
229
237
  __source: {
230
238
  fileName: _jsxFileName,
231
- lineNumber: 262,
239
+ lineNumber: 272,
232
240
  columnNumber: 5
233
241
  }
234
242
  });
@@ -272,7 +280,7 @@ var renderText = function renderText(params) {
272
280
  __self: _this,
273
281
  __source: {
274
282
  fileName: _jsxFileName,
275
- lineNumber: 294,
283
+ lineNumber: 304,
276
284
  columnNumber: 5
277
285
  }
278
286
  }, markdownText);
@@ -291,7 +299,7 @@ var ListOutput = function ListOutput(_ref4) {
291
299
  __self: _this,
292
300
  __source: {
293
301
  fileName: _jsxFileName,
294
- lineNumber: 329,
302
+ lineNumber: 339,
295
303
  columnNumber: 5
296
304
  }
297
305
  }, node.items.map(function (item, index) {
@@ -305,7 +313,7 @@ var ListOutput = function ListOutput(_ref4) {
305
313
  __self: _this,
306
314
  __source: {
307
315
  fileName: _jsxFileName,
308
- lineNumber: 335,
316
+ lineNumber: 345,
309
317
  columnNumber: 13
310
318
  }
311
319
  }, _react["default"].createElement(Bullet, {
@@ -314,7 +322,7 @@ var ListOutput = function ListOutput(_ref4) {
314
322
  __self: _this,
315
323
  __source: {
316
324
  fileName: _jsxFileName,
317
- lineNumber: 336,
325
+ lineNumber: 346,
318
326
  columnNumber: 15
319
327
  }
320
328
  }));
@@ -331,7 +339,7 @@ var ListOutput = function ListOutput(_ref4) {
331
339
  __self: _this,
332
340
  __source: {
333
341
  fileName: _jsxFileName,
334
- lineNumber: 349,
342
+ lineNumber: 359,
335
343
  columnNumber: 11
336
344
  }
337
345
  }, _react["default"].createElement(Bullet, {
@@ -340,7 +348,7 @@ var ListOutput = function ListOutput(_ref4) {
340
348
  __self: _this,
341
349
  __source: {
342
350
  fileName: _jsxFileName,
343
- lineNumber: 350,
351
+ lineNumber: 360,
344
352
  columnNumber: 13
345
353
  }
346
354
  }), _react["default"].createElement(ListItem, {
@@ -349,7 +357,7 @@ var ListOutput = function ListOutput(_ref4) {
349
357
  __self: _this,
350
358
  __source: {
351
359
  fileName: _jsxFileName,
352
- lineNumber: 354,
360
+ lineNumber: 364,
353
361
  columnNumber: 13
354
362
  }
355
363
  }, output(item, state)));
@@ -365,7 +373,7 @@ var Bullet = function Bullet(_ref5) {
365
373
  __self: _this,
366
374
  __source: {
367
375
  fileName: _jsxFileName,
368
- lineNumber: 369,
376
+ lineNumber: 379,
369
377
  columnNumber: 3
370
378
  }
371
379
  }, index ? index + ". " : "\u2022 ");
@@ -378,7 +386,7 @@ var ListRow = function ListRow(_ref6) {
378
386
  __self: _this,
379
387
  __source: {
380
388
  fileName: _jsxFileName,
381
- lineNumber: 375,
389
+ lineNumber: 385,
382
390
  columnNumber: 3
383
391
  }
384
392
  }, children);
@@ -391,7 +399,7 @@ var ListItem = function ListItem(_ref7) {
391
399
  __self: _this,
392
400
  __source: {
393
401
  fileName: _jsxFileName,
394
- lineNumber: 379,
402
+ lineNumber: 389,
395
403
  columnNumber: 3
396
404
  }
397
405
  }, children);
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeMarkdownPackage","_simpleMarkdown","_generateMarkdownText","_this","_jsxFileName","defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemNumber","fontWeight","listItemText","flex","listRow","flexDirection","mentions","paragraph","paragraphCenter","paragraphWithImage","mentionsParseFunction","capture","parse","state","content","parseInline","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","messageTextNumberOfLines","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","markdownText","generateMarkdownText","styles","_extends2","autolink","color","accent_blue","backgroundColor","white_smoke","borderColor","grey_gainsboro","accent_red","text","black","url","pattern","RegExp","test","Linking","canOpenURL","then","canOpenUrl","openURL","linkReact","node","output","_ref","_objectDestructuringEmpty2","target","event","additionalInfo","defaultHandler","emitter","createElement","Text","key","style","suppressHighlighting","__self","__source","fileName","lineNumber","columnNumber","withinLink","paragraphTextReact","_ref2","undefined","numberOfLines","mentioned_users","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","length","replace","match","regEx","mentionsMatchFunction","source","exec","mentionsReact","_ref3","_node$content$","_node$content$$conten","substring","user","find","current","listReact","ListOutput","customRules","image","link","react","reflink","sublist","order","defaultRules","JSON","stringify","rules","exports","_ref4","isSublist","withinList","parentTypes","View","items","map","item","index","_item$","indexAfterStart","start","ListRow","testID","Bullet","ordered","listItemBullet","type","isSublistWithinText","includes","ListItem","_ref5","_ref6","children","_ref7"],"sources":["renderText.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { GestureResponderEvent, Linking, Text, TextProps, View, ViewProps } from 'react-native';\n\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\n\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n ReactOutput,\n SingleASTNode,\n State,\n} from 'simple-markdown';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { generateMarkdownText } from './generateMarkdownText';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst mentionsParseFunction: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<StreamChatGenerics>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n params: RenderTextParams<StreamChatGenerics>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n const markdownText = generateMarkdownText<StreamChatGenerics>(message);\n\n const styles: MarkdownStyle = {\n ...defaultMarkdownStyles,\n ...markdownStyles,\n autolink: {\n ...defaultMarkdownStyles.autolink,\n color: colors.accent_blue,\n ...markdownStyles?.autolink,\n },\n inlineCode: {\n ...defaultMarkdownStyles.inlineCode,\n backgroundColor: colors.white_smoke,\n borderColor: colors.grey_gainsboro,\n color: colors.accent_red,\n ...markdownStyles?.inlineCode,\n },\n mentions: {\n ...defaultMarkdownStyles.mentions,\n color: colors.accent_blue,\n ...markdownStyles?.mentions,\n },\n text: {\n ...defaultMarkdownStyles.text,\n color: colors.black,\n ...markdownStyles?.text,\n },\n };\n\n const onLink = (url: string) => {\n const pattern = new RegExp(/^\\S+:\\/\\//);\n if (!pattern.test(url)) {\n url = 'http://' + url;\n }\n\n return onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n };\n\n const linkReact: ReactNodeOutput = (node, output, { ...state }) => {\n const url = node.target;\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: { url },\n defaultHandler: () => {\n onLink(url);\n },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n additionalInfo: { url },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphTextReact: ReactNodeOutput = (node, output, { ...state }) => {\n if (messageTextNumberOfLines !== undefined) {\n // If we want to truncate the message text, lets only truncate the first paragraph\n // and simply not render rest of the paragraphs.\n if (state.key === '0' || state.key === 0) {\n return (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n } else {\n return null;\n }\n }\n\n return (\n <Text key={state.key} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n };\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users } = message;\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName.replace(\n /[.*+?^${}()|[\\]\\\\]/g,\n function (match) {\n return '\\\\' + match;\n },\n )}`;\n }\n\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const mentionsMatchFunction: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n /**removes the @ prefix of username */\n const userName = node.content[0]?.content?.substring(1);\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: {\n user: mentioned_users?.find(\n (user: UserResponse<StreamChatGenerics>) => userName === user.name,\n ),\n },\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content)\n ? node.content.reduce((acc, current) => acc + current.content, '') || ''\n : output(node.content, state)}\n </Text>\n );\n };\n\n const listReact: ReactNodeOutput = (node, output, state) => (\n <ListOutput\n key={`list-${state.key}`}\n node={node}\n output={output}\n state={state}\n styles={styles}\n />\n );\n\n const customRules = {\n // do not render images, we will scrape them out of the message and show on attachment card component\n image: { match: () => null },\n link: { react: linkReact },\n list: { react: listReact },\n // Truncate long text content in the message overlay\n paragraph: messageTextNumberOfLines ? { react: paragraphTextReact } : {},\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\n sublist: { react: listReact },\n ...(mentionedUsers\n ? {\n mentions: {\n match: mentionsMatchFunction,\n order: defaultRules.text.order - 0.5,\n parse: mentionsParseFunction,\n react: mentionsReact,\n },\n }\n : {}),\n };\n\n return (\n <Markdown\n key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${\n messageOverlay ? JSON.stringify(markdownStyles) : undefined\n }-${JSON.stringify(colors)}`}\n onLink={onLink}\n rules={{\n ...customRules,\n ...markdownRules,\n }}\n styles={styles}\n >\n {markdownText}\n </Markdown>\n );\n};\n\nexport interface ListOutputProps {\n node: SingleASTNode;\n output: ReactOutput;\n state: State;\n styles?: Partial<MarkdownStyle>;\n}\n\n/**\n * For lists and sublists, the default behavior of the markdown library we use is\n * to always renumber any list, so all ordered lists start from 1.\n *\n * This custom rule overrides this behavior both for top level lists and sublists,\n * in order to start the numbering from the number of the first list item provided.\n */\nexport const ListOutput = ({ node, output, state, styles }: ListOutputProps) => {\n let isSublist = state.withinList;\n const parentTypes = ['text', 'paragraph', 'strong'];\n\n return (\n <View key={state.key} style={isSublist ? styles?.sublist : styles?.list}>\n {node.items.map((item: SingleASTNode, index: number) => {\n const indexAfterStart = node.start + index;\n\n if (item === null) {\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n </ListRow>\n );\n }\n\n isSublist = item.length > 1 && item[1].type === 'list';\n const isSublistWithinText = parentTypes.includes((item[0] ?? {}).type) && isSublist;\n const style = isSublistWithinText ? { marginBottom: 0 } : {};\n\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n <ListItem key={1} style={[styles?.listItemText, style]}>\n {output(item, state)}\n </ListItem>\n </ListRow>\n );\n })}\n </View>\n );\n};\n\ninterface BulletProps extends TextProps {\n index?: number;\n}\n\nconst Bullet = ({ index, style }: BulletProps) => (\n <Text key={0} style={style}>\n {index ? `${index}. ` : '\\u2022 '}\n </Text>\n);\n\nconst ListRow = ({ children, style }: PropsWithChildren<ViewProps>) => (\n <Text style={style}>{children}</Text>\n);\n\nconst ListItem = ({ children, style }: PropsWithChildren<TextProps>) => (\n <Text style={style}>{children}</Text>\n);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeMarkdownPackage","_simpleMarkdown","_generateMarkdownText","_this","_jsxFileName","defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemNumber","fontWeight","listItemText","flex","listRow","flexDirection","mentions","paragraph","paragraphCenter","paragraphWithImage","mentionsParseFunction","capture","parse","state","content","parseInline","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","messageTextNumberOfLines","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","text","markdownText","generateMarkdownText","styles","_extends2","autolink","color","accent_blue","backgroundColor","white_smoke","borderColor","grey_gainsboro","accent_red","black","url","pattern","RegExp","test","Linking","canOpenURL","then","canOpenUrl","openURL","previousLink","linkReact","node","output","_ref","_objectDestructuringEmpty2","withinLink","target","event","additionalInfo","defaultHandler","emitter","createElement","Text","key","style","suppressHighlighting","__self","__source","fileName","lineNumber","columnNumber","paragraphTextReact","_ref2","undefined","numberOfLines","mentioned_users","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","length","replace","match","regEx","mentionsMatchFunction","source","exec","mentionsReact","_ref3","_node$content$","_node$content$$conten","substring","user","find","current","listReact","ListOutput","customRules","image","link","react","reflink","sublist","order","defaultRules","JSON","stringify","rules","exports","_ref4","isSublist","withinList","parentTypes","View","items","map","item","index","_item$","indexAfterStart","start","ListRow","testID","Bullet","ordered","listItemBullet","type","isSublistWithinText","includes","ListItem","_ref5","_ref6","children","_ref7"],"sources":["renderText.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { GestureResponderEvent, Linking, Text, TextProps, View, ViewProps } from 'react-native';\n\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\n\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n ReactOutput,\n SingleASTNode,\n State,\n} from 'simple-markdown';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { generateMarkdownText } from './generateMarkdownText';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst mentionsParseFunction: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<StreamChatGenerics>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n params: RenderTextParams<StreamChatGenerics>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n const { text } = message;\n\n const markdownText = generateMarkdownText(text);\n\n const styles: MarkdownStyle = {\n ...defaultMarkdownStyles,\n ...markdownStyles,\n autolink: {\n ...defaultMarkdownStyles.autolink,\n color: colors.accent_blue,\n ...markdownStyles?.autolink,\n },\n inlineCode: {\n ...defaultMarkdownStyles.inlineCode,\n backgroundColor: colors.white_smoke,\n borderColor: colors.grey_gainsboro,\n color: colors.accent_red,\n ...markdownStyles?.inlineCode,\n },\n mentions: {\n ...defaultMarkdownStyles.mentions,\n color: colors.accent_blue,\n ...markdownStyles?.mentions,\n },\n text: {\n ...defaultMarkdownStyles.text,\n color: colors.black,\n ...markdownStyles?.text,\n },\n };\n\n const onLink = (url: string) => {\n const pattern = new RegExp(/^\\S+:\\/\\//);\n if (!pattern.test(url)) {\n url = 'http://' + url;\n }\n\n return onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n };\n\n let previousLink: string | undefined;\n const linkReact: ReactNodeOutput = (node, output, { ...state }) => {\n let url: string;\n // Some long URLs with `&` separated parameters are trimmed and the url only until first param is taken.\n // This is done because of internal link been taken from the original URL in react-native-markdown-package. So, we check for `withinLink` and take the previous full URL.\n if (state?.withinLink && previousLink) {\n url = previousLink;\n } else {\n url = node.target;\n previousLink = node.target;\n }\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: { url },\n defaultHandler: () => {\n onLink(url);\n },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n additionalInfo: { url },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphTextReact: ReactNodeOutput = (node, output, { ...state }) => {\n if (messageTextNumberOfLines !== undefined) {\n // If we want to truncate the message text, lets only truncate the first paragraph\n // and simply not render rest of the paragraphs.\n if (state.key === '0' || state.key === 0) {\n return (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n } else {\n return null;\n }\n }\n\n return (\n <Text key={state.key} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n };\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users } = message;\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName.replace(\n /[.*+?^${}()|[\\]\\\\]/g,\n function (match) {\n return '\\\\' + match;\n },\n )}`;\n }\n\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const mentionsMatchFunction: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n /**removes the @ prefix of username */\n const userName = node.content[0]?.content?.substring(1);\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: {\n user: mentioned_users?.find(\n (user: UserResponse<StreamChatGenerics>) => userName === user.name,\n ),\n },\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content)\n ? node.content.reduce((acc, current) => acc + current.content, '') || ''\n : output(node.content, state)}\n </Text>\n );\n };\n\n const listReact: ReactNodeOutput = (node, output, state) => (\n <ListOutput\n key={`list-${state.key}`}\n node={node}\n output={output}\n state={state}\n styles={styles}\n />\n );\n\n const customRules = {\n // do not render images, we will scrape them out of the message and show on attachment card component\n image: { match: () => null },\n link: { react: linkReact },\n list: { react: listReact },\n // Truncate long text content in the message overlay\n paragraph: messageTextNumberOfLines ? { react: paragraphTextReact } : {},\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\n sublist: { react: listReact },\n ...(mentionedUsers\n ? {\n mentions: {\n match: mentionsMatchFunction,\n order: defaultRules.text.order - 0.5,\n parse: mentionsParseFunction,\n react: mentionsReact,\n },\n }\n : {}),\n };\n\n return (\n <Markdown\n key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${\n messageOverlay ? JSON.stringify(markdownStyles) : undefined\n }-${JSON.stringify(colors)}`}\n onLink={onLink}\n rules={{\n ...customRules,\n ...markdownRules,\n }}\n styles={styles}\n >\n {markdownText}\n </Markdown>\n );\n};\n\nexport interface ListOutputProps {\n node: SingleASTNode;\n output: ReactOutput;\n state: State;\n styles?: Partial<MarkdownStyle>;\n}\n\n/**\n * For lists and sublists, the default behavior of the markdown library we use is\n * to always renumber any list, so all ordered lists start from 1.\n *\n * This custom rule overrides this behavior both for top level lists and sublists,\n * in order to start the numbering from the number of the first list item provided.\n */\nexport const ListOutput = ({ node, output, state, styles }: ListOutputProps) => {\n let isSublist = state.withinList;\n const parentTypes = ['text', 'paragraph', 'strong'];\n\n return (\n <View key={state.key} style={isSublist ? styles?.sublist : styles?.list}>\n {node.items.map((item: SingleASTNode, index: number) => {\n const indexAfterStart = node.start + index;\n\n if (item === null) {\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n </ListRow>\n );\n }\n\n isSublist = item.length > 1 && item[1].type === 'list';\n const isSublistWithinText = parentTypes.includes((item[0] ?? {}).type) && isSublist;\n const style = isSublistWithinText ? { marginBottom: 0 } : {};\n\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n <ListItem key={1} style={[styles?.listItemText, style]}>\n {output(item, state)}\n </ListItem>\n </ListRow>\n );\n })}\n </View>\n );\n};\n\ninterface BulletProps extends TextProps {\n index?: number;\n}\n\nconst Bullet = ({ index, style }: BulletProps) => (\n <Text key={0} style={style}>\n {index ? `${index}. ` : '\\u2022 '}\n </Text>\n);\n\nconst ListRow = ({ children, style }: PropsWithChildren<ViewProps>) => (\n <Text style={style}>{children}</Text>\n);\n\nconst ListItem = ({ children, style }: PropsWithChildren<TextProps>) => (\n <Text style={style}>{children}</Text>\n);\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAGA,IAAAE,2BAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,eAAA,GAAAH,OAAA;AAcA,IAAAI,qBAAA,GAAAJ,OAAA;AAA8D,IAAAK,KAAA;EAAAC,YAAA;AAO9D,IAAMC,qBAAoC,GAAG;EAC3CC,UAAU,EAAE;IACVC,QAAQ,EAAE,EAAE;IACZC,OAAO,EAAE,CAAC;IACVC,iBAAiB,EAAE;EACrB,CAAC;EACDC,IAAI,EAAE;IACJC,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE;EACb,CAAC;EACDC,cAAc,EAAE;IACdC,UAAU,EAAE;EACd,CAAC;EACDC,YAAY,EAAE;IACZC,IAAI,EAAE;EACR,CAAC;EACDC,OAAO,EAAE;IACPC,aAAa,EAAE;EACjB,CAAC;EACDC,QAAQ,EAAE;IACRL,UAAU,EAAE;EACd,CAAC;EACDM,SAAS,EAAE;IACTT,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE;EACb,CAAC;EACDS,eAAe,EAAE;IACfV,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE;EACb,CAAC;EACDU,kBAAkB,EAAE;IAClBX,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE;EACb;AACF,CAAC;AAED,IAAMW,qBAAoC,GAAG,SAAvCA,qBAAoCA,CAAIC,OAAO,EAAEC,KAAK,EAAEC,KAAK;EAAA,OAAM;IACvEC,OAAO,EAAE,IAAAC,2BAAW,EAACH,KAAK,EAAED,OAAO,CAAC,CAAC,CAAC,EAAEE,KAAK;EAC/C,CAAC;AAAA,CAAC;AAmBK,IAAMG,UAAU,GAAG,SAAbA,UAAUA,CAGrBC,MAA4C,EACzC;EACH,IACEC,MAAM,GAWJD,MAAM,CAXRC,MAAM;IACNC,aAAa,GAUXF,MAAM,CAVRE,aAAa;IACbC,cAAc,GASZH,MAAM,CATRG,cAAc;IACdC,OAAO,GAQLJ,MAAM,CARRI,OAAO;IACPC,cAAc,GAOZL,MAAM,CAPRK,cAAc;IACdC,wBAAwB,GAMtBN,MAAM,CANRM,wBAAwB;IAChBC,YAAY,GAKlBP,MAAM,CALRQ,MAAM;IACOC,gBAAgB,GAI3BT,MAAM,CAJRU,WAAW;IACXC,UAAU,GAGRX,MAAM,CAHRW,UAAU;IACDC,YAAY,GAEnBZ,MAAM,CAFRa,OAAO;IACPC,YAAY,GACVd,MAAM,CADRc,YAAY;EAEd,IAAQC,IAAI,GAAKX,OAAO,CAAhBW,IAAI;EAEZ,IAAMC,YAAY,GAAG,IAAAC,0CAAoB,EAACF,IAAI,CAAC;EAE/C,IAAMG,MAAqB,OAAAC,SAAA,iBACtB5C,qBAAqB,EACrB4B,cAAc;IACjBiB,QAAQ,MAAAD,SAAA,iBACH5C,qBAAqB,CAAC6C,QAAQ;MACjCC,KAAK,EAAEpB,MAAM,CAACqB;IAAW,GACtBnB,cAAc,oBAAdA,cAAc,CAAEiB,QAAQ,CAC5B;IACD5C,UAAU,MAAA2C,SAAA,iBACL5C,qBAAqB,CAACC,UAAU;MACnC+C,eAAe,EAAEtB,MAAM,CAACuB,WAAW;MACnCC,WAAW,EAAExB,MAAM,CAACyB,cAAc;MAClCL,KAAK,EAAEpB,MAAM,CAAC0B;IAAU,GACrBxB,cAAc,oBAAdA,cAAc,CAAE3B,UAAU,CAC9B;IACDa,QAAQ,MAAA8B,SAAA,iBACH5C,qBAAqB,CAACc,QAAQ;MACjCgC,KAAK,EAAEpB,MAAM,CAACqB;IAAW,GACtBnB,cAAc,oBAAdA,cAAc,CAAEd,QAAQ,CAC5B;IACD0B,IAAI,MAAAI,SAAA,iBACC5C,qBAAqB,CAACwC,IAAI;MAC7BM,KAAK,EAAEpB,MAAM,CAAC2B;IAAK,GAChBzB,cAAc,oBAAdA,cAAc,CAAEY,IAAI;EACxB,EACF;EAED,IAAMP,MAAM,GAAG,SAATA,MAAMA,CAAIqB,GAAW,EAAK;IAC9B,IAAMC,OAAO,GAAG,IAAIC,MAAM,CAAC,WAAW,CAAC;IACvC,IAAI,CAACD,OAAO,CAACE,IAAI,CAACH,GAAG,CAAC,EAAE;MACtBA,GAAG,GAAG,SAAS,GAAGA,GAAG;IACvB;IAEA,OAAOtB,YAAY,GACfA,YAAY,CAACsB,GAAG,CAAC,GACjBI,oBAAO,CAACC,UAAU,CAACL,GAAG,CAAC,CAACM,IAAI,CAAC,UAACC,UAAU;MAAA,OAAKA,UAAU,IAAIH,oBAAO,CAACI,OAAO,CAACR,GAAG,CAAC;IAAA,EAAC;EACtF,CAAC;EAED,IAAIS,YAAgC;EACpC,IAAMC,SAA0B,GAAG,SAA7BA,SAA0BA,CAAIC,IAAI,EAAEC,MAAM,EAAAC,IAAA,EAAmB;IAAA,IAAZ9C,KAAK,OAAAuB,SAAA,sBAAAwB,0BAAA,aAAAD,IAAA,GAAAA,IAAA;IAC1D,IAAIb,GAAW;IAGf,IAAIjC,KAAK,YAALA,KAAK,CAAEgD,UAAU,IAAIN,YAAY,EAAE;MACrCT,GAAG,GAAGS,YAAY;IACpB,CAAC,MAAM;MACLT,GAAG,GAAGW,IAAI,CAACK,MAAM;MACjBP,YAAY,GAAGE,IAAI,CAACK,MAAM;IAC5B;IACA,IAAMhC,OAAO,GAAG,SAAVA,OAAOA,CAAIiC,KAA4B,EAAK;MAChD,IAAI,CAAChC,YAAY,IAAIF,YAAY,EAAE;QACjCA,YAAY,CAAC;UACXmC,cAAc,EAAE;YAAElB,GAAG,EAAHA;UAAI,CAAC;UACvBmB,cAAc,EAAE,SAAAA,eAAA,EAAM;YACpBxC,MAAM,CAACqB,GAAG,CAAC;UACb,CAAC;UACDoB,OAAO,EAAE,UAAU;UACnBH,KAAK,EAALA;QACF,CAAC,CAAC;MACJ;IACF,CAAC;IAED,IAAMpC,WAAW,GAAG,SAAdA,WAAWA,CAAIoC,KAA4B,EAAK;MACpD,IAAI,CAAChC,YAAY,IAAIL,gBAAgB,EAAE;QACrCA,gBAAgB,CAAC;UACfsC,cAAc,EAAE;YAAElB,GAAG,EAAHA;UAAI,CAAC;UACvBoB,OAAO,EAAE,UAAU;UACnBH,KAAK,EAALA;QACF,CAAC,CAAC;MACJ;IACF,CAAC;IAED,OACEhF,MAAA,YAAAoF,aAAA,CAACjF,YAAA,CAAAkF,IAAI;MACHC,GAAG,EAAExD,KAAK,CAACwD,GAAI;MACf1C,WAAW,EAAEA,WAAY;MACzBG,OAAO,EAAEA,OAAQ;MACjBwC,KAAK,EAAEnC,MAAM,CAACE,QAAS;MACvBkC,oBAAoB,EAAE,IAAK;MAAAC,MAAA,EAAAlF,KAAA;MAAAmF,QAAA;QAAAC,QAAA,EAAAnF,YAAA;QAAAoF,UAAA;QAAAC,YAAA;MAAA;IAAA,GAE1BlB,MAAM,CAACD,IAAI,CAAC3C,OAAO,MAAAsB,SAAA,iBAAOvB,KAAK;MAAEgD,UAAU,EAAE;IAAI,EAAE,CAChD,CAAC;EAEX,CAAC;EAED,IAAMgB,kBAAmC,GAAG,SAAtCA,kBAAmCA,CAAIpB,IAAI,EAAEC,MAAM,EAAAoB,KAAA,EAAmB;IAAA,IAAZjE,KAAK,OAAAuB,SAAA,sBAAAwB,0BAAA,aAAAkB,KAAA,GAAAA,KAAA;IACnE,IAAIvD,wBAAwB,KAAKwD,SAAS,EAAE;MAG1C,IAAIlE,KAAK,CAACwD,GAAG,KAAK,GAAG,IAAIxD,KAAK,CAACwD,GAAG,KAAK,CAAC,EAAE;QACxC,OACEtF,MAAA,YAAAoF,aAAA,CAACjF,YAAA,CAAAkF,IAAI;UAACC,GAAG,EAAExD,KAAK,CAACwD,GAAI;UAACW,aAAa,EAAEzD,wBAAyB;UAAC+C,KAAK,EAAEnC,MAAM,CAAC5B,SAAU;UAAAiE,MAAA,EAAAlF,KAAA;UAAAmF,QAAA;YAAAC,QAAA,EAAAnF,YAAA;YAAAoF,UAAA;YAAAC,YAAA;UAAA;QAAA,GACpFlB,MAAM,CAACD,IAAI,CAAC3C,OAAO,EAAED,KAAK,CACvB,CAAC;MAEX,CAAC,MAAM;QACL,OAAO,IAAI;MACb;IACF;IAEA,OACE9B,MAAA,YAAAoF,aAAA,CAACjF,YAAA,CAAAkF,IAAI;MAACC,GAAG,EAAExD,KAAK,CAACwD,GAAI;MAACC,KAAK,EAAEnC,MAAM,CAAC5B,SAAU;MAAAiE,MAAA,EAAAlF,KAAA;MAAAmF,QAAA;QAAAC,QAAA,EAAAnF,YAAA;QAAAoF,UAAA;QAAAC,YAAA;MAAA;IAAA,GAC3ClB,MAAM,CAACD,IAAI,CAAC3C,OAAO,EAAED,KAAK,CACvB,CAAC;EAEX,CAAC;EAID,IAAQoE,eAAe,GAAK5D,OAAO,CAA3B4D,eAAe;EACvB,IAAMC,cAAc,GAAGC,KAAK,CAACC,OAAO,CAACH,eAAe,CAAC,GACjDA,eAAe,CAACI,MAAM,CAAC,UAACC,GAAG,EAAEC,GAAG,EAAK;IACnC,IAAMC,QAAQ,GAAGD,GAAG,CAACE,IAAI,IAAIF,GAAG,CAACG,EAAE,IAAI,EAAE;IACzC,IAAIF,QAAQ,EAAE;MACZF,GAAG,KAAOA,GAAG,CAACK,MAAM,GAAG,GAAG,GAAG,EAAE,UAAIH,QAAQ,CAACI,OAAO,CACjD,qBAAqB,EACrB,UAAUC,KAAK,EAAE;QACf,OAAO,IAAI,GAAGA,KAAK;MACrB,CACF,CAAG;IACL;IAEA,OAAOP,GAAG;EACZ,CAAC,EAAE,EAAE,CAAC,GACN,EAAE;EAEN,IAAMQ,KAAK,GAAG,IAAI9C,MAAM,WAASkC,cAAc,QAAK,GAAG,CAAC;EACxD,IAAMa,qBAAoC,GAAG,SAAvCA,qBAAoCA,CAAIC,MAAM;IAAA,OAAKF,KAAK,CAACG,IAAI,CAACD,MAAM,CAAC;EAAA;EAE3E,IAAME,aAA8B,GAAG,SAAjCA,aAA8BA,CAAIzC,IAAI,EAAEC,MAAM,EAAAyC,KAAA,EAAmB;IAAA,IAAAC,cAAA,EAAAC,qBAAA;IAAA,IAAZxF,KAAK,OAAAuB,SAAA,sBAAAwB,0BAAA,aAAAuC,KAAA,GAAAA,KAAA;IAE9D,IAAMX,QAAQ,IAAAY,cAAA,GAAG3C,IAAI,CAAC3C,OAAO,CAAC,CAAC,CAAC,sBAAAuF,qBAAA,GAAfD,cAAA,CAAiBtF,OAAO,qBAAxBuF,qBAAA,CAA0BC,SAAS,CAAC,CAAC,CAAC;IACvD,IAAMxE,OAAO,GAAG,SAAVA,OAAOA,CAAIiC,KAA4B,EAAK;MAChD,IAAI,CAAChC,YAAY,IAAIF,YAAY,EAAE;QACjCA,YAAY,CAAC;UACXmC,cAAc,EAAE;YACduC,IAAI,EAAEtB,eAAe,oBAAfA,eAAe,CAAEuB,IAAI,CACzB,UAACD,IAAsC;cAAA,OAAKf,QAAQ,KAAKe,IAAI,CAACd,IAAI;YAAA,CACpE;UACF,CAAC;UACDvB,OAAO,EAAE,aAAa;UACtBH,KAAK,EAALA;QACF,CAAC,CAAC;MACJ;IACF,CAAC;IAED,IAAMpC,WAAW,GAAG,SAAdA,WAAWA,CAAIoC,KAA4B,EAAK;MACpD,IAAI,CAAChC,YAAY,IAAIL,gBAAgB,EAAE;QACrCA,gBAAgB,CAAC;UACfwC,OAAO,EAAE,aAAa;UACtBH,KAAK,EAALA;QACF,CAAC,CAAC;MACJ;IACF,CAAC;IAED,OACEhF,MAAA,YAAAoF,aAAA,CAACjF,YAAA,CAAAkF,IAAI;MAACC,GAAG,EAAExD,KAAK,CAACwD,GAAI;MAAC1C,WAAW,EAAEA,WAAY;MAACG,OAAO,EAAEA,OAAQ;MAACwC,KAAK,EAAEnC,MAAM,CAAC7B,QAAS;MAAAkE,MAAA,EAAAlF,KAAA;MAAAmF,QAAA;QAAAC,QAAA,EAAAnF,YAAA;QAAAoF,UAAA;QAAAC,YAAA;MAAA;IAAA,GACtFO,KAAK,CAACC,OAAO,CAAC3B,IAAI,CAAC3C,OAAO,CAAC,GACxB2C,IAAI,CAAC3C,OAAO,CAACuE,MAAM,CAAC,UAACC,GAAG,EAAEmB,OAAO;MAAA,OAAKnB,GAAG,GAAGmB,OAAO,CAAC3F,OAAO;IAAA,GAAE,EAAE,CAAC,IAAI,EAAE,GACtE4C,MAAM,CAACD,IAAI,CAAC3C,OAAO,EAAED,KAAK,CAC1B,CAAC;EAEX,CAAC;EAED,IAAM6F,SAA0B,GAAG,SAA7BA,SAA0BA,CAAIjD,IAAI,EAAEC,MAAM,EAAE7C,KAAK;IAAA,OACrD9B,MAAA,YAAAoF,aAAA,CAACwC,UAAU;MACTtC,GAAG,YAAUxD,KAAK,CAACwD,GAAM;MACzBZ,IAAI,EAAEA,IAAK;MACXC,MAAM,EAAEA,MAAO;MACf7C,KAAK,EAAEA,KAAM;MACbsB,MAAM,EAAEA,MAAO;MAAAqC,MAAA,EAAAlF,KAAA;MAAAmF,QAAA;QAAAC,QAAA,EAAAnF,YAAA;QAAAoF,UAAA;QAAAC,YAAA;MAAA;IAAA,CAChB,CAAC;EAAA,CACH;EAED,IAAMgC,WAAW,OAAAxE,SAAA;IAEfyE,KAAK,EAAE;MAAEhB,KAAK,EAAE,SAAAA,MAAA;QAAA,OAAM,IAAI;MAAA;IAAC,CAAC;IAC5BiB,IAAI,EAAE;MAAEC,KAAK,EAAEvD;IAAU,CAAC;IAC1B3D,IAAI,EAAE;MAAEkH,KAAK,EAAEL;IAAU,CAAC;IAE1BnG,SAAS,EAAEgB,wBAAwB,GAAG;MAAEwF,KAAK,EAAElC;IAAmB,CAAC,GAAG,CAAC,CAAC;IAExEmC,OAAO,EAAE;MAAEnB,KAAK,EAAE,SAAAA,MAAA;QAAA,OAAM,IAAI;MAAA;IAAC,CAAC;IAC9BoB,OAAO,EAAE;MAAEF,KAAK,EAAEL;IAAU;EAAC,GACzBxB,cAAc,GACd;IACE5E,QAAQ,EAAE;MACRuF,KAAK,EAAEE,qBAAqB;MAC5BmB,KAAK,EAAEC,4BAAY,CAACnF,IAAI,CAACkF,KAAK,GAAG,GAAG;MACpCtG,KAAK,EAAEF,qBAAqB;MAC5BqG,KAAK,EAAEb;IACT;EACF,CAAC,GACD,CAAC,CAAC,CACP;EAED,OACEnH,MAAA,YAAAoF,aAAA,CAAChF,2BAAA,WAAQ;IACPkF,GAAG,EAAK+C,IAAI,CAACC,SAAS,CAACpC,eAAe,CAAC,SAAIrD,UAAU,UACnDN,cAAc,GAAG8F,IAAI,CAACC,SAAS,CAACjG,cAAc,CAAC,GAAG2D,SAAS,UACzDqC,IAAI,CAACC,SAAS,CAACnG,MAAM,CAAI;IAC7BO,MAAM,EAAEA,MAAO;IACf6F,KAAK,MAAAlF,SAAA,iBACAwE,WAAW,EACXzF,aAAa,CAChB;IACFgB,MAAM,EAAEA,MAAO;IAAAqC,MAAA,EAAAlF,KAAA;IAAAmF,QAAA;MAAAC,QAAA,EAAAnF,YAAA;MAAAoF,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEd3C,YACO,CAAC;AAEf,CAAC;AAACsF,OAAA,CAAAvG,UAAA,GAAAA,UAAA;AAgBK,IAAM2F,UAAU,GAAG,SAAbA,UAAUA,CAAAa,KAAA,EAAyD;EAAA,IAAnD/D,IAAI,GAAA+D,KAAA,CAAJ/D,IAAI;IAAEC,MAAM,GAAA8D,KAAA,CAAN9D,MAAM;IAAE7C,KAAK,GAAA2G,KAAA,CAAL3G,KAAK;IAAEsB,MAAM,GAAAqF,KAAA,CAANrF,MAAM;EACtD,IAAIsF,SAAS,GAAG5G,KAAK,CAAC6G,UAAU;EAChC,IAAMC,WAAW,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;EAEnD,OACE5I,MAAA,YAAAoF,aAAA,CAACjF,YAAA,CAAA0I,IAAI;IAACvD,GAAG,EAAExD,KAAK,CAACwD,GAAI;IAACC,KAAK,EAAEmD,SAAS,GAAGtF,MAAM,oBAANA,MAAM,CAAE8E,OAAO,GAAG9E,MAAM,oBAANA,MAAM,CAAEtC,IAAK;IAAA2E,MAAA,EAAAlF,KAAA;IAAAmF,QAAA;MAAAC,QAAA,EAAAnF,YAAA;MAAAoF,UAAA;MAAAC,YAAA;IAAA;EAAA,GACrEnB,IAAI,CAACoE,KAAK,CAACC,GAAG,CAAC,UAACC,IAAmB,EAAEC,KAAa,EAAK;IAAA,IAAAC,MAAA;IACtD,IAAMC,eAAe,GAAGzE,IAAI,CAAC0E,KAAK,GAAGH,KAAK;IAE1C,IAAID,IAAI,KAAK,IAAI,EAAE;MACjB,OACEhJ,MAAA,YAAAoF,aAAA,CAACiE,OAAO;QAAC/D,GAAG,EAAE2D,KAAM;QAAC1D,KAAK,EAAEnC,MAAM,oBAANA,MAAM,CAAE/B,OAAQ;QAACiI,MAAM,EAAC,WAAW;QAAA7D,MAAA,EAAAlF,KAAA;QAAAmF,QAAA;UAAAC,QAAA,EAAAnF,YAAA;UAAAoF,UAAA;UAAAC,YAAA;QAAA;MAAA,GAC7D7F,MAAA,YAAAoF,aAAA,CAACmE,MAAM;QACLN,KAAK,EAAEvE,IAAI,CAAC8E,OAAO,IAAIL,eAAgB;QACvC5D,KAAK,EAAEb,IAAI,CAAC8E,OAAO,GAAGpG,MAAM,oBAANA,MAAM,CAAEnC,cAAc,GAAGmC,MAAM,oBAANA,MAAM,CAAEqG,cAAe;QAAAhE,MAAA,EAAAlF,KAAA;QAAAmF,QAAA;UAAAC,QAAA,EAAAnF,YAAA;UAAAoF,UAAA;UAAAC,YAAA;QAAA;MAAA,CACvE,CACM,CAAC;IAEd;IAEA6C,SAAS,GAAGM,IAAI,CAACpC,MAAM,GAAG,CAAC,IAAIoC,IAAI,CAAC,CAAC,CAAC,CAACU,IAAI,KAAK,MAAM;IACtD,IAAMC,mBAAmB,GAAGf,WAAW,CAACgB,QAAQ,CAAC,EAAAV,MAAA,GAACF,IAAI,CAAC,CAAC,CAAC,YAAAE,MAAA,GAAI,CAAC,CAAC,EAAEQ,IAAI,CAAC,IAAIhB,SAAS;IACnF,IAAMnD,KAAK,GAAGoE,mBAAmB,GAAG;MAAE5I,YAAY,EAAE;IAAE,CAAC,GAAG,CAAC,CAAC;IAE5D,OACEf,MAAA,YAAAoF,aAAA,CAACiE,OAAO;MAAC/D,GAAG,EAAE2D,KAAM;MAAC1D,KAAK,EAAEnC,MAAM,oBAANA,MAAM,CAAE/B,OAAQ;MAACiI,MAAM,EAAC,WAAW;MAAA7D,MAAA,EAAAlF,KAAA;MAAAmF,QAAA;QAAAC,QAAA,EAAAnF,YAAA;QAAAoF,UAAA;QAAAC,YAAA;MAAA;IAAA,GAC7D7F,MAAA,YAAAoF,aAAA,CAACmE,MAAM;MACLN,KAAK,EAAEvE,IAAI,CAAC8E,OAAO,IAAIL,eAAgB;MACvC5D,KAAK,EAAEb,IAAI,CAAC8E,OAAO,GAAGpG,MAAM,oBAANA,MAAM,CAAEnC,cAAc,GAAGmC,MAAM,oBAANA,MAAM,CAAEqG,cAAe;MAAAhE,MAAA,EAAAlF,KAAA;MAAAmF,QAAA;QAAAC,QAAA,EAAAnF,YAAA;QAAAoF,UAAA;QAAAC,YAAA;MAAA;IAAA,CACvE,CAAC,EACF7F,MAAA,YAAAoF,aAAA,CAACyE,QAAQ;MAACvE,GAAG,EAAE,CAAE;MAACC,KAAK,EAAE,CAACnC,MAAM,oBAANA,MAAM,CAAEjC,YAAY,EAAEoE,KAAK,CAAE;MAAAE,MAAA,EAAAlF,KAAA;MAAAmF,QAAA;QAAAC,QAAA,EAAAnF,YAAA;QAAAoF,UAAA;QAAAC,YAAA;MAAA;IAAA,GACpDlB,MAAM,CAACqE,IAAI,EAAElH,KAAK,CACX,CACH,CAAC;EAEd,CAAC,CACG,CAAC;AAEX,CAAC;AAAC0G,OAAA,CAAAZ,UAAA,GAAAA,UAAA;AAMF,IAAM2B,MAAM,GAAG,SAATA,MAAMA,CAAAO,KAAA;EAAA,IAAMb,KAAK,GAAAa,KAAA,CAALb,KAAK;IAAE1D,KAAK,GAAAuE,KAAA,CAALvE,KAAK;EAAA,OAC5BvF,MAAA,YAAAoF,aAAA,CAACjF,YAAA,CAAAkF,IAAI;IAACC,GAAG,EAAE,CAAE;IAACC,KAAK,EAAEA,KAAM;IAAAE,MAAA,EAAAlF,KAAA;IAAAmF,QAAA;MAAAC,QAAA,EAAAnF,YAAA;MAAAoF,UAAA;MAAAC,YAAA;IAAA;EAAA,GACxBoD,KAAK,GAAMA,KAAK,UAAO,SACpB,CAAC;AAAA,CACR;AAED,IAAMI,OAAO,GAAG,SAAVA,OAAOA,CAAAU,KAAA;EAAA,IAAMC,QAAQ,GAAAD,KAAA,CAARC,QAAQ;IAAEzE,KAAK,GAAAwE,KAAA,CAALxE,KAAK;EAAA,OAChCvF,MAAA,YAAAoF,aAAA,CAACjF,YAAA,CAAAkF,IAAI;IAACE,KAAK,EAAEA,KAAM;IAAAE,MAAA,EAAAlF,KAAA;IAAAmF,QAAA;MAAAC,QAAA,EAAAnF,YAAA;MAAAoF,UAAA;MAAAC,YAAA;IAAA;EAAA,GAAEmE,QAAe,CAAC;AAAA,CACtC;AAED,IAAMH,QAAQ,GAAG,SAAXA,QAAQA,CAAAI,KAAA;EAAA,IAAMD,QAAQ,GAAAC,KAAA,CAARD,QAAQ;IAAEzE,KAAK,GAAA0E,KAAA,CAAL1E,KAAK;EAAA,OACjCvF,MAAA,YAAAoF,aAAA,CAACjF,YAAA,CAAAkF,IAAI;IAACE,KAAK,EAAEA,KAAM;IAAAE,MAAA,EAAAlF,KAAA;IAAAmF,QAAA;MAAAC,QAAA,EAAAnF,YAAA;MAAAoF,UAAA;MAAAC,YAAA;IAAA;EAAA,GAAEmE,QAAe,CAAC;AAAA,CACtC"}