@kesha-antonov/react-native-chat 6.0.1 → 6.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/README.md +36 -4
  2. package/lib/Actions.d.ts.map +1 -1
  3. package/lib/Actions.js +33 -27
  4. package/lib/Actions.js.map +1 -1
  5. package/lib/Chat/Chat.d.ts.map +1 -1
  6. package/lib/Chat/Chat.js +253 -203
  7. package/lib/Chat/Chat.js.map +1 -1
  8. package/lib/Chat/ChatMessageList.d.ts.map +1 -1
  9. package/lib/Chat/ChatMessageList.js +4 -0
  10. package/lib/Chat/ChatMessageList.js.map +1 -1
  11. package/lib/Chat/index.d.ts +9 -1
  12. package/lib/Chat/index.d.ts.map +1 -1
  13. package/lib/Chat/index.js +14 -1
  14. package/lib/Chat/index.js.map +1 -1
  15. package/lib/Chat/types.d.ts +29 -0
  16. package/lib/Chat/types.d.ts.map +1 -1
  17. package/lib/Chat/types.js.map +1 -1
  18. package/lib/Chat/useMessageActions.d.ts +1 -0
  19. package/lib/Chat/useMessageActions.d.ts.map +1 -1
  20. package/lib/Chat/useMessageActions.js +97 -89
  21. package/lib/Chat/useMessageActions.js.map +1 -1
  22. package/lib/ChatHeader.d.ts +50 -0
  23. package/lib/ChatHeader.d.ts.map +1 -0
  24. package/lib/ChatHeader.js +356 -0
  25. package/lib/ChatHeader.js.map +1 -0
  26. package/lib/ChatList/ChatListCell.d.ts +1 -1
  27. package/lib/ChatList/ChatListCell.d.ts.map +1 -1
  28. package/lib/ChatList/ChatListCell.js +42 -11
  29. package/lib/ChatList/ChatListCell.js.map +1 -1
  30. package/lib/ChatList/index.js +332 -323
  31. package/lib/ChatList/index.js.map +1 -1
  32. package/lib/ChatList/types.d.ts +17 -1
  33. package/lib/ChatList/types.d.ts.map +1 -1
  34. package/lib/ChatList/types.js.map +1 -1
  35. package/lib/ChatList/utils.d.ts +4 -1
  36. package/lib/ChatList/utils.d.ts.map +1 -1
  37. package/lib/ChatList/utils.js +3 -2
  38. package/lib/ChatList/utils.js.map +1 -1
  39. package/lib/Composer.js +5 -1
  40. package/lib/Composer.js.map +1 -1
  41. package/lib/InputToolbar/fragments.d.ts +1 -1
  42. package/lib/InputToolbar/fragments.d.ts.map +1 -1
  43. package/lib/InputToolbar/fragments.js +9 -7
  44. package/lib/InputToolbar/fragments.js.map +1 -1
  45. package/lib/InputToolbar/index.d.ts.map +1 -1
  46. package/lib/InputToolbar/index.js +3 -2
  47. package/lib/InputToolbar/index.js.map +1 -1
  48. package/lib/InputToolbar/types.d.ts +6 -0
  49. package/lib/InputToolbar/types.d.ts.map +1 -1
  50. package/lib/InputToolbar/types.js.map +1 -1
  51. package/lib/InputToolbar/useActionsFragment.d.ts.map +1 -1
  52. package/lib/InputToolbar/useActionsFragment.js +83 -59
  53. package/lib/InputToolbar/useActionsFragment.js.map +1 -1
  54. package/lib/InputToolbar/useKeyboardInset.d.ts +1 -1
  55. package/lib/InputToolbar/useKeyboardInset.d.ts.map +1 -1
  56. package/lib/InputToolbar/useKeyboardInset.js +2 -2
  57. package/lib/InputToolbar/useKeyboardInset.js.map +1 -1
  58. package/lib/MessageText.d.ts.map +1 -1
  59. package/lib/MessageText.js +39 -33
  60. package/lib/MessageText.js.map +1 -1
  61. package/lib/MessagesContainer/index.d.ts.map +1 -1
  62. package/lib/MessagesContainer/index.js +113 -94
  63. package/lib/MessagesContainer/index.js.map +1 -1
  64. package/lib/MessagesContainer/types.d.ts +5 -2
  65. package/lib/MessagesContainer/types.d.ts.map +1 -1
  66. package/lib/MessagesContainer/types.js.map +1 -1
  67. package/lib/MessagesContainer/useChained.d.ts +6 -0
  68. package/lib/MessagesContainer/useChained.d.ts.map +1 -0
  69. package/lib/MessagesContainer/useChained.js +38 -0
  70. package/lib/MessagesContainer/useChained.js.map +1 -0
  71. package/lib/MessagesContainer/useListChrome.d.ts.map +1 -1
  72. package/lib/MessagesContainer/useListChrome.js +1 -1
  73. package/lib/MessagesContainer/useListChrome.js.map +1 -1
  74. package/lib/Models.d.ts +2 -1
  75. package/lib/Models.d.ts.map +1 -1
  76. package/lib/Models.js.map +1 -1
  77. package/lib/Send.d.ts.map +1 -1
  78. package/lib/Send.js +18 -13
  79. package/lib/Send.js.map +1 -1
  80. package/lib/Theme.d.ts +11 -0
  81. package/lib/Theme.d.ts.map +1 -1
  82. package/lib/Theme.js +17 -1
  83. package/lib/Theme.js.map +1 -1
  84. package/lib/attachments/AttachmentButton.js +17 -15
  85. package/lib/attachments/AttachmentButton.js.map +1 -1
  86. package/lib/attachments/AttachmentMenu/GalleryGrid.d.ts +3 -1
  87. package/lib/attachments/AttachmentMenu/GalleryGrid.d.ts.map +1 -1
  88. package/lib/attachments/AttachmentMenu/GalleryGrid.js +69 -68
  89. package/lib/attachments/AttachmentMenu/GalleryGrid.js.map +1 -1
  90. package/lib/attachments/AttachmentMenu/TabPanel.d.ts +3 -1
  91. package/lib/attachments/AttachmentMenu/TabPanel.d.ts.map +1 -1
  92. package/lib/attachments/AttachmentMenu/TabPanel.js +23 -21
  93. package/lib/attachments/AttachmentMenu/TabPanel.js.map +1 -1
  94. package/lib/attachments/AttachmentMenu/index.d.ts +6 -2
  95. package/lib/attachments/AttachmentMenu/index.d.ts.map +1 -1
  96. package/lib/attachments/AttachmentMenu/index.js +259 -247
  97. package/lib/attachments/AttachmentMenu/index.js.map +1 -1
  98. package/lib/attachments/buildMessages.d.ts +4 -4
  99. package/lib/attachments/buildMessages.d.ts.map +1 -1
  100. package/lib/attachments/buildMessages.js +9 -8
  101. package/lib/attachments/buildMessages.js.map +1 -1
  102. package/lib/attachments/types.d.ts +19 -0
  103. package/lib/attachments/types.d.ts.map +1 -1
  104. package/lib/attachments/types.js.map +1 -1
  105. package/lib/components/TouchableOpacity.d.ts +5 -0
  106. package/lib/components/TouchableOpacity.d.ts.map +1 -1
  107. package/lib/components/TouchableOpacity.js +59 -54
  108. package/lib/components/TouchableOpacity.js.map +1 -1
  109. package/lib/components/defaultMessageActions.d.ts +3 -1
  110. package/lib/components/defaultMessageActions.d.ts.map +1 -1
  111. package/lib/components/defaultMessageActions.js +9 -1
  112. package/lib/components/defaultMessageActions.js.map +1 -1
  113. package/lib/components/textHighlight.d.ts +14 -0
  114. package/lib/components/textHighlight.d.ts.map +1 -0
  115. package/lib/components/textHighlight.js +39 -0
  116. package/lib/components/textHighlight.js.map +1 -0
  117. package/lib/hooks/useKeyboardVerticalOffset.d.ts +6 -0
  118. package/lib/hooks/useKeyboardVerticalOffset.d.ts.map +1 -1
  119. package/lib/hooks/useKeyboardVerticalOffset.js +35 -13
  120. package/lib/hooks/useKeyboardVerticalOffset.js.map +1 -1
  121. package/lib/i18n.d.ts +2 -0
  122. package/lib/i18n.d.ts.map +1 -1
  123. package/lib/i18n.js +1 -0
  124. package/lib/i18n.js.map +1 -1
  125. package/lib/index.d.ts +3 -1
  126. package/lib/index.d.ts.map +1 -1
  127. package/lib/index.js +1 -0
  128. package/lib/index.js.map +1 -1
  129. package/lib/linkParser.d.ts +4 -1
  130. package/lib/linkParser.d.ts.map +1 -1
  131. package/lib/linkParser.js +115 -78
  132. package/lib/linkParser.js.map +1 -1
  133. package/lib/locales/ar.d.ts.map +1 -1
  134. package/lib/locales/ar.js +1 -0
  135. package/lib/locales/ar.js.map +1 -1
  136. package/lib/locales/de.d.ts.map +1 -1
  137. package/lib/locales/de.js +1 -0
  138. package/lib/locales/de.js.map +1 -1
  139. package/lib/locales/es.d.ts.map +1 -1
  140. package/lib/locales/es.js +1 -0
  141. package/lib/locales/es.js.map +1 -1
  142. package/lib/locales/fr.d.ts.map +1 -1
  143. package/lib/locales/fr.js +1 -0
  144. package/lib/locales/fr.js.map +1 -1
  145. package/lib/locales/hi.d.ts.map +1 -1
  146. package/lib/locales/hi.js +1 -0
  147. package/lib/locales/hi.js.map +1 -1
  148. package/lib/locales/id.d.ts.map +1 -1
  149. package/lib/locales/id.js +1 -0
  150. package/lib/locales/id.js.map +1 -1
  151. package/lib/locales/it.d.ts.map +1 -1
  152. package/lib/locales/it.js +1 -0
  153. package/lib/locales/it.js.map +1 -1
  154. package/lib/locales/ja.d.ts.map +1 -1
  155. package/lib/locales/ja.js +1 -0
  156. package/lib/locales/ja.js.map +1 -1
  157. package/lib/locales/ko.d.ts.map +1 -1
  158. package/lib/locales/ko.js +1 -0
  159. package/lib/locales/ko.js.map +1 -1
  160. package/lib/locales/nl.d.ts.map +1 -1
  161. package/lib/locales/nl.js +1 -0
  162. package/lib/locales/nl.js.map +1 -1
  163. package/lib/locales/pl.d.ts.map +1 -1
  164. package/lib/locales/pl.js +1 -0
  165. package/lib/locales/pl.js.map +1 -1
  166. package/lib/locales/pt.d.ts.map +1 -1
  167. package/lib/locales/pt.js +1 -0
  168. package/lib/locales/pt.js.map +1 -1
  169. package/lib/locales/ru.d.ts.map +1 -1
  170. package/lib/locales/ru.js +1 -0
  171. package/lib/locales/ru.js.map +1 -1
  172. package/lib/locales/tr.d.ts.map +1 -1
  173. package/lib/locales/tr.js +1 -0
  174. package/lib/locales/tr.js.map +1 -1
  175. package/lib/locales/zh.d.ts.map +1 -1
  176. package/lib/locales/zh.js +1 -0
  177. package/lib/locales/zh.js.map +1 -1
  178. package/llms.txt +1 -1
  179. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.js","names":["React","createRef","useEffect","useMemo","useState","View","ChatContext","createComposerPanelsStore","MediaViewerHost","TEST_ID","stylesCommon","renderComponentOrElement","ChatBackground","ChatKeyboardAvoidingView","ChatMessageList","ChatProviders","ChatSelectionBar","styles","useChatContextValue","useChatMedia","useChatSelection","useComposerHandlers","useComposerState","useInitialLayout","useMessageActions","useMessageNavigation","useOptionalPeerHints","useIsGroupChat","useResolvedReactions","Chat","props","$","_c","messages","t0","initialText","t1","user","t2","renderLoading","renderSelectionBar","isInverted","t3","reply","reactions","isGroupChat","isGroupChatProp","isAvatarVisible","isAvatarVisibleProp","isUsernameVisible","isUsernameVisibleProp","renderAvatar","renderWallpaper","t4","undefined","t5","t6","mediaPlayback","mediaTransfer","mediaController","mediaTransferController","mediaGallery","messagesRef","resolvedTheme","resolvedLabels","contextValues","t7","messagesContainerRef","t8","textInputRef","composerPanels","t9","onSelectionChange","selectionStore","isSelecting","composer","textStore","editStore","isReplyEnabled","startReply","handleSwipeToReply","startEdit","stopEdit","t10","highlightStore","getSenderName","scrollToMessage","jumpToQuotedMessage","pageDownReturn","isSwipeEnabled","swipe","isEnabled","t11","onPress","t12","t13","onSwipe","t14","replyForList","userId","_id","t15","resolvedReactions","t16","resolvedMessageActions","actionCallbacksRef","hasClipboard","copySelection","forwardSelection","deleteSelection","t17","inputToolbarFragment","sendGreeting","notifyInputTextReset","isListMounted","setIsListMounted","t18","t19","Symbol","for","frame","requestAnimationFrame","cancelAnimationFrame","audioRecording","videoRecording","t20","getTextFromProp","isReady","keyboardOffsetRef","keyboardVerticalOffset","onInitialLayoutViewLayout","isSelectionBarShown","t21","colors","background","fill","contentContainer","backgroundColor","t22","t23","hidden","t24","t25","t26","t27","composerAway","t28","t29","t30","t31","CONTENT","t32","t33","keyboardAvoidingViewProps","t34","WRAPPER","t35"],"sources":["../../src/Chat/Chat.tsx"],"sourcesContent":["import React, {\n createRef,\n useEffect,\n useMemo,\n useState,\n RefObject,\n} from 'react'\nimport { TextInput, View } from 'react-native'\nimport { ChatContext } from '../ChatContext'\nimport { createComposerPanelsStore } from '../components/composerPanels'\nimport { MediaViewerHost } from '../components/mediaViewer/MediaViewerHost'\nimport { TEST_ID } from '../Constant'\nimport { AnimatedList } from '../MessagesContainer'\nimport { IMessage, User } from '../Models'\nimport stylesCommon from '../styles'\nimport { renderComponentOrElement } from '../utils'\nimport { ChatBackground } from './ChatBackground'\nimport { ChatKeyboardAvoidingView } from './ChatKeyboardAvoidingView'\nimport { ChatMessageList } from './ChatMessageList'\nimport { ChatProviders } from './ChatProviders'\nimport { ChatSelectionBar } from './ChatSelectionBar'\nimport styles from './styles'\nimport { ChatProps } from './types'\nimport { useChatContextValue } from './useChatContextValue'\nimport { useChatMedia } from './useChatMedia'\nimport { useChatSelection } from './useChatSelection'\nimport { useComposerHandlers } from './useComposerHandlers'\nimport { useComposerState } from './useComposerState'\nimport { useInitialLayout } from './useInitialLayout'\nimport { useMessageActions } from './useMessageActions'\nimport { useMessageNavigation } from './useMessageNavigation'\nimport { useOptionalPeerHints } from './useOptionalPeerHints'\nimport { useIsGroupChat, useResolvedReactions } from './useResolvedReactions'\n\nexport function Chat<TMessage extends IMessage = IMessage> (\n props: ChatProps<TMessage>\n) {\n const {\n messages = [],\n initialText = '',\n user = {},\n renderLoading,\n renderSelectionBar,\n isInverted = true,\n reply,\n reactions,\n isGroupChat: isGroupChatProp,\n isAvatarVisible: isAvatarVisibleProp,\n isUsernameVisible: isUsernameVisibleProp,\n renderAvatar,\n renderWallpaper,\n } = props\n\n const { mediaController, mediaTransferController, mediaGallery, messagesRef } = useChatMedia({\n messages,\n isInverted,\n mediaPlayback: props.mediaPlayback,\n mediaTransfer: props.mediaTransfer,\n })\n\n const { resolvedTheme, resolvedLabels, contextValues } = useChatContextValue(props)\n\n const messagesContainerRef = useMemo(\n () => props.messagesContainerRef || createRef<AnimatedList>(),\n [props.messagesContainerRef]\n ) as RefObject<AnimatedList>\n\n // Typed as a ref so the compiler knows reading `.current` in a callback is not a render input.\n const textInputRef = useMemo(\n () => props.textInputRef || createRef<React.ComponentRef<typeof TextInput>>(),\n [props.textInputRef]\n ) as RefObject<React.ComponentRef<typeof TextInput>>\n\n const [composerPanels] = useState(createComposerPanelsStore)\n const { selectionStore, isSelecting } = useChatSelection({\n messages,\n messagesRef,\n onSelectionChange: props.onSelectionChange,\n })\n\n const composer = useComposerState(props, textInputRef)\n const { textStore, editStore, isReplyEnabled, startReply, handleSwipeToReply, startEdit, stopEdit } = composer\n\n const { highlightStore, getSenderName, scrollToMessage, jumpToQuotedMessage, pageDownReturn } = useMessageNavigation({\n messagesRef,\n messagesContainerRef,\n mediaController,\n })\n\n // Rebuilt on the way down to the list, so it has to keep its identity across renders that\n // change nothing: it is passed through `MessagesContainer` into every row, and `Item`'s memo\n // compares it by reference, so a fresh object here re-renders every mounted row whenever the\n // parent re-renders. See rowRenderChurn.test.tsx.\n const isSwipeEnabled = isReplyEnabled && (reply?.swipe?.isEnabled ?? true)\n const replyForList = useMemo(() => ({\n ...reply,\n onPress: reply?.onPress ?? jumpToQuotedMessage,\n swipe: { ...reply?.swipe, isEnabled: isSwipeEnabled, onSwipe: handleSwipeToReply },\n }), [reply, handleSwipeToReply, isSwipeEnabled, jumpToQuotedMessage])\n\n const userId = (user as Partial<User> | undefined)?._id\n const isGroupChat = useIsGroupChat(messages, userId, isGroupChatProp)\n const isAvatarVisible = isAvatarVisibleProp ?? (renderAvatar ? true : isGroupChat)\n const isUsernameVisible = isUsernameVisibleProp ?? isGroupChat\n const resolvedReactions = useResolvedReactions({ reactions, messages, user, isGroupChat })\n\n const {\n resolvedMessageActions,\n actionCallbacksRef,\n hasClipboard,\n copySelection,\n forwardSelection,\n deleteSelection,\n } = useMessageActions({\n props,\n userId,\n resolvedLabels,\n isReplyEnabled,\n startReply,\n startEdit,\n stopEdit,\n editStore,\n composerPanels,\n selectionStore,\n })\n\n const { inputToolbarFragment, sendGreeting, notifyInputTextReset } = useComposerHandlers({\n ...composer,\n props,\n textInputRef,\n messagesContainerRef,\n actionCallbacksRef,\n })\n\n // The wallpaper and the composer paint with the chat's first frame; the message list, by far the\n // heaviest part, mounts in the frame after, so opening a chat never shows an empty screen while\n // its messages are built.\n const [isListMounted, setIsListMounted] = useState(false)\n useEffect(() => {\n const frame = requestAnimationFrame(() => setIsListMounted(true))\n return () => cancelAnimationFrame(frame)\n }, [])\n\n useOptionalPeerHints(props.audioRecording, props.videoRecording)\n\n const { isReady, keyboardOffsetRef, keyboardVerticalOffset, onInitialLayoutViewLayout } = useInitialLayout({\n initialText,\n textStore,\n getTextFromProp: composer.getTextFromProp,\n notifyInputTextReset,\n })\n\n const isSelectionBarShown = isSelecting && renderSelectionBar !== null\n\n return (\n <ChatContext.Provider value={contextValues}>\n <View\n testID={TEST_ID.WRAPPER}\n ref={keyboardOffsetRef}\n style={[stylesCommon.fill, styles.contentContainer, { backgroundColor: resolvedTheme.colors.background }]}\n onLayout={onInitialLayoutViewLayout}\n >\n <ChatBackground\n messages={messages}\n userId={userId}\n isInverted={isInverted}\n theme={resolvedTheme}\n renderWallpaper={renderWallpaper}\n />\n <ChatKeyboardAvoidingView\n keyboardVerticalOffset={keyboardVerticalOffset}\n keyboardAvoidingViewProps={props.keyboardAvoidingViewProps}\n >\n {/*\n collapsable={false}: `opacity` is the only paint prop this view ever\n carries, and it's conditional on `isReady` - a plain `{flex:1}` view is\n eligible for Fabric's shadow-node flattening, but one with `opacity`\n isn't, so every mount flips this view's flattening eligibility exactly\n once, right after `isReady` turns true. That flip restructures the\n Yoga tree directly above the composer on the same mount cycle a\n remounted `Chat` first accepts a keystroke, matching the crash in #17\n (`YGNodeGetOwner(childYogaNode) == &yogaNode_`). Pinning collapsable\n keeps this node's shadow-tree identity stable across the flip.\n */}\n <View\n testID={TEST_ID.CONTENT}\n collapsable={false}\n style={[stylesCommon.fill, !isReady && styles.hidden]}\n >\n <ChatProviders\n mediaController={mediaController}\n mediaTransferController={mediaTransferController}\n highlightStore={highlightStore}\n selectionStore={selectionStore}\n composerPanels={composerPanels}\n mediaGallery={mediaGallery}\n >\n <ChatMessageList<TMessage>\n isMounted={isListMounted}\n chatProps={props}\n messages={messages}\n isInverted={isInverted}\n messagesContainerRef={messagesContainerRef}\n replyForList={replyForList}\n pageDownReturn={pageDownReturn}\n getSenderName={getSenderName}\n scrollToMessage={scrollToMessage}\n resolvedMessageActions={resolvedMessageActions}\n resolvedReactions={resolvedReactions}\n isAvatarVisible={isAvatarVisible}\n isUsernameVisible={isUsernameVisible}\n sendGreeting={sendGreeting}\n />\n {isSelectionBarShown && (\n <ChatSelectionBar<TMessage>\n store={selectionStore}\n messages={messages}\n canCopy={hasClipboard}\n onCopy={copySelection}\n onForward={forwardSelection}\n onDelete={deleteSelection}\n renderSelectionBar={renderSelectionBar}\n />\n )}\n {/*\n The selection bar takes the composer's place, but the composer stays\n mounted under it, out of layout: leaving selection used to rebuild the\n whole composer (its recorder, panels and animations) from scratch.\n collapsable={false} keeps this view's native node stable while its\n `display` flips (see the note on TEST_ID.CONTENT above).\n */}\n <View collapsable={false} style={isSelectionBarShown ? styles.composerAway : undefined}>\n {inputToolbarFragment}\n </View>\n <MediaViewerHost gallery={mediaGallery} />\n </ChatProviders>\n </View>\n {!isReady && renderComponentOrElement(renderLoading, {})}\n </ChatKeyboardAvoidingView>\n </View>\n </ChatContext.Provider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Chat.js","names":["React","createRef","useEffect","useImperativeHandle","useMemo","useState","View","ChatContext","createComposerPanelsStore","MediaViewerHost","TextHighlightContext","TEST_ID","stylesCommon","renderComponentOrElement","ChatBackground","ChatKeyboardAvoidingView","ChatMessageList","ChatProviders","ChatSelectionBar","styles","useChatContextValue","useChatMedia","useChatSelection","useComposerHandlers","useComposerState","useInitialLayout","useMessageActions","useMessageNavigation","useOptionalPeerHints","useIsGroupChat","useResolvedReactions","Chat","props","$","_c","messages","t0","initialText","t1","user","t2","renderLoading","renderSelectionBar","isInverted","t3","reply","reactions","isGroupChat","isGroupChatProp","isAvatarVisible","isAvatarVisibleProp","isUsernameVisible","isUsernameVisibleProp","renderAvatar","renderWallpaper","t4","undefined","t5","t6","mediaPlayback","mediaTransfer","mediaController","mediaTransferController","mediaGallery","messagesRef","resolvedTheme","resolvedLabels","contextValues","t7","messagesContainerRef","t8","textInputRef","composerPanels","t9","onSelectionChange","selectionStore","isSelecting","composer","textStore","editStore","isReplyEnabled","startReply","handleSwipeToReply","startEdit","stopEdit","t10","highlightStore","getSenderName","scrollToMessage","jumpToQuotedMessage","pageDownReturn","t11","t12","messageId","options","current","scrollToKey","key","String","animated","viewPosition","isHighlighted","highlight","chatRef","isSwipeEnabled","swipe","isEnabled","t13","onPress","t14","t15","onSwipe","t16","replyForList","userId","_id","t17","resolvedReactions","t18","resolvedMessageActions","actionCallbacksRef","hasClipboard","copySelection","forwardSelection","deleteSelection","t19","inputToolbarFragment","sendGreeting","notifyInputTextReset","isListMounted","setIsListMounted","t20","t21","Symbol","for","frame","requestAnimationFrame","cancelAnimationFrame","audioRecording","videoRecording","t22","getTextFromProp","isReady","keyboardOffsetRef","keyboardVerticalOffset","onInitialLayoutViewLayout","isSelectionBarShown","highlightText","highlightTextStyle","t23","trim","text","style","textHighlight","t24","colors","background","fill","contentContainer","backgroundColor","t25","t26","hidden","t27","t28","t29","t30","composerAway","t31","t32","t33","t34","CONTENT","t35","t36","keyboardAvoidingViewProps","t37","WRAPPER","t38","t39"],"sources":["../../src/Chat/Chat.tsx"],"sourcesContent":["import React, {\n createRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n RefObject,\n} from 'react'\nimport { TextInput, View } from 'react-native'\nimport { ChatContext } from '../ChatContext'\nimport { createComposerPanelsStore } from '../components/composerPanels'\nimport { MediaViewerHost } from '../components/mediaViewer/MediaViewerHost'\nimport { TextHighlightContext } from '../components/textHighlight'\nimport { TEST_ID } from '../Constant'\nimport { AnimatedList } from '../MessagesContainer'\nimport { IMessage, User } from '../Models'\nimport stylesCommon from '../styles'\nimport { renderComponentOrElement } from '../utils'\nimport { ChatBackground } from './ChatBackground'\nimport { ChatKeyboardAvoidingView } from './ChatKeyboardAvoidingView'\nimport { ChatMessageList } from './ChatMessageList'\nimport { ChatProviders } from './ChatProviders'\nimport { ChatSelectionBar } from './ChatSelectionBar'\nimport styles from './styles'\nimport { ChatProps } from './types'\nimport { useChatContextValue } from './useChatContextValue'\nimport { useChatMedia } from './useChatMedia'\nimport { useChatSelection } from './useChatSelection'\nimport { useComposerHandlers } from './useComposerHandlers'\nimport { useComposerState } from './useComposerState'\nimport { useInitialLayout } from './useInitialLayout'\nimport { useMessageActions } from './useMessageActions'\nimport { useMessageNavigation } from './useMessageNavigation'\nimport { useOptionalPeerHints } from './useOptionalPeerHints'\nimport { useIsGroupChat, useResolvedReactions } from './useResolvedReactions'\n\nexport function Chat<TMessage extends IMessage = IMessage> (\n props: ChatProps<TMessage>\n) {\n const {\n messages = [],\n initialText = '',\n user = {},\n renderLoading,\n renderSelectionBar,\n isInverted = true,\n reply,\n reactions,\n isGroupChat: isGroupChatProp,\n isAvatarVisible: isAvatarVisibleProp,\n isUsernameVisible: isUsernameVisibleProp,\n renderAvatar,\n renderWallpaper,\n } = props\n\n const { mediaController, mediaTransferController, mediaGallery, messagesRef } = useChatMedia({\n messages,\n isInverted,\n mediaPlayback: props.mediaPlayback,\n mediaTransfer: props.mediaTransfer,\n })\n\n const { resolvedTheme, resolvedLabels, contextValues } = useChatContextValue(props)\n\n const messagesContainerRef = useMemo(\n () => props.messagesContainerRef || createRef<AnimatedList>(),\n [props.messagesContainerRef]\n ) as RefObject<AnimatedList>\n\n // Typed as a ref so the compiler knows reading `.current` in a callback is not a render input.\n const textInputRef = useMemo(\n () => props.textInputRef || createRef<React.ComponentRef<typeof TextInput>>(),\n [props.textInputRef]\n ) as RefObject<React.ComponentRef<typeof TextInput>>\n\n const [composerPanels] = useState(createComposerPanelsStore)\n const { selectionStore, isSelecting } = useChatSelection({\n messages,\n messagesRef,\n onSelectionChange: props.onSelectionChange,\n })\n\n const composer = useComposerState(props, textInputRef)\n const { textStore, editStore, isReplyEnabled, startReply, handleSwipeToReply, startEdit, stopEdit } = composer\n\n const { highlightStore, getSenderName, scrollToMessage, jumpToQuotedMessage, pageDownReturn } = useMessageNavigation({\n messagesRef,\n messagesContainerRef,\n mediaController,\n })\n\n useImperativeHandle(props.chatRef, () => ({\n scrollToMessage: (messageId, options) => {\n messagesContainerRef.current?.scrollToKey({\n key: String(messageId),\n animated: options?.animated ?? true,\n viewPosition: options?.viewPosition ?? 0.5,\n })\n if (options?.isHighlighted)\n highlightStore.highlight(messageId)\n },\n }), [messagesContainerRef, highlightStore])\n\n // Rebuilt on the way down to the list, so it has to keep its identity across renders that\n // change nothing: it is passed through `MessagesContainer` into every row, and `Item`'s memo\n // compares it by reference, so a fresh object here re-renders every mounted row whenever the\n // parent re-renders. See rowRenderChurn.test.tsx.\n const isSwipeEnabled = isReplyEnabled && (reply?.swipe?.isEnabled ?? true)\n const replyForList = useMemo(() => ({\n ...reply,\n onPress: reply?.onPress ?? jumpToQuotedMessage,\n swipe: { ...reply?.swipe, isEnabled: isSwipeEnabled, onSwipe: handleSwipeToReply },\n }), [reply, handleSwipeToReply, isSwipeEnabled, jumpToQuotedMessage])\n\n const userId = (user as Partial<User> | undefined)?._id\n const isGroupChat = useIsGroupChat(messages, userId, isGroupChatProp)\n const isAvatarVisible = isAvatarVisibleProp ?? (renderAvatar ? true : isGroupChat)\n const isUsernameVisible = isUsernameVisibleProp ?? isGroupChat\n const resolvedReactions = useResolvedReactions({ reactions, messages, user, isGroupChat })\n\n const {\n resolvedMessageActions,\n actionCallbacksRef,\n hasClipboard,\n copySelection,\n forwardSelection,\n deleteSelection,\n } = useMessageActions({\n props,\n userId,\n resolvedLabels,\n isReplyEnabled,\n startReply,\n startEdit,\n stopEdit,\n editStore,\n composerPanels,\n selectionStore,\n })\n\n const { inputToolbarFragment, sendGreeting, notifyInputTextReset } = useComposerHandlers({\n ...composer,\n props,\n textInputRef,\n messagesContainerRef,\n actionCallbacksRef,\n })\n\n // The wallpaper and the composer paint with the chat's first frame; the message list, by far the\n // heaviest part, mounts in the frame after, so opening a chat never shows an empty screen while\n // its messages are built.\n const [isListMounted, setIsListMounted] = useState(false)\n useEffect(() => {\n const frame = requestAnimationFrame(() => setIsListMounted(true))\n return () => cancelAnimationFrame(frame)\n }, [])\n\n useOptionalPeerHints(props.audioRecording, props.videoRecording)\n\n const { isReady, keyboardOffsetRef, keyboardVerticalOffset, onInitialLayoutViewLayout } = useInitialLayout({\n initialText,\n textStore,\n getTextFromProp: composer.getTextFromProp,\n notifyInputTextReset,\n })\n\n const isSelectionBarShown = isSelecting && renderSelectionBar !== null\n\n const highlightText = props.highlightText\n const highlightTextStyle = props.highlightTextStyle\n const textHighlight = useMemo(\n () => (highlightText?.trim() ? { text: highlightText, style: highlightTextStyle } : null),\n [highlightText, highlightTextStyle]\n )\n\n return (\n <ChatContext.Provider value={contextValues}>\n <TextHighlightContext.Provider value={textHighlight}>\n <View\n testID={TEST_ID.WRAPPER}\n ref={keyboardOffsetRef}\n style={[stylesCommon.fill, styles.contentContainer, { backgroundColor: resolvedTheme.colors.background }]}\n onLayout={onInitialLayoutViewLayout}\n >\n <ChatBackground\n messages={messages}\n userId={userId}\n isInverted={isInverted}\n theme={resolvedTheme}\n renderWallpaper={renderWallpaper}\n />\n <ChatKeyboardAvoidingView\n keyboardVerticalOffset={keyboardVerticalOffset}\n keyboardAvoidingViewProps={props.keyboardAvoidingViewProps}\n >\n {/*\n collapsable={false}: `opacity` is the only paint prop this view ever\n carries, and it's conditional on `isReady` - a plain `{flex:1}` view is\n eligible for Fabric's shadow-node flattening, but one with `opacity`\n isn't, so every mount flips this view's flattening eligibility exactly\n once, right after `isReady` turns true. That flip restructures the\n Yoga tree directly above the composer on the same mount cycle a\n remounted `Chat` first accepts a keystroke, matching the crash in #17\n (`YGNodeGetOwner(childYogaNode) == &yogaNode_`). Pinning collapsable\n keeps this node's shadow-tree identity stable across the flip.\n */}\n <View\n testID={TEST_ID.CONTENT}\n collapsable={false}\n style={[stylesCommon.fill, !isReady && styles.hidden]}\n >\n <ChatProviders\n mediaController={mediaController}\n mediaTransferController={mediaTransferController}\n highlightStore={highlightStore}\n selectionStore={selectionStore}\n composerPanels={composerPanels}\n mediaGallery={mediaGallery}\n >\n <ChatMessageList<TMessage>\n isMounted={isListMounted}\n chatProps={props}\n messages={messages}\n isInverted={isInverted}\n messagesContainerRef={messagesContainerRef}\n replyForList={replyForList}\n pageDownReturn={pageDownReturn}\n getSenderName={getSenderName}\n scrollToMessage={scrollToMessage}\n resolvedMessageActions={resolvedMessageActions}\n resolvedReactions={resolvedReactions}\n isAvatarVisible={isAvatarVisible}\n isUsernameVisible={isUsernameVisible}\n sendGreeting={sendGreeting}\n />\n {isSelectionBarShown && (\n <ChatSelectionBar<TMessage>\n store={selectionStore}\n messages={messages}\n canCopy={hasClipboard}\n onCopy={copySelection}\n onForward={forwardSelection}\n onDelete={deleteSelection}\n renderSelectionBar={renderSelectionBar}\n />\n )}\n {/*\n The selection bar takes the composer's place, but the composer stays\n mounted under it, out of layout: leaving selection used to rebuild the\n whole composer (its recorder, panels and animations) from scratch.\n collapsable={false} keeps this view's native node stable while its\n `display` flips (see the note on TEST_ID.CONTENT above).\n */}\n <View collapsable={false} style={isSelectionBarShown ? styles.composerAway : undefined}>\n {inputToolbarFragment}\n </View>\n <MediaViewerHost gallery={mediaGallery} />\n </ChatProviders>\n </View>\n {!isReady && renderComponentOrElement(renderLoading, {})}\n </ChatKeyboardAvoidingView>\n </View>\n </TextHighlightContext.Provider>\n </ChatContext.Provider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAOxC,OAAO,EAAE,YAAY,EAAqB,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAyB,MAAM,qCAAqC,CAAA;AAC3F,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAIrD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,SAAS,QAAQ,EAAG,EAC1D,SAAS,EACT,SAAS,EAAE,KAAK,EAChB,QAAQ,EACR,UAAU,EACV,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,YAAY,GACb,EAAE;IACD,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC9B,QAAQ,EAAE,QAAQ,EAAE,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;IACnB,oBAAoB,EAAE,SAAS,CAAC,YAAY,CAAC,CAAA;IAC7C,YAAY,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAA;IACvD,cAAc,EAAE,cAAc,CAAA;IAC9B,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;IACjE,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAA;IACrD,sBAAsB,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,KAAK,eAAe,EAAE,CAAC,GAAG,SAAS,CAAA;IAClG,iBAAiB,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAA;IAChE,eAAe,EAAE,OAAO,CAAA;IACxB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CACzC,qBAqFA"}
1
+ {"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAOxC,OAAO,EAAE,YAAY,EAAqB,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAyB,MAAM,qCAAqC,CAAA;AAC3F,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAIrD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,SAAS,QAAQ,EAAG,EAC1D,SAAS,EACT,SAAS,EAAE,KAAK,EAChB,QAAQ,EACR,UAAU,EACV,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,YAAY,GACb,EAAE;IACD,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC9B,QAAQ,EAAE,QAAQ,EAAE,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;IACnB,oBAAoB,EAAE,SAAS,CAAC,YAAY,CAAC,CAAA;IAC7C,YAAY,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAA;IACvD,cAAc,EAAE,cAAc,CAAA;IAC9B,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;IACjE,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAA;IACrD,sBAAsB,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,KAAK,eAAe,EAAE,CAAC,GAAG,SAAS,CAAA;IAClG,iBAAiB,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAA;IAChE,eAAe,EAAE,OAAO,CAAA;IACxB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CACzC,qBAyFA"}
@@ -82,6 +82,10 @@ export function ChatMessageList(t0) {
82
82
  actionSheetOptionTintColor: _actionSheetOptionTintColor,
83
83
  emojiKeyboard: _emojiKeyboard,
84
84
  attachments: _attachments,
85
+ bottomInset: _bottomInset,
86
+ chatRef: _chatRef,
87
+ highlightText: _highlightText,
88
+ highlightTextStyle: _highlightTextStyle,
85
89
  keyboardProviderProps: _keyboardProviderProps,
86
90
  keyboardAvoidingViewProps: _keyboardAvoidingViewProps,
87
91
  ...t2
@@ -1 +1 @@
1
- {"version":3,"file":"ChatMessageList.js","names":["React","View","ChatEmpty","ChatLoadingOverlay","ChatOverlaySlot","FloatingRoundNote","NowPlayingBar","MessagesContainer","PageDownReturnContext","stylesCommon","renderComponentOrElement","styles","ChatMessageList","t0","$","_c","isMounted","chatProps","props","messages","isInverted","messagesContainerRef","replyForList","pageDownReturn","getSenderName","scrollToMessage","resolvedMessageActions","resolvedReactions","isAvatarVisible","isUsernameVisible","sendGreeting","t1","Symbol","for","fill","isTyping","renderChatFooter","emptyChatGreeting","mediaPlayback","isHistoryLoading","isLoading","length","isChatEmptyShown","renderChatEmpty","undefined","isNowPlayingBarEnabled","isFloatingRoundNoteEnabled","messagesContainerProps","messagesContainerStyle","text","_text","initialText","_initialText","onDraftChange","_onDraftChange","onSend","_onSend","textInputProps","_textInputProps","textInputRef","_textInputRef","messageIdGenerator","_messageIdGenerator","minInputToolbarHeight","_minInputToolbarHeight","minComposerHeight","_minComposerHeight","maxComposerHeight","_maxComposerHeight","isSendButtonAlwaysVisible","_isSendButtonAlwaysVisible","isMultiline","_isMultiline","renderInputToolbar","_renderInputToolbar","renderComposer","_renderComposer","renderActions","_renderActions","renderSend","_renderSend","renderAccessory","_renderAccessory","_renderChatFooter","onPressActionButton","_onPressActionButton","actions","_actions","actionSheetOptionTintColor","_actionSheetOptionTintColor","emojiKeyboard","_emojiKeyboard","attachments","_attachments","keyboardProviderProps","_keyboardProviderProps","keyboardAvoidingViewProps","_keyboardAvoidingViewProps","t2","t3","messageActions","reactions","t4","t5","t6","emptyOverlay","t7","t8","t9","t10","t11","t12"],"sources":["../../src/Chat/ChatMessageList.tsx"],"sourcesContent":["import React, { RefObject } from 'react'\nimport { View } from 'react-native'\nimport { ChatEmpty } from '../components/ChatEmpty'\nimport { ChatLoadingOverlay } from '../components/ChatLoadingOverlay'\nimport { ChatOverlaySlot } from '../components/ChatOverlay'\nimport { FloatingRoundNote } from '../components/FloatingRoundNote'\nimport { NowPlayingBar } from '../components/NowPlayingBar'\nimport { AnimatedList, MessagesContainer, MessagesContainerProps } from '../MessagesContainer'\nimport { PageDownReturn, PageDownReturnContext } from '../MessagesContainer/pageDownReturn'\nimport { IMessage, MessageMenuItem } from '../Models'\nimport stylesCommon from '../styles'\nimport { renderComponentOrElement } from '../utils'\nimport styles from './styles'\nimport { ChatProps } from './types'\n\n/**\n * The message list and what sits over it: the now-playing bar, the empty-chat card, the history\n * spinner, the floating round note and the app's footer. Until `isMounted`, an empty view holds\n * its place, so the list mounts a frame after the rest of the chat.\n */\nexport function ChatMessageList<TMessage extends IMessage> ({\n isMounted,\n chatProps: props,\n messages,\n isInverted,\n messagesContainerRef,\n replyForList,\n pageDownReturn,\n getSenderName,\n scrollToMessage,\n resolvedMessageActions,\n resolvedReactions,\n isAvatarVisible,\n isUsernameVisible,\n sendGreeting,\n}: {\n isMounted: boolean\n chatProps: ChatProps<TMessage>\n messages: TMessage[]\n isInverted: boolean\n messagesContainerRef: RefObject<AnimatedList>\n replyForList: MessagesContainerProps<TMessage>['reply']\n pageDownReturn: PageDownReturn\n getSenderName: (messageId: string | number) => string | undefined\n scrollToMessage: (messageId: string | number) => void\n resolvedMessageActions: MessageMenuItem[] | ((message: TMessage) => MessageMenuItem[]) | undefined\n resolvedReactions: MessagesContainerProps<TMessage>['reactions']\n isAvatarVisible: boolean\n isUsernameVisible: boolean\n sendGreeting: (greeting: string) => void\n}) {\n if (!isMounted)\n return <View style={stylesCommon.fill} />\n\n const { isTyping, renderChatFooter, emptyChatGreeting, mediaPlayback } = props\n\n // A spinner replaces the empty-chat card while history loads, and only over an empty list:\n // messages already passed stay visible.\n const isHistoryLoading = !!props.isLoading && messages.length === 0\n const isChatEmptyShown = messages.length === 0 && props.renderChatEmpty === undefined && !props.isLoading\n\n const isNowPlayingBarEnabled = mediaPlayback?.isNowPlayingBarEnabled ?? true\n const isFloatingRoundNoteEnabled = mediaPlayback?.isFloatingRoundNoteEnabled ?? true\n\n // The composer's props stay out of the list: whatever reaches `MessagesContainer` is handed\n // to every row, and `Item` compares each prop by reference, so a consumer's inline `onSend`\n // or the controlled `text` changing on a keystroke re-rendered every message on screen.\n const {\n messagesContainerStyle,\n /* eslint-disable @typescript-eslint/no-unused-vars */\n text: _text,\n initialText: _initialText,\n onDraftChange: _onDraftChange,\n onSend: _onSend,\n textInputProps: _textInputProps,\n textInputRef: _textInputRef,\n messageIdGenerator: _messageIdGenerator,\n minInputToolbarHeight: _minInputToolbarHeight,\n minComposerHeight: _minComposerHeight,\n maxComposerHeight: _maxComposerHeight,\n isSendButtonAlwaysVisible: _isSendButtonAlwaysVisible,\n isMultiline: _isMultiline,\n renderInputToolbar: _renderInputToolbar,\n renderComposer: _renderComposer,\n renderActions: _renderActions,\n renderSend: _renderSend,\n renderAccessory: _renderAccessory,\n renderChatFooter: _renderChatFooter,\n onPressActionButton: _onPressActionButton,\n actions: _actions,\n actionSheetOptionTintColor: _actionSheetOptionTintColor,\n emojiKeyboard: _emojiKeyboard,\n attachments: _attachments,\n keyboardProviderProps: _keyboardProviderProps,\n keyboardAvoidingViewProps: _keyboardAvoidingViewProps,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...messagesContainerProps\n } = props\n\n return (\n <View style={[stylesCommon.fill, messagesContainerStyle]}>\n {isNowPlayingBarEnabled && (\n <NowPlayingBar getSenderName={getSenderName} onPressTitle={scrollToMessage} />\n )}\n {/* The list's own area, so the floating round note docks to it and\n not over the \"now playing\" bar above. */}\n <View style={stylesCommon.fill}>\n <PageDownReturnContext.Provider value={pageDownReturn}>\n <MessagesContainer<TMessage>\n {...messagesContainerProps}\n {...{\n messageActions: resolvedMessageActions,\n reactions: resolvedReactions,\n isAvatarVisible,\n isUsernameVisible,\n }}\n isInverted={isInverted}\n messages={messages}\n forwardRef={messagesContainerRef}\n isTyping={isTyping}\n reply={replyForList}\n />\n </PageDownReturnContext.Provider>\n {isChatEmptyShown && (\n <View style={styles.emptyOverlay} pointerEvents='box-none'>\n <ChatEmpty greeting={emptyChatGreeting} onPressGreeting={sendGreeting} />\n </View>\n )}\n <ChatLoadingOverlay isVisible={isHistoryLoading} />\n {isFloatingRoundNoteEnabled && <FloatingRoundNote />}\n </View>\n {renderComponentOrElement(renderChatFooter, {})}\n <ChatOverlaySlot />\n </View>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ChatMessageList.js","names":["React","View","ChatEmpty","ChatLoadingOverlay","ChatOverlaySlot","FloatingRoundNote","NowPlayingBar","MessagesContainer","PageDownReturnContext","stylesCommon","renderComponentOrElement","styles","ChatMessageList","t0","$","_c","isMounted","chatProps","props","messages","isInverted","messagesContainerRef","replyForList","pageDownReturn","getSenderName","scrollToMessage","resolvedMessageActions","resolvedReactions","isAvatarVisible","isUsernameVisible","sendGreeting","t1","Symbol","for","fill","isTyping","renderChatFooter","emptyChatGreeting","mediaPlayback","isHistoryLoading","isLoading","length","isChatEmptyShown","renderChatEmpty","undefined","isNowPlayingBarEnabled","isFloatingRoundNoteEnabled","messagesContainerProps","messagesContainerStyle","text","_text","initialText","_initialText","onDraftChange","_onDraftChange","onSend","_onSend","textInputProps","_textInputProps","textInputRef","_textInputRef","messageIdGenerator","_messageIdGenerator","minInputToolbarHeight","_minInputToolbarHeight","minComposerHeight","_minComposerHeight","maxComposerHeight","_maxComposerHeight","isSendButtonAlwaysVisible","_isSendButtonAlwaysVisible","isMultiline","_isMultiline","renderInputToolbar","_renderInputToolbar","renderComposer","_renderComposer","renderActions","_renderActions","renderSend","_renderSend","renderAccessory","_renderAccessory","_renderChatFooter","onPressActionButton","_onPressActionButton","actions","_actions","actionSheetOptionTintColor","_actionSheetOptionTintColor","emojiKeyboard","_emojiKeyboard","attachments","_attachments","bottomInset","_bottomInset","chatRef","_chatRef","highlightText","_highlightText","highlightTextStyle","_highlightTextStyle","keyboardProviderProps","_keyboardProviderProps","keyboardAvoidingViewProps","_keyboardAvoidingViewProps","t2","t3","messageActions","reactions","t4","t5","t6","emptyOverlay","t7","t8","t9","t10","t11","t12"],"sources":["../../src/Chat/ChatMessageList.tsx"],"sourcesContent":["import React, { RefObject } from 'react'\nimport { View } from 'react-native'\nimport { ChatEmpty } from '../components/ChatEmpty'\nimport { ChatLoadingOverlay } from '../components/ChatLoadingOverlay'\nimport { ChatOverlaySlot } from '../components/ChatOverlay'\nimport { FloatingRoundNote } from '../components/FloatingRoundNote'\nimport { NowPlayingBar } from '../components/NowPlayingBar'\nimport { AnimatedList, MessagesContainer, MessagesContainerProps } from '../MessagesContainer'\nimport { PageDownReturn, PageDownReturnContext } from '../MessagesContainer/pageDownReturn'\nimport { IMessage, MessageMenuItem } from '../Models'\nimport stylesCommon from '../styles'\nimport { renderComponentOrElement } from '../utils'\nimport styles from './styles'\nimport { ChatProps } from './types'\n\n/**\n * The message list and what sits over it: the now-playing bar, the empty-chat card, the history\n * spinner, the floating round note and the app's footer. Until `isMounted`, an empty view holds\n * its place, so the list mounts a frame after the rest of the chat.\n */\nexport function ChatMessageList<TMessage extends IMessage> ({\n isMounted,\n chatProps: props,\n messages,\n isInverted,\n messagesContainerRef,\n replyForList,\n pageDownReturn,\n getSenderName,\n scrollToMessage,\n resolvedMessageActions,\n resolvedReactions,\n isAvatarVisible,\n isUsernameVisible,\n sendGreeting,\n}: {\n isMounted: boolean\n chatProps: ChatProps<TMessage>\n messages: TMessage[]\n isInverted: boolean\n messagesContainerRef: RefObject<AnimatedList>\n replyForList: MessagesContainerProps<TMessage>['reply']\n pageDownReturn: PageDownReturn\n getSenderName: (messageId: string | number) => string | undefined\n scrollToMessage: (messageId: string | number) => void\n resolvedMessageActions: MessageMenuItem[] | ((message: TMessage) => MessageMenuItem[]) | undefined\n resolvedReactions: MessagesContainerProps<TMessage>['reactions']\n isAvatarVisible: boolean\n isUsernameVisible: boolean\n sendGreeting: (greeting: string) => void\n}) {\n if (!isMounted)\n return <View style={stylesCommon.fill} />\n\n const { isTyping, renderChatFooter, emptyChatGreeting, mediaPlayback } = props\n\n // A spinner replaces the empty-chat card while history loads, and only over an empty list:\n // messages already passed stay visible.\n const isHistoryLoading = !!props.isLoading && messages.length === 0\n const isChatEmptyShown = messages.length === 0 && props.renderChatEmpty === undefined && !props.isLoading\n\n const isNowPlayingBarEnabled = mediaPlayback?.isNowPlayingBarEnabled ?? true\n const isFloatingRoundNoteEnabled = mediaPlayback?.isFloatingRoundNoteEnabled ?? true\n\n // The composer's props stay out of the list: whatever reaches `MessagesContainer` is handed\n // to every row, and `Item` compares each prop by reference, so a consumer's inline `onSend`\n // or the controlled `text` changing on a keystroke re-rendered every message on screen.\n const {\n messagesContainerStyle,\n /* eslint-disable @typescript-eslint/no-unused-vars */\n text: _text,\n initialText: _initialText,\n onDraftChange: _onDraftChange,\n onSend: _onSend,\n textInputProps: _textInputProps,\n textInputRef: _textInputRef,\n messageIdGenerator: _messageIdGenerator,\n minInputToolbarHeight: _minInputToolbarHeight,\n minComposerHeight: _minComposerHeight,\n maxComposerHeight: _maxComposerHeight,\n isSendButtonAlwaysVisible: _isSendButtonAlwaysVisible,\n isMultiline: _isMultiline,\n renderInputToolbar: _renderInputToolbar,\n renderComposer: _renderComposer,\n renderActions: _renderActions,\n renderSend: _renderSend,\n renderAccessory: _renderAccessory,\n renderChatFooter: _renderChatFooter,\n onPressActionButton: _onPressActionButton,\n actions: _actions,\n actionSheetOptionTintColor: _actionSheetOptionTintColor,\n emojiKeyboard: _emojiKeyboard,\n attachments: _attachments,\n bottomInset: _bottomInset,\n chatRef: _chatRef,\n highlightText: _highlightText,\n highlightTextStyle: _highlightTextStyle,\n keyboardProviderProps: _keyboardProviderProps,\n keyboardAvoidingViewProps: _keyboardAvoidingViewProps,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...messagesContainerProps\n } = props\n\n return (\n <View style={[stylesCommon.fill, messagesContainerStyle]}>\n {isNowPlayingBarEnabled && (\n <NowPlayingBar getSenderName={getSenderName} onPressTitle={scrollToMessage} />\n )}\n {/* The list's own area, so the floating round note docks to it and\n not over the \"now playing\" bar above. */}\n <View style={stylesCommon.fill}>\n <PageDownReturnContext.Provider value={pageDownReturn}>\n <MessagesContainer<TMessage>\n {...messagesContainerProps}\n {...{\n messageActions: resolvedMessageActions,\n reactions: resolvedReactions,\n isAvatarVisible,\n isUsernameVisible,\n }}\n isInverted={isInverted}\n messages={messages}\n forwardRef={messagesContainerRef}\n isTyping={isTyping}\n reply={replyForList}\n />\n </PageDownReturnContext.Provider>\n {isChatEmptyShown && (\n <View style={styles.emptyOverlay} pointerEvents='box-none'>\n <ChatEmpty greeting={emptyChatGreeting} onPressGreeting={sendGreeting} />\n </View>\n )}\n <ChatLoadingOverlay isVisible={isHistoryLoading} />\n {isFloatingRoundNoteEnabled && <FloatingRoundNote />}\n </View>\n {renderComponentOrElement(renderChatFooter, {})}\n <ChatOverlaySlot />\n </View>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,12 @@
1
1
  import '../dayjsLocales';
2
2
  import { ChatWrapper } from './ChatWrapper';
3
- export { ChatWrapper as Chat };
3
+ /**
4
+ * The chat, skipped when its props compare equal: a screen around it re-renders for many reasons
5
+ * (unread counts, connection state, its own scroll position) that leave the chat's props alone,
6
+ * and each of those used to render the whole conversation again. Stable callbacks and memoized
7
+ * objects in the props are what make the comparison hold.
8
+ */
9
+ declare const Chat: typeof ChatWrapper;
10
+ export { Chat };
11
+ export type { ChatHandle, ChatProps } from './types';
4
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Chat/index.tsx"],"names":[],"mappings":"AAEA,OAAO,iBAAiB,CAAA;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAI3C,OAAO,EACL,WAAW,IAAI,IAAI,EACpB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Chat/index.tsx"],"names":[],"mappings":"AAGA,OAAO,iBAAiB,CAAA;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAI3C;;;;;GAKG;AACH,QAAA,MAAM,IAAI,EAIO,OAAO,WAAW,CAAA;AAEnC,OAAO,EACL,IAAI,EACL,CAAA;AACD,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA"}
package/lib/Chat/index.js CHANGED
@@ -1,7 +1,20 @@
1
+ import { memo } from 'react';
1
2
  import dayjs from 'dayjs';
2
3
  import localizedFormat from 'dayjs/plugin/localizedFormat';
3
4
  import '../dayjsLocales';
4
5
  import { ChatWrapper } from './ChatWrapper';
5
6
  dayjs.extend(localizedFormat);
6
- export { ChatWrapper as Chat };
7
+
8
+ /**
9
+ * The chat, skipped when its props compare equal: a screen around it re-renders for many reasons
10
+ * (unread counts, connection state, its own scroll position) that leave the chat's props alone,
11
+ * and each of those used to render the whole conversation again. Stable callbacks and memoized
12
+ * objects in the props are what make the comparison hold.
13
+ */
14
+ const Chat = Object.assign(memo(ChatWrapper), {
15
+ append: ChatWrapper.append,
16
+ prepend: ChatWrapper.prepend,
17
+ toggleReaction: ChatWrapper.toggleReaction
18
+ });
19
+ export { Chat };
7
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["dayjs","localizedFormat","ChatWrapper","extend","Chat"],"sources":["../../src/Chat/index.tsx"],"sourcesContent":["import dayjs from 'dayjs'\nimport localizedFormat from 'dayjs/plugin/localizedFormat'\nimport '../dayjsLocales'\nimport { ChatWrapper } from './ChatWrapper'\n\ndayjs.extend(localizedFormat)\n\nexport {\n ChatWrapper as Chat\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,eAAe,MAAM,8BAA8B;AAC1D,OAAO,iBAAiB;AACxB,SAASC,WAAW,QAAQ,eAAe;AAE3CF,KAAK,CAACG,MAAM,CAACF,eAAe,CAAC;AAE7B,SACEC,WAAW,IAAIE,IAAI","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["memo","dayjs","localizedFormat","ChatWrapper","extend","Chat","Object","assign","append","prepend","toggleReaction"],"sources":["../../src/Chat/index.tsx"],"sourcesContent":["import { memo } from 'react'\nimport dayjs from 'dayjs'\nimport localizedFormat from 'dayjs/plugin/localizedFormat'\nimport '../dayjsLocales'\nimport { ChatWrapper } from './ChatWrapper'\n\ndayjs.extend(localizedFormat)\n\n/**\n * The chat, skipped when its props compare equal: a screen around it re-renders for many reasons\n * (unread counts, connection state, its own scroll position) that leave the chat's props alone,\n * and each of those used to render the whole conversation again. Stable callbacks and memoized\n * objects in the props are what make the comparison hold.\n */\nconst Chat = Object.assign(memo(ChatWrapper), {\n append: ChatWrapper.append,\n prepend: ChatWrapper.prepend,\n toggleReaction: ChatWrapper.toggleReaction,\n}) as unknown as typeof ChatWrapper\n\nexport {\n Chat\n}\nexport type { ChatHandle, ChatProps } from './types'\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,OAAO;AAC5B,OAAOC,KAAK,MAAM,OAAO;AACzB,OAAOC,eAAe,MAAM,8BAA8B;AAC1D,OAAO,iBAAiB;AACxB,SAASC,WAAW,QAAQ,eAAe;AAE3CF,KAAK,CAACG,MAAM,CAACF,eAAe,CAAC;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,IAAI,GAAGC,MAAM,CAACC,MAAM,CAACP,IAAI,CAACG,WAAW,CAAC,EAAE;EAC5CK,MAAM,EAAEL,WAAW,CAACK,MAAM;EAC1BC,OAAO,EAAEN,WAAW,CAACM,OAAO;EAC5BC,cAAc,EAAEP,WAAW,CAACO;AAC9B,CAAC,CAAkC;AAEnC,SACEL,IAAI","ignoreList":[]}
@@ -24,8 +24,30 @@ import { SendProps } from '../Send';
24
24
  import { SystemMessageProps } from '../SystemMessage';
25
25
  import { PartialChatTheme } from '../Theme';
26
26
  import { TimeProps } from '../Time';
27
+ /** What `chatRef` reaches: moving to a message from outside the chat, e.g. a search result. */
28
+ export interface ChatHandle {
29
+ /**
30
+ * Scrolls to a message, also one far up that is not measured yet, and with `isHighlighted` flashes
31
+ * it the way a tapped quote does. `viewPosition` 0 puts it at the top, 1 at the bottom
32
+ * (default 0.5).
33
+ */
34
+ scrollToMessage: (messageId: string | number, options?: {
35
+ animated?: boolean;
36
+ viewPosition?: number;
37
+ isHighlighted?: boolean;
38
+ }) => void;
39
+ }
27
40
  export interface ChatProps<TMessage extends IMessage> extends Partial<Omit<MessagesContainerProps<TMessage>, 'messageReplyContainerStyle'>>, Pick<BubbleProps<TMessage>, 'fetchLinkPreview' | 'renderLinkPreview' | 'onPressLinkPreview'> {
28
41
  messagesContainerRef?: RefObject<AnimatedList>;
42
+ /**
43
+ * Words to mark in every message's text, e.g. the query of a search in the chat
44
+ * (case-insensitive, links included). Empty or undefined marks nothing.
45
+ */
46
+ highlightText?: string;
47
+ /** The marked words' style; yellow behind black text by default. */
48
+ highlightTextStyle?: StyleProp<TextStyle>;
49
+ /** A handle for moving to a message from outside the chat; see `ChatHandle`. */
50
+ chatRef?: React.Ref<ChatHandle | null>;
29
51
  textInputRef?: RefObject<React.ComponentRef<typeof TextInput> | null>;
30
52
  /**
31
53
  * Show the sender's name on the first message of each run of incoming messages.
@@ -130,6 +152,8 @@ export interface ChatProps<TMessage extends IMessage> extends Partial<Omit<Messa
130
152
  renderCustomView?: (props: BubbleProps<TMessage>) => React.ReactNode;
131
153
  renderTime?: (props: TimeProps<TMessage>) => React.ReactNode;
132
154
  renderChatFooter?: () => React.ReactNode;
155
+ /** The composer's space for the home indicator, when the host knows it better (see `InputToolbar`). */
156
+ bottomInset?: number;
133
157
  renderInputToolbar?: React.ComponentType<InputToolbarProps<TMessage>> | React.ReactElement | ((props: InputToolbarProps<TMessage>) => React.ReactNode) | null;
134
158
  renderComposer?: (props: ComposerProps) => React.ReactNode;
135
159
  renderActions?: (props: ActionsProps) => React.ReactNode;
@@ -196,6 +220,11 @@ export interface ChatProps<TMessage extends IMessage> extends Partial<Omit<Messa
196
220
  onEditMessage?: (message: TMessage, text: string) => void;
197
221
  /** Turns on the "Delete" action. */
198
222
  onDeleteMessage?: (message: TMessage) => void;
223
+ /**
224
+ * Turns on "Retry" for your own messages that failed to send (`isFailed`): it comes first in
225
+ * their menu, above Delete, whatever `defaultMessageActions` lists.
226
+ */
227
+ onRetryMessage?: (message: TMessage) => void;
199
228
  /** Turns on the "Forward" action. */
200
229
  onForwardMessage?: (message: TMessage) => void;
201
230
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Chat/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Chat/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../src/Chat/types.ts"],"sourcesContent":["import React, { RefObject } from 'react'\nimport {\n TextInput,\n StyleProp,\n TextStyle,\n ViewStyle,\n} from 'react-native'\nimport { KeyboardProvider, KeyboardAvoidingViewProps } from 'react-native-keyboard-controller'\n\nimport { ActionsProps } from '../Actions'\nimport { AttachmentsProps } from '../attachments/types'\nimport { AvatarProps } from '../Avatar'\nimport { BubbleProps } from '../Bubble'\nimport { ActionSheetOptions } from '../ChatContext'\nimport { AttachmentAction } from '../components/AttachmentSheet'\nimport { SelectionBarProps } from '../components/SelectionBar'\nimport { ComposerProps } from '../Composer'\nimport { EmojiKeyboardProps } from '../emoji/EmojiKeyboard'\nimport { ChatLabels } from '../i18n'\nimport { ChatIcons } from '../Icons'\nimport { InputToolbarProps } from '../InputToolbar'\nimport { MessageImageProps } from '../MessageImage'\nimport { AnimatedList, MessagesContainerProps } from '../MessagesContainer'\nimport { MessageTextProps } from '../MessageText'\nimport {\n AudioRecordingProps,\n MediaPlaybackProps,\n MediaTransferProps,\n IMessage,\n LeftRightStyle,\n MessageActionKey,\n MessageAudioProps,\n MessageFileProps,\n MessageLocationProps,\n MessageMenuItem,\n MessageVideoProps,\n User,\n VideoRecordingProps,\n} from '../Models'\nimport { QuickRepliesProps } from '../QuickReplies'\nimport { ReactionsProps } from '../Reactions'\nimport { ReplyProps } from '../Reply'\nimport { SendProps } from '../Send'\nimport { SystemMessageProps } from '../SystemMessage'\nimport { PartialChatTheme } from '../Theme'\nimport { TimeProps } from '../Time'\n\nexport interface ChatProps<TMessage extends IMessage> extends Partial<Omit<MessagesContainerProps<TMessage>, 'messageReplyContainerStyle'>>,\n Pick<BubbleProps<TMessage>, 'fetchLinkPreview' | 'renderLinkPreview' | 'onPressLinkPreview'> {\n /* Messages container ref */\n messagesContainerRef?: RefObject<AnimatedList>\n /* text input ref */\n textInputRef?: RefObject<React.ComponentRef<typeof TextInput> | null>\n /**\n * Show the sender's name on the first message of each run of incoming messages.\n * Default: on in group chats, off in one-to-one chats (see `isGroupChat`).\n */\n isUsernameVisible?: boolean\n /**\n * Show avatars beside incoming messages. Default: on in group chats, off in one-to-one\n * chats (see `isGroupChat`), and on whenever a custom `renderAvatar` is passed.\n */\n isAvatarVisible?: boolean\n /**\n * Whether this is a group chat, which turns on avatars and sender names. Default:\n * auto-detected - more than one other sender in `messages` means a group.\n */\n isGroupChat?: boolean\n /* Messages container style */\n messagesContainerStyle?: StyleProp<ViewStyle>\n /* Input text; default is undefined, but if specified, it will override Chat's internal state */\n text?: string\n initialText?: string\n /**\n * The user's draft changed: called as they type, with '' once it is sent. Editing a message\n * sets the draft aside (this is not called with the edited text) and brings it back after.\n * Save it with the chat and pass it back as `initialText` to restore it next time.\n */\n onDraftChange?: (draft: string) => void\n /* User sending the messages: { _id, name, avatar } */\n user?: User\n /* Locale to localize the dates */\n locale?: string\n /**\n * Force right-to-left layout on or off. Defaults to auto-detecting from `locale` (Arabic,\n * Hebrew, Persian, Urdu, and a few others). Set this to override the guess - e.g. `true` for\n * an RTL language not in the auto-detected set, or `false` to keep LTR layout for one of them.\n */\n forceRTL?: boolean\n /* Force color scheme (light/dark); default is undefined (uses system color scheme) */\n colorScheme?: 'light' | 'dark'\n /* Override the modern default light theme tokens (deep-merged over defaults) */\n theme?: PartialChatTheme\n /* Override the modern default dark theme tokens (deep-merged over defaults) */\n darkTheme?: PartialChatTheme\n /* Override built-in icons (e.g. with lucide-react-native); drawn icons are used for any name not provided */\n icons?: ChatIcons\n /* Override UI strings; merged over the built-in translation for `locale`, then English */\n labels?: Partial<ChatLabels>\n /* Format to use for rendering times; default is 'LT' */\n timeFormat?: string\n /* Format to use for rendering dates; default is 'll' */\n dateFormat?: string\n /* Format to use for rendering relative times; Today - for now. See more: https://day.js.org/docs/en/plugin/calendar */\n dateFormatCalendar?: object\n /* Whether to render an avatar for the current user; default is false, only show avatars for other users */\n isUserAvatarVisible?: boolean\n /* When false, avatars will only be displayed when a consecutive message is from the same user on the same day; default is false */\n isAvatarVisibleForEveryMessage?: boolean\n /* Render the message avatar at the top of consecutive messages, rather than the bottom; default is false */\n isAvatarOnTop?: boolean\n /* Extra props to be passed to the <Image> component created by the default renderMessageImage */\n imageProps?: MessageImageProps<TMessage>\n /**\n * @deprecated Not read anywhere - the input toolbar has no height floor. Use\n * `textInputProps.style` to constrain the composer instead. Will be removed\n * in 5.0.0. See https://github.com/kesha-antonov/react-native-chat/issues/14\n */\n minInputToolbarHeight?: number\n /* Extra props to be passed to the <TextInput>. See https://reactnative.dev/docs/textinput */\n textInputProps?: Partial<React.ComponentProps<typeof TextInput>>\n /* Force send button */\n isSendButtonAlwaysVisible?: boolean\n /* Image style */\n imageStyle?: StyleProp<ViewStyle>\n /**\n * @deprecated Not read anywhere - `Composer` derives its minimum from its own\n * stylesheet and grows via `onContentSizeChange`. Use `textInputProps.style`\n * to constrain the composer instead. Will be removed in 5.0.0.\n * See https://github.com/kesha-antonov/react-native-chat/issues/14\n */\n minComposerHeight?: number\n /**\n * @deprecated Not read anywhere. Use `textInputProps.style` to constrain the\n * composer instead. Will be removed in 5.0.0.\n * See https://github.com/kesha-antonov/react-native-chat/issues/14\n */\n maxComposerHeight?: number\n actions?: AttachmentAction[]\n actionSheetOptionTintColor?: string\n quickReplyStyle?: StyleProp<ViewStyle>\n quickReplyTextStyle?: StyleProp<TextStyle>\n quickReplyContainerStyle?: StyleProp<ViewStyle>\n /* optional prop used to place customView below text, image and video views; default is false */\n isCustomViewBottom?: boolean\n timeTextStyle?: LeftRightStyle<TextStyle>\n /* Custom action sheet */\n actionSheet?: () => {\n showActionSheetWithOptions: (\n options: ActionSheetOptions,\n callback: (buttonIndex: number) => void | Promise<void>\n ) => void\n }\n /* Callback when a message avatar is tapped */\n onPressAvatar?: (user: User) => void\n /* Callback when a message avatar is tapped */\n onLongPressAvatar?: (user: User) => void\n /* Generate an id for new messages. Defaults to a simple random string generator */\n messageIdGenerator?: (message?: TMessage) => string\n /* Callback when sending a message */\n onSend?: (messages: TMessage[]) => void\n /* Render a loading view when initializing */\n renderLoading?: () => React.ReactNode\n /**\n * The big greeting on the empty-chat card, sent as a message when tapped. `null` leaves it\n * out, keeping just the \"No messages here yet...\" card.\n * @default '👋'\n */\n emptyChatGreeting?: string | null\n /* Custom message avatar; set to null to not render any avatar for the message */\n renderAvatar?: null | ((props: AvatarProps<TMessage>) => React.ReactNode)\n /* Custom message bubble */\n renderBubble?: (props: BubbleProps<TMessage>) => React.ReactNode\n /* Custom system message */\n renderSystemMessage?: (props: SystemMessageProps<TMessage>) => React.ReactNode\n /* Callback when a message bubble is pressed; default is to do nothing */\n onPressMessage?: (context: unknown, message: TMessage) => void\n /* Callback when a message bubble is long-pressed; default is to show an ActionSheet with \"Copy Text\" (see example using showActionSheetWithOptions()) */\n onLongPressMessage?: (context: unknown, message: TMessage) => void\n /* Custom Username container */\n renderUsername?: (user: User) => React.ReactNode\n /* Reverses display order of messages; default is true */\n /* Custom message text */\n renderMessageText?: (messageText: MessageTextProps<TMessage>) => React.ReactNode\n /* Custom message image */\n renderMessageImage?: (props: MessageImageProps<TMessage>) => React.ReactNode\n /* Custom message video */\n renderMessageVideo?: (props: MessageVideoProps<TMessage>) => React.ReactNode\n /* Custom message audio */\n renderMessageAudio?: (props: MessageAudioProps<TMessage>) => React.ReactNode\n /* Custom message location */\n renderMessageLocation?: (props: MessageLocationProps<TMessage>) => React.ReactNode\n /** Custom file bubble for `IMessage.file` (a document cell by default). */\n renderMessageFile?: (props: MessageFileProps<TMessage>) => React.ReactNode\n /* Custom view inside the bubble */\n renderCustomView?: (props: BubbleProps<TMessage>) => React.ReactNode\n /* Custom time inside a message */\n renderTime?: (props: TimeProps<TMessage>) => React.ReactNode\n /* Custom component to render below the MessagesContainer */\n renderChatFooter?: () => React.ReactNode\n /* Custom message composer container. Can be a component, element, render function, or null */\n renderInputToolbar?: React.ComponentType<InputToolbarProps<TMessage>> | React.ReactElement | ((props: InputToolbarProps<TMessage>) => React.ReactNode) | null\n /* Custom text input message composer */\n renderComposer?: (props: ComposerProps) => React.ReactNode\n /* Custom action button on the left of the message composer */\n renderActions?: (props: ActionsProps) => React.ReactNode\n /* Custom send button; you can pass children to the original Send component quite easily, for example to use a custom icon (example) */\n renderSend?: (props: SendProps<TMessage>) => React.ReactNode\n /* Custom second line of actions below the message composer */\n renderAccessory?: (props: InputToolbarProps<TMessage>) => React.ReactNode\n /* Callback when the Action button is pressed (if set, the default actionSheet will not be used) */\n onPressActionButton?: () => void\n /* Extra props to be passed to the MessageText component */\n messageTextProps?: Partial<MessageTextProps<TMessage>>\n renderQuickReplies?: (\n quickReplies: QuickRepliesProps<TMessage>\n ) => React.ReactNode\n renderQuickReplySend?: () => React.ReactNode\n keyboardProviderProps?: React.ComponentProps<typeof KeyboardProvider>\n /**\n * Render the built-in `KeyboardProvider` wrapper.\n * Turn this off when your app already mounts its own `KeyboardProvider`\n * (e.g. once at the root), or when the default `statusBarTranslucent` /\n * `navigationBarTranslucent` edge-to-edge behavior causes layout shift,\n * flicker on mount, or a header/content jump on Android/Expo.\n * Default is `true`.\n */\n enableKeyboardProvider?: boolean\n /** Props for KeyboardAvoidingView. Use `keyboardVerticalOffset` to account for headers or iOS predictive text bar (~44pt). */\n keyboardAvoidingViewProps?: KeyboardAvoidingViewProps\n /**\n * Render the `GestureHandlerRootView` Chat mounts around itself. Unlike\n * `KeyboardProvider`, an existing `GestureHandlerRootView` can't be detected from\n * here - `react-native-gesture-handler` doesn't expose that publicly - so turn\n * this off yourself when your app (or a library it uses, e.g. a bottom sheet)\n * already mounts one at the root. Nesting a second one is not just redundant: it\n * changes the native view hierarchy around the composer, which has been observed\n * to make a rare Fabric/Yoga layout assertion on iOS more likely (#17). Default is\n * `true`.\n */\n enableGestureHandlerRootView?: boolean\n /** Enable animated day label that appears on scroll; default is true */\n isDayAnimationEnabled?: boolean\n\n /** Reply functionality configuration */\n reply?: ReplyProps<TMessage>\n /** Emoji reactions configuration */\n reactions?: ReactionsProps<TMessage>\n /**\n * Long-press context menu actions. An array replaces the built-in actions. A function gets\n * the message and the built-in actions for it, and returns what to show - so you can add to,\n * filter or reorder them:\n *\n * ```tsx\n * messageActions={(message, defaults) => [...defaults.filter(a => a.key !== 'copy'), myAction]}\n * ```\n */\n messageActions?: MessageMenuItem[] | ((message: TMessage, defaults: MessageMenuItem[]) => MessageMenuItem[])\n /**\n * The built-in long-press actions, in this order: Reply, Copy, Forward, Pin / Unpin,\n * Edit, Select, Delete. Each shows only when it can work (Copy needs text and a clipboard peer;\n * Edit needs your own text message and `onEditMessage`; Forward, Pin and Delete need their\n * callbacks; Select needs something to do with a selection - a clipboard, Forward or Delete).\n * `true` (default) offers them all; an array picks and orders them; `false` turns them off.\n * They are also off when `onLongPressMessage` is set and `messageActions` is not, so an app\n * that already handles long-press keeps doing so.\n */\n defaultMessageActions?: boolean | MessageActionKey[]\n /**\n * Turns on the \"Edit\" action for your own text messages. Edit puts the text into the\n * composer under an \"Editing\" banner; sending calls this with the message and the new text\n * instead of `onSend`.\n */\n onEditMessage?: (message: TMessage, text: string) => void\n /** Turns on the \"Delete\" action. */\n onDeleteMessage?: (message: TMessage) => void\n /** Turns on the \"Forward\" action. */\n onForwardMessage?: (message: TMessage) => void\n /**\n * Forwards the messages checked in selection mode, oldest first. Without it the selection\n * bar's Forward calls `onForwardMessage` once per message.\n */\n onForwardMessages?: (messages: TMessage[]) => void\n /**\n * Deletes the messages checked in selection mode, oldest first. Without it the selection\n * bar's Delete calls `onDeleteMessage` once per message.\n */\n onDeleteMessages?: (messages: TMessage[]) => void\n /**\n * Called whenever the selection changes in multi-select mode (entered from the\n * menu's \"Select\"), with the checked messages in the order they were checked - an empty array\n * once it ends.\n */\n onSelectionChange?: (messages: TMessage[]) => void\n /**\n * The bar that replaces the composer while messages are selected (count, Copy, Forward,\n * Delete). Return your own, or `null` to keep the composer and drive the selection from your\n * header through `onSelectionChange`.\n */\n renderSelectionBar?: ((props: SelectionBarProps & { messages: TMessage[] }) => React.ReactNode) | null\n /**\n * Turns on the \"Pin\" action; it reads \"Unpin\" on a message with `isPinned`. Called with the\n * message either way - flip its `isPinned` to toggle.\n */\n onPinMessage?: (message: TMessage) => void\n /**\n * Controls whether message bubbles attach the tap / long-press gestures that\n * `reactions` and `messageActions` rely on. Pass `false` (or a predicate\n * returning `false`) for messages rendering natively interactive content -\n * a video player with its own controls, a map, a WebView - whose touches\n * must not compete with the bubble.\n * Note: with gestures off, those messages can no longer open the reaction\n * picker or the context menu.\n * @default true\n */\n isMessageGestureEnabled?: boolean | ((message: TMessage) => boolean)\n /**\n * Called when the composer's emoji button is pressed, instead of opening the built-in emoji\n * keyboard. Passing it shows the button even with `emojiKeyboard={false}`.\n */\n onPressEmoji?: () => void\n /**\n * The built-in emoji keyboard: the emoji button opens it in the\n * system keyboard's place, and a tap inserts at the caret - whether or not you control `text`.\n * On by default; `false` hides the emoji button. An object configures it:\n * `{ columns, categories, recents, isSearchEnabled, renderEmojiKeyboard }`.\n */\n emojiKeyboard?: boolean | EmojiKeyboardProps\n /**\n * The built-in attachment menu behind the composer's paperclip:\n * a photo grid with numbered selection, a caption and \"Send N\", plus File and Location tabs.\n * Each tab shows only when its optional peer is installed; picks become `IMessage`s sent\n * through `onSend`. On by default; `false` hides the paperclip. `actions`,\n * `onPressActionButton` and `renderActions` take precedence. An object configures it:\n * `{ tabs, onPick, renderAttachmentMenu }`.\n */\n attachments?: boolean | AttachmentsProps<TMessage>\n /**\n * Whether the composer accepts multiple lines. `true` (default) keeps the\n * return key inserting a newline; `false` turns it into Send.\n */\n isMultiline?: boolean\n /**\n * Hold-to-record voice notes. On by default when the optional `expo-audio` is\n * installed; `false` turns them off, an object configures them (`minDurationMs`, ...).\n */\n audioRecording?: boolean | AudioRecordingProps\n /**\n * Round video notes, recorded in the chat. On by default when `react-native-vision-camera`\n * is installed (the mic button then toggles to the camera with a tap);\n * `false` turns them off. `{ isEnabled: true }` additionally falls back to the system camera\n * (`expo-image-picker`) when vision-camera is missing.\n */\n videoRecording?: boolean | VideoRecordingProps\n /** Playback speed and auto-play-next for voice and round video notes */\n mediaPlayback?: MediaPlaybackProps\n /**\n * Handlers for the media buttons: the download arrow of a message with\n * `isDownloadRequired` and the cancel ✕ of one with `transfer`.\n */\n mediaTransfer?: MediaTransferProps\n /**\n * The history is loading: a spinner in a service-colored circle, centred over the\n * empty list. Messages already passed stay visible under it.\n */\n isLoading?: boolean\n /**\n * The chat background. By default Chat draws a swirl gradient wallpaper from\n * `theme.wallpaper` (turning one step per message you send). Return your own element to\n * replace it - an image, a gradient, `ChatWallpaper` with other props - or pass `null` for\n * the plain `theme.colors.background`.\n */\n renderWallpaper?: (() => React.ReactNode) | null\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/Chat/types.ts"],"sourcesContent":["import React, { RefObject } from 'react'\nimport {\n TextInput,\n StyleProp,\n TextStyle,\n ViewStyle,\n} from 'react-native'\nimport { KeyboardProvider, KeyboardAvoidingViewProps } from 'react-native-keyboard-controller'\n\nimport { ActionsProps } from '../Actions'\nimport { AttachmentsProps } from '../attachments/types'\nimport { AvatarProps } from '../Avatar'\nimport { BubbleProps } from '../Bubble'\nimport { ActionSheetOptions } from '../ChatContext'\nimport { AttachmentAction } from '../components/AttachmentSheet'\nimport { SelectionBarProps } from '../components/SelectionBar'\nimport { ComposerProps } from '../Composer'\nimport { EmojiKeyboardProps } from '../emoji/EmojiKeyboard'\nimport { ChatLabels } from '../i18n'\nimport { ChatIcons } from '../Icons'\nimport { InputToolbarProps } from '../InputToolbar'\nimport { MessageImageProps } from '../MessageImage'\nimport { AnimatedList, MessagesContainerProps } from '../MessagesContainer'\nimport { MessageTextProps } from '../MessageText'\nimport {\n AudioRecordingProps,\n MediaPlaybackProps,\n MediaTransferProps,\n IMessage,\n LeftRightStyle,\n MessageActionKey,\n MessageAudioProps,\n MessageFileProps,\n MessageLocationProps,\n MessageMenuItem,\n MessageVideoProps,\n User,\n VideoRecordingProps,\n} from '../Models'\nimport { QuickRepliesProps } from '../QuickReplies'\nimport { ReactionsProps } from '../Reactions'\nimport { ReplyProps } from '../Reply'\nimport { SendProps } from '../Send'\nimport { SystemMessageProps } from '../SystemMessage'\nimport { PartialChatTheme } from '../Theme'\nimport { TimeProps } from '../Time'\n\n/** What `chatRef` reaches: moving to a message from outside the chat, e.g. a search result. */\nexport interface ChatHandle {\n /**\n * Scrolls to a message, also one far up that is not measured yet, and with `isHighlighted` flashes\n * it the way a tapped quote does. `viewPosition` 0 puts it at the top, 1 at the bottom\n * (default 0.5).\n */\n scrollToMessage: (messageId: string | number, options?: { animated?: boolean, viewPosition?: number, isHighlighted?: boolean }) => void\n}\n\nexport interface ChatProps<TMessage extends IMessage> extends Partial<Omit<MessagesContainerProps<TMessage>, 'messageReplyContainerStyle'>>,\n Pick<BubbleProps<TMessage>, 'fetchLinkPreview' | 'renderLinkPreview' | 'onPressLinkPreview'> {\n /* Messages container ref */\n messagesContainerRef?: RefObject<AnimatedList>\n /**\n * Words to mark in every message's text, e.g. the query of a search in the chat\n * (case-insensitive, links included). Empty or undefined marks nothing.\n */\n highlightText?: string\n /** The marked words' style; yellow behind black text by default. */\n highlightTextStyle?: StyleProp<TextStyle>\n /** A handle for moving to a message from outside the chat; see `ChatHandle`. */\n chatRef?: React.Ref<ChatHandle | null>\n /* text input ref */\n textInputRef?: RefObject<React.ComponentRef<typeof TextInput> | null>\n /**\n * Show the sender's name on the first message of each run of incoming messages.\n * Default: on in group chats, off in one-to-one chats (see `isGroupChat`).\n */\n isUsernameVisible?: boolean\n /**\n * Show avatars beside incoming messages. Default: on in group chats, off in one-to-one\n * chats (see `isGroupChat`), and on whenever a custom `renderAvatar` is passed.\n */\n isAvatarVisible?: boolean\n /**\n * Whether this is a group chat, which turns on avatars and sender names. Default:\n * auto-detected - more than one other sender in `messages` means a group.\n */\n isGroupChat?: boolean\n /* Messages container style */\n messagesContainerStyle?: StyleProp<ViewStyle>\n /* Input text; default is undefined, but if specified, it will override Chat's internal state */\n text?: string\n initialText?: string\n /**\n * The user's draft changed: called as they type, with '' once it is sent. Editing a message\n * sets the draft aside (this is not called with the edited text) and brings it back after.\n * Save it with the chat and pass it back as `initialText` to restore it next time.\n */\n onDraftChange?: (draft: string) => void\n /* User sending the messages: { _id, name, avatar } */\n user?: User\n /* Locale to localize the dates */\n locale?: string\n /**\n * Force right-to-left layout on or off. Defaults to auto-detecting from `locale` (Arabic,\n * Hebrew, Persian, Urdu, and a few others). Set this to override the guess - e.g. `true` for\n * an RTL language not in the auto-detected set, or `false` to keep LTR layout for one of them.\n */\n forceRTL?: boolean\n /* Force color scheme (light/dark); default is undefined (uses system color scheme) */\n colorScheme?: 'light' | 'dark'\n /* Override the modern default light theme tokens (deep-merged over defaults) */\n theme?: PartialChatTheme\n /* Override the modern default dark theme tokens (deep-merged over defaults) */\n darkTheme?: PartialChatTheme\n /* Override built-in icons (e.g. with lucide-react-native); drawn icons are used for any name not provided */\n icons?: ChatIcons\n /* Override UI strings; merged over the built-in translation for `locale`, then English */\n labels?: Partial<ChatLabels>\n /* Format to use for rendering times; default is 'LT' */\n timeFormat?: string\n /* Format to use for rendering dates; default is 'll' */\n dateFormat?: string\n /* Format to use for rendering relative times; Today - for now. See more: https://day.js.org/docs/en/plugin/calendar */\n dateFormatCalendar?: object\n /* Whether to render an avatar for the current user; default is false, only show avatars for other users */\n isUserAvatarVisible?: boolean\n /* When false, avatars will only be displayed when a consecutive message is from the same user on the same day; default is false */\n isAvatarVisibleForEveryMessage?: boolean\n /* Render the message avatar at the top of consecutive messages, rather than the bottom; default is false */\n isAvatarOnTop?: boolean\n /* Extra props to be passed to the <Image> component created by the default renderMessageImage */\n imageProps?: MessageImageProps<TMessage>\n /**\n * @deprecated Not read anywhere - the input toolbar has no height floor. Use\n * `textInputProps.style` to constrain the composer instead. Will be removed\n * in 5.0.0. See https://github.com/kesha-antonov/react-native-chat/issues/14\n */\n minInputToolbarHeight?: number\n /* Extra props to be passed to the <TextInput>. See https://reactnative.dev/docs/textinput */\n textInputProps?: Partial<React.ComponentProps<typeof TextInput>>\n /* Force send button */\n isSendButtonAlwaysVisible?: boolean\n /* Image style */\n imageStyle?: StyleProp<ViewStyle>\n /**\n * @deprecated Not read anywhere - `Composer` derives its minimum from its own\n * stylesheet and grows via `onContentSizeChange`. Use `textInputProps.style`\n * to constrain the composer instead. Will be removed in 5.0.0.\n * See https://github.com/kesha-antonov/react-native-chat/issues/14\n */\n minComposerHeight?: number\n /**\n * @deprecated Not read anywhere. Use `textInputProps.style` to constrain the\n * composer instead. Will be removed in 5.0.0.\n * See https://github.com/kesha-antonov/react-native-chat/issues/14\n */\n maxComposerHeight?: number\n actions?: AttachmentAction[]\n actionSheetOptionTintColor?: string\n quickReplyStyle?: StyleProp<ViewStyle>\n quickReplyTextStyle?: StyleProp<TextStyle>\n quickReplyContainerStyle?: StyleProp<ViewStyle>\n /* optional prop used to place customView below text, image and video views; default is false */\n isCustomViewBottom?: boolean\n timeTextStyle?: LeftRightStyle<TextStyle>\n /* Custom action sheet */\n actionSheet?: () => {\n showActionSheetWithOptions: (\n options: ActionSheetOptions,\n callback: (buttonIndex: number) => void | Promise<void>\n ) => void\n }\n /* Callback when a message avatar is tapped */\n onPressAvatar?: (user: User) => void\n /* Callback when a message avatar is tapped */\n onLongPressAvatar?: (user: User) => void\n /* Generate an id for new messages. Defaults to a simple random string generator */\n messageIdGenerator?: (message?: TMessage) => string\n /* Callback when sending a message */\n onSend?: (messages: TMessage[]) => void\n /* Render a loading view when initializing */\n renderLoading?: () => React.ReactNode\n /**\n * The big greeting on the empty-chat card, sent as a message when tapped. `null` leaves it\n * out, keeping just the \"No messages here yet...\" card.\n * @default '👋'\n */\n emptyChatGreeting?: string | null\n /* Custom message avatar; set to null to not render any avatar for the message */\n renderAvatar?: null | ((props: AvatarProps<TMessage>) => React.ReactNode)\n /* Custom message bubble */\n renderBubble?: (props: BubbleProps<TMessage>) => React.ReactNode\n /* Custom system message */\n renderSystemMessage?: (props: SystemMessageProps<TMessage>) => React.ReactNode\n /* Callback when a message bubble is pressed; default is to do nothing */\n onPressMessage?: (context: unknown, message: TMessage) => void\n /* Callback when a message bubble is long-pressed; default is to show an ActionSheet with \"Copy Text\" (see example using showActionSheetWithOptions()) */\n onLongPressMessage?: (context: unknown, message: TMessage) => void\n /* Custom Username container */\n renderUsername?: (user: User) => React.ReactNode\n /* Reverses display order of messages; default is true */\n /* Custom message text */\n renderMessageText?: (messageText: MessageTextProps<TMessage>) => React.ReactNode\n /* Custom message image */\n renderMessageImage?: (props: MessageImageProps<TMessage>) => React.ReactNode\n /* Custom message video */\n renderMessageVideo?: (props: MessageVideoProps<TMessage>) => React.ReactNode\n /* Custom message audio */\n renderMessageAudio?: (props: MessageAudioProps<TMessage>) => React.ReactNode\n /* Custom message location */\n renderMessageLocation?: (props: MessageLocationProps<TMessage>) => React.ReactNode\n /** Custom file bubble for `IMessage.file` (a document cell by default). */\n renderMessageFile?: (props: MessageFileProps<TMessage>) => React.ReactNode\n /* Custom view inside the bubble */\n renderCustomView?: (props: BubbleProps<TMessage>) => React.ReactNode\n /* Custom time inside a message */\n renderTime?: (props: TimeProps<TMessage>) => React.ReactNode\n /* Custom component to render below the MessagesContainer */\n renderChatFooter?: () => React.ReactNode\n /* Custom message composer container. Can be a component, element, render function, or null */\n /** The composer's space for the home indicator, when the host knows it better (see `InputToolbar`). */\n bottomInset?: number\n renderInputToolbar?: React.ComponentType<InputToolbarProps<TMessage>> | React.ReactElement | ((props: InputToolbarProps<TMessage>) => React.ReactNode) | null\n /* Custom text input message composer */\n renderComposer?: (props: ComposerProps) => React.ReactNode\n /* Custom action button on the left of the message composer */\n renderActions?: (props: ActionsProps) => React.ReactNode\n /* Custom send button; you can pass children to the original Send component quite easily, for example to use a custom icon (example) */\n renderSend?: (props: SendProps<TMessage>) => React.ReactNode\n /* Custom second line of actions below the message composer */\n renderAccessory?: (props: InputToolbarProps<TMessage>) => React.ReactNode\n /* Callback when the Action button is pressed (if set, the default actionSheet will not be used) */\n onPressActionButton?: () => void\n /* Extra props to be passed to the MessageText component */\n messageTextProps?: Partial<MessageTextProps<TMessage>>\n renderQuickReplies?: (\n quickReplies: QuickRepliesProps<TMessage>\n ) => React.ReactNode\n renderQuickReplySend?: () => React.ReactNode\n keyboardProviderProps?: React.ComponentProps<typeof KeyboardProvider>\n /**\n * Render the built-in `KeyboardProvider` wrapper.\n * Turn this off when your app already mounts its own `KeyboardProvider`\n * (e.g. once at the root), or when the default `statusBarTranslucent` /\n * `navigationBarTranslucent` edge-to-edge behavior causes layout shift,\n * flicker on mount, or a header/content jump on Android/Expo.\n * Default is `true`.\n */\n enableKeyboardProvider?: boolean\n /** Props for KeyboardAvoidingView. Use `keyboardVerticalOffset` to account for headers or iOS predictive text bar (~44pt). */\n keyboardAvoidingViewProps?: KeyboardAvoidingViewProps\n /**\n * Render the `GestureHandlerRootView` Chat mounts around itself. Unlike\n * `KeyboardProvider`, an existing `GestureHandlerRootView` can't be detected from\n * here - `react-native-gesture-handler` doesn't expose that publicly - so turn\n * this off yourself when your app (or a library it uses, e.g. a bottom sheet)\n * already mounts one at the root. Nesting a second one is not just redundant: it\n * changes the native view hierarchy around the composer, which has been observed\n * to make a rare Fabric/Yoga layout assertion on iOS more likely (#17). Default is\n * `true`.\n */\n enableGestureHandlerRootView?: boolean\n /** Enable animated day label that appears on scroll; default is true */\n isDayAnimationEnabled?: boolean\n\n /** Reply functionality configuration */\n reply?: ReplyProps<TMessage>\n /** Emoji reactions configuration */\n reactions?: ReactionsProps<TMessage>\n /**\n * Long-press context menu actions. An array replaces the built-in actions. A function gets\n * the message and the built-in actions for it, and returns what to show - so you can add to,\n * filter or reorder them:\n *\n * ```tsx\n * messageActions={(message, defaults) => [...defaults.filter(a => a.key !== 'copy'), myAction]}\n * ```\n */\n messageActions?: MessageMenuItem[] | ((message: TMessage, defaults: MessageMenuItem[]) => MessageMenuItem[])\n /**\n * The built-in long-press actions, in this order: Reply, Copy, Forward, Pin / Unpin,\n * Edit, Select, Delete. Each shows only when it can work (Copy needs text and a clipboard peer;\n * Edit needs your own text message and `onEditMessage`; Forward, Pin and Delete need their\n * callbacks; Select needs something to do with a selection - a clipboard, Forward or Delete).\n * `true` (default) offers them all; an array picks and orders them; `false` turns them off.\n * They are also off when `onLongPressMessage` is set and `messageActions` is not, so an app\n * that already handles long-press keeps doing so.\n */\n defaultMessageActions?: boolean | MessageActionKey[]\n /**\n * Turns on the \"Edit\" action for your own text messages. Edit puts the text into the\n * composer under an \"Editing\" banner; sending calls this with the message and the new text\n * instead of `onSend`.\n */\n onEditMessage?: (message: TMessage, text: string) => void\n /** Turns on the \"Delete\" action. */\n onDeleteMessage?: (message: TMessage) => void\n /**\n * Turns on \"Retry\" for your own messages that failed to send (`isFailed`): it comes first in\n * their menu, above Delete, whatever `defaultMessageActions` lists.\n */\n onRetryMessage?: (message: TMessage) => void\n /** Turns on the \"Forward\" action. */\n onForwardMessage?: (message: TMessage) => void\n /**\n * Forwards the messages checked in selection mode, oldest first. Without it the selection\n * bar's Forward calls `onForwardMessage` once per message.\n */\n onForwardMessages?: (messages: TMessage[]) => void\n /**\n * Deletes the messages checked in selection mode, oldest first. Without it the selection\n * bar's Delete calls `onDeleteMessage` once per message.\n */\n onDeleteMessages?: (messages: TMessage[]) => void\n /**\n * Called whenever the selection changes in multi-select mode (entered from the\n * menu's \"Select\"), with the checked messages in the order they were checked - an empty array\n * once it ends.\n */\n onSelectionChange?: (messages: TMessage[]) => void\n /**\n * The bar that replaces the composer while messages are selected (count, Copy, Forward,\n * Delete). Return your own, or `null` to keep the composer and drive the selection from your\n * header through `onSelectionChange`.\n */\n renderSelectionBar?: ((props: SelectionBarProps & { messages: TMessage[] }) => React.ReactNode) | null\n /**\n * Turns on the \"Pin\" action; it reads \"Unpin\" on a message with `isPinned`. Called with the\n * message either way - flip its `isPinned` to toggle.\n */\n onPinMessage?: (message: TMessage) => void\n /**\n * Controls whether message bubbles attach the tap / long-press gestures that\n * `reactions` and `messageActions` rely on. Pass `false` (or a predicate\n * returning `false`) for messages rendering natively interactive content -\n * a video player with its own controls, a map, a WebView - whose touches\n * must not compete with the bubble.\n * Note: with gestures off, those messages can no longer open the reaction\n * picker or the context menu.\n * @default true\n */\n isMessageGestureEnabled?: boolean | ((message: TMessage) => boolean)\n /**\n * Called when the composer's emoji button is pressed, instead of opening the built-in emoji\n * keyboard. Passing it shows the button even with `emojiKeyboard={false}`.\n */\n onPressEmoji?: () => void\n /**\n * The built-in emoji keyboard: the emoji button opens it in the\n * system keyboard's place, and a tap inserts at the caret - whether or not you control `text`.\n * On by default; `false` hides the emoji button. An object configures it:\n * `{ columns, categories, recents, isSearchEnabled, renderEmojiKeyboard }`.\n */\n emojiKeyboard?: boolean | EmojiKeyboardProps\n /**\n * The built-in attachment menu behind the composer's paperclip:\n * a photo grid with numbered selection, a caption and \"Send N\", plus File and Location tabs.\n * Each tab shows only when its optional peer is installed; picks become `IMessage`s sent\n * through `onSend`. On by default; `false` hides the paperclip. `actions`,\n * `onPressActionButton` and `renderActions` take precedence. An object configures it:\n * `{ tabs, onPick, renderAttachmentMenu }`.\n */\n attachments?: boolean | AttachmentsProps<TMessage>\n /**\n * Whether the composer accepts multiple lines. `true` (default) keeps the\n * return key inserting a newline; `false` turns it into Send.\n */\n isMultiline?: boolean\n /**\n * Hold-to-record voice notes. On by default when the optional `expo-audio` is\n * installed; `false` turns them off, an object configures them (`minDurationMs`, ...).\n */\n audioRecording?: boolean | AudioRecordingProps\n /**\n * Round video notes, recorded in the chat. On by default when `react-native-vision-camera`\n * is installed (the mic button then toggles to the camera with a tap);\n * `false` turns them off. `{ isEnabled: true }` additionally falls back to the system camera\n * (`expo-image-picker`) when vision-camera is missing.\n */\n videoRecording?: boolean | VideoRecordingProps\n /** Playback speed and auto-play-next for voice and round video notes */\n mediaPlayback?: MediaPlaybackProps\n /**\n * Handlers for the media buttons: the download arrow of a message with\n * `isDownloadRequired` and the cancel ✕ of one with `transfer`.\n */\n mediaTransfer?: MediaTransferProps\n /**\n * The history is loading: a spinner in a service-colored circle, centred over the\n * empty list. Messages already passed stay visible under it.\n */\n isLoading?: boolean\n /**\n * The chat background. By default Chat draws a swirl gradient wallpaper from\n * `theme.wallpaper` (turning one step per message you send). Return your own element to\n * replace it - an image, a gradient, `ChatWallpaper` with other props - or pass `null` for\n * the plain `theme.colors.background`.\n */\n renderWallpaper?: (() => React.ReactNode) | null\n}\n"],"mappings":"","ignoreList":[]}
@@ -28,6 +28,7 @@ export declare function useMessageActions<TMessage extends IMessage>({ props, us
28
28
  onPinMessage: ((message: TMessage) => void) | undefined;
29
29
  onForwardMessages: ((messages: TMessage[]) => void) | undefined;
30
30
  onDeleteMessages: ((messages: TMessage[]) => void) | undefined;
31
+ onRetryMessage: ((message: TMessage) => void) | undefined;
31
32
  }>;
32
33
  hasClipboard: boolean;
33
34
  copySelection: (selected: TMessage[]) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useMessageActions.d.ts","sourceRoot":"","sources":["../../src/Chat/useMessageActions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,SAAS,QAAQ,EAAG,EAC5D,KAAK,EACL,MAAM,EACN,cAAc,EACd,cAAc,EACd,UAAU,EACV,SAAS,EACT,QAAQ,EACR,SAAS,EACT,cAAc,EACd,cAAc,GACf,EAAE;IACD,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC1B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IACnC,cAAc,EAAE,UAAU,CAAA;IAC1B,cAAc,EAAE,OAAO,CAAA;IACvB,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAA;IACvC,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAA;IACtC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;IACjC,cAAc,EAAE,mBAAmB,CAAA;IACnC,cAAc,EAAE,qBAAqB,CAAA;CACtC;2DAmFsB,QAAQ;;;;;;;;;;8BAsBgB,QAAQ,EAAE;kCAUnC,QAAQ,EAAE;iCAaV,QAAQ,EAAE;EAc/B"}
1
+ {"version":3,"file":"useMessageActions.d.ts","sourceRoot":"","sources":["../../src/Chat/useMessageActions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,SAAS,QAAQ,EAAG,EAC5D,KAAK,EACL,MAAM,EACN,cAAc,EACd,cAAc,EACd,UAAU,EACV,SAAS,EACT,QAAQ,EACR,SAAS,EACT,cAAc,EACd,cAAc,GACf,EAAE;IACD,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC1B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IACnC,cAAc,EAAE,UAAU,CAAA;IAC1B,cAAc,EAAE,OAAO,CAAA;IACvB,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAA;IACvC,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAA;IACtC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;IACjC,cAAc,EAAE,mBAAmB,CAAA;IACnC,cAAc,EAAE,qBAAqB,CAAA;CACtC;2DAsFsB,QAAQ;;;;;;;;;;;8BAuBgB,QAAQ,EAAE;kCAUnC,QAAQ,EAAE;iCAaV,QAAQ,EAAE;EAc/B"}