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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/README.md +27 -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":"Composer.js","names":["React","useCallback","StyleSheet","View","TextInput","useColorScheme","useIsRTL","useLabels","useTheme","useThemedStyles","DEFAULT_LINE_HEIGHT","Composer","t0","$","_c","text","t1","textInputProps","isMultiline","t2","isTextOptional","t3","onSend","undefined","colorScheme","theme","labels","styles","createStyles","isDark","isRTL","maxHeight","composer","placeholder","ONE_LINE","minHeight","t4","trimmedText","trim","length","handleSubmitEditing","t5","placeholderTextColor","colors","t6","t7","returnKeyType","onSubmitEditing","submitBehavior","t8","t9","writingDirection","textAlign","t10","style","t11","textInput","stylesWeb","t12","inputCursor","t13","field","lineHeight","typography","paddingVertical","Math","max","create","flex","justifyContent","fontSize","fontWeight","paddingTop","paddingBottom","paddingHorizontal","color","inputText","outlineStyle"],"sources":["../src/Composer.tsx"],"sourcesContent":["import React, { useCallback } from 'react'\nimport {\n StyleSheet,\n TextInputProps,\n View,\n} from 'react-native'\nimport { TextInput } from 'react-native-gesture-handler'\nimport { useColorScheme } from './hooks/useColorScheme'\nimport { useIsRTL } from './hooks/useIsRTL'\nimport { useLabels } from './hooks/useLabels'\nimport { useTheme, useThemedStyles } from './hooks/useTheme'\nimport { IMessage } from './Models'\nimport { ChatTheme } from './Theme'\n\nexport interface ComposerProps {\n composerHeight?: number\n text?: string\n textInputProps?: Partial<TextInputProps>\n /**\n * Whether the field accepts multiple lines.\n *\n * `true` (default) keeps the return key inserting a newline - send with the\n * send button. `false` turns the return key into Send, which is what a\n * single-line composer should do. Previously the field was always multiline\n * with no submit handler, so the return key could never send at all.\n */\n isMultiline?: boolean\n /** Allow sending an empty message (media-only sends). */\n isTextOptional?: boolean\n onSend?(\n messages: Partial<IMessage> | Partial<IMessage>[],\n shouldResetInputToolbar: boolean,\n ): void\n}\n\n// The input text is 18, from `theme.typography.composer`. The vertical\n// padding is derived from the island height (see createStyles) so a single line of text is\n// vertically centered in it.\nconst DEFAULT_LINE_HEIGHT = 21\n\nexport function Composer ({\n text = '',\n textInputProps,\n isMultiline = true,\n isTextOptional = false,\n onSend,\n}: ComposerProps): React.ReactElement {\n const colorScheme = useColorScheme()\n const theme = useTheme()\n const labels = useLabels()\n const styles = useThemedStyles(createStyles)\n const isDark = colorScheme === 'dark'\n const isRTL = useIsRTL()\n\n const maxHeight = theme.composer.maxHeight\n const placeholder = textInputProps?.placeholder ?? labels.placeholder\n\n // A single line fills the bar height so its text sits centered (symmetric\n // padding); it grows from there up to maxHeight.\n const ONE_LINE = theme.composer.minHeight\n\n // Single-line mode: the return key sends, mirroring the send button exactly.\n const handleSubmitEditing = useCallback(() => {\n const trimmedText = text.trim()\n\n if (onSend && (trimmedText.length || isTextOptional))\n onSend({ text: trimmedText } as Partial<IMessage>, true)\n }, [text, onSend, isTextOptional])\n\n return (\n <View style={styles.field}>\n <TextInput\n testID={placeholder}\n accessible\n accessibilityLabel={placeholder}\n placeholderTextColor={textInputProps?.placeholderTextColor ?? theme.colors.placeholder}\n selectionColor={theme.colors.inputCursor}\n cursorColor={theme.colors.inputCursor}\n value={text}\n enablesReturnKeyAutomatically\n underlineColorAndroid='transparent'\n keyboardAppearance={isDark ? 'dark' : 'default'}\n multiline={isMultiline}\n placeholder={placeholder}\n {...(isMultiline\n ? null\n : {\n returnKeyType: 'send' as const,\n onSubmitEditing: handleSubmitEditing,\n // Keep the keyboard up after sending, the way a chat should behave.\n submitBehavior: 'submit' as const,\n })}\n {...textInputProps}\n style={[\n styles.textInput,\n stylesWeb.textInput,\n { minHeight: ONE_LINE, maxHeight },\n // Otherwise an empty RTL-locale field has nothing to auto-detect\n // direction from: the caret and placeholder would default to LTR.\n isRTL && { writingDirection: 'rtl', textAlign: 'right' },\n textInputProps?.style,\n ]}\n />\n </View>\n )\n}\n\nconst createStyles = (theme: ChatTheme) => {\n // Center a single line vertically: split the leftover space (bar height minus\n // one line of text) into equal top/bottom padding.\n const lineHeight = theme.typography.composer.lineHeight ?? DEFAULT_LINE_HEIGHT\n const paddingVertical = Math.max(4, (theme.composer.minHeight - lineHeight) / 2)\n\n return StyleSheet.create({\n // Transparent slot: the rounded pill is provided by the InputToolbar field\n // group so the inset emoji/attachment buttons share the pill surface.\n field: {\n flex: 1,\n justifyContent: 'center',\n minHeight: theme.composer.minHeight,\n },\n textInput: {\n fontSize: theme.typography.composer.fontSize,\n lineHeight,\n fontWeight: theme.typography.composer.fontWeight,\n paddingTop: paddingVertical,\n paddingBottom: paddingVertical,\n paddingHorizontal: 0,\n color: theme.colors.inputText,\n },\n })\n}\n\nconst stylesWeb = StyleSheet.create({\n textInput: {\n /* @ts-expect-error - web-specific styles */\n outlineStyle: 'none',\n },\n})\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SACEC,UAAU,EAEVC,IAAI,QACC,cAAc;AACrB,SAASC,SAAS,QAAQ,8BAA8B;AACxD,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,QAAQ,QAAQ,kBAAkB;AAC3C,SAASC,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,QAAQ,EAAEC,eAAe,QAAQ,kBAAkB;AAyB5D;AACA;AACA;AACA,MAAMC,mBAAmB,GAAG,EAAE;AAE9B,OAAO,SAAAC,SAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAAmB;IAAAC,IAAA,EAAAC,EAAA;IAAAC,cAAA;IAAAC,WAAA,EAAAC,EAAA;IAAAC,cAAA,EAAAC,EAAA;IAAAC;EAAA,IAAAV,EAMV;EALd,MAAAG,IAAA,GAAAC,EAAS,KAATO,SAAS,GAAT,EAAS,GAATP,EAAS;EAET,MAAAE,WAAA,GAAAC,EAAkB,KAAlBI,SAAkB,GAAlB,IAAkB,GAAlBJ,EAAkB;EAClB,MAAAC,cAAA,GAAAC,EAAsB,KAAtBE,SAAsB,GAAtB,KAAsB,GAAtBF,EAAsB;EAGtB,MAAAG,WAAA,GAAoBnB,cAAc,CAAC,CAAC;EACpC,MAAAoB,KAAA,GAAcjB,QAAQ,CAAC,CAAC;EACxB,MAAAkB,MAAA,GAAenB,SAAS,CAAC,CAAC;EAC1B,MAAAoB,MAAA,GAAelB,eAAe,CAACmB,YAAY,CAAC;EAC5C,MAAAC,MAAA,GAAeL,WAAW,KAAK,MAAM;EACrC,MAAAM,KAAA,GAAcxB,QAAQ,CAAC,CAAC;EAExB,MAAAyB,SAAA,GAAkBN,KAAK,CAAAO,QAAS,CAAAD,SAAU;EAC1C,MAAAE,WAAA,GAAoBhB,cAAc,EAAAgB,WAAmC,IAAlBP,MAAM,CAAAO,WAAY;EAIrE,MAAAC,QAAA,GAAiBT,KAAK,CAAAO,QAAS,CAAAG,SAAU;EAAA,IAAAC,EAAA;EAAA,IAAAvB,CAAA,QAAAO,cAAA,IAAAP,CAAA,QAAAS,MAAA,IAAAT,CAAA,QAAAE,IAAA;IAGDqB,EAAA,GAAAA,CAAA;MACtC,MAAAC,WAAA,GAAoBtB,IAAI,CAAAuB,IAAK,CAAC,CAAC;MAE/B,IAAIhB,MAAgD,KAArCe,WAAW,CAAAE,MAAyB,IAApCnB,cAAqC;QAClDE,MAAM,CAAC;UAAAP,IAAA,EAAQsB;QAAY,CAAC,EAAuB,IAAI,CAAC;MAAA;IAAA,CAC3D;IAAAxB,CAAA,MAAAO,cAAA;IAAAP,CAAA,MAAAS,MAAA;IAAAT,CAAA,MAAAE,IAAA;IAAAF,CAAA,MAAAuB,EAAA;EAAA;IAAAA,EAAA,GAAAvB,CAAA;EAAA;EALD,MAAA2B,mBAAA,GAA4BJ,EAKM;EAQN,MAAAK,EAAA,GAAAxB,cAAc,EAAAyB,oBAAkD,IAAxBjB,KAAK,CAAAkB,MAAO,CAAAV,WAAY;EAMlE,MAAAW,EAAA,GAAAf,MAAM,GAAN,MAA2B,GAA3B,SAA2B;EAAA,IAAAgB,EAAA;EAAA,IAAAhC,CAAA,QAAA2B,mBAAA,IAAA3B,CAAA,QAAAK,WAAA;IAG1C2B,EAAA,GAAA3B,WAAW,GAAX,IAOF,GAPE;MAAA4B,aAAA,EAGc,MAAM;MAAAC,eAAA,EACJP,mBAAmB;MAAAQ,cAAA,EAEpB;IAClB,CAAC;IAAAnC,CAAA,MAAA2B,mBAAA;IAAA3B,CAAA,MAAAK,WAAA;IAAAL,CAAA,MAAAgC,EAAA;EAAA;IAAAA,EAAA,GAAAhC,CAAA;EAAA;EAAA,IAAAoC,EAAA;EAAA,IAAApC,CAAA,QAAAqB,QAAA,IAAArB,CAAA,QAAAkB,SAAA;IAKDkB,EAAA;MAAAd,SAAA,EAAaD,QAAQ;MAAAH;IAAY,CAAC;IAAAlB,CAAA,MAAAqB,QAAA;IAAArB,CAAA,MAAAkB,SAAA;IAAAlB,CAAA,MAAAoC,EAAA;EAAA;IAAAA,EAAA,GAAApC,CAAA;EAAA;EAAA,IAAAqC,EAAA;EAAA,IAAArC,CAAA,SAAAiB,KAAA;IAGlCoB,EAAA,GAAApB,KAAwD,IAAxD;MAAAqB,gBAAA,EAA6B,KAAK;MAAAC,SAAA,EAAa;IAAQ,CAAC;IAAAvC,CAAA,OAAAiB,KAAA;IAAAjB,CAAA,OAAAqC,EAAA;EAAA;IAAAA,EAAA,GAAArC,CAAA;EAAA;EACxD,MAAAwC,GAAA,GAAApC,cAAc,EAAAqC,KAAO;EAAA,IAAAC,GAAA;EAAA,IAAA1C,CAAA,SAAAc,MAAA,CAAA6B,SAAA,IAAA3C,CAAA,SAAAwC,GAAA,IAAAxC,CAAA,SAAAoC,EAAA,IAAApC,CAAA,SAAAqC,EAAA;IAPhBK,GAAA,IACL5B,MAAM,CAAA6B,SAAU,EAChBC,SAAS,CAAAD,SAAU,EACnBP,EAAkC,EAGlCC,EAAwD,EACxDG,GAAqB,CACtB;IAAAxC,CAAA,OAAAc,MAAA,CAAA6B,SAAA;IAAA3C,CAAA,OAAAwC,GAAA;IAAAxC,CAAA,OAAAoC,EAAA;IAAApC,CAAA,OAAAqC,EAAA;IAAArC,CAAA,OAAA0C,GAAA;EAAA;IAAAA,GAAA,GAAA1C,CAAA;EAAA;EAAA,IAAA6C,GAAA;EAAA,IAAA7C,CAAA,SAAAK,WAAA,IAAAL,CAAA,SAAAoB,WAAA,IAAApB,CAAA,SAAA0C,GAAA,IAAA1C,CAAA,SAAA4B,EAAA,IAAA5B,CAAA,SAAA+B,EAAA,IAAA/B,CAAA,SAAAgC,EAAA,IAAAhC,CAAA,SAAAE,IAAA,IAAAF,CAAA,SAAAI,cAAA,IAAAJ,CAAA,SAAAY,KAAA,CAAAkB,MAAA,CAAAgB,WAAA;IA9BHD,GAAA,IAAC,SAAS,CACAzB,MAAW,CAAXA,YAAU,CAAC,CACnB,UAAU,CAAV,KAAS,CAAC,CACUA,kBAAW,CAAXA,YAAU,CAAC,CACT,oBAAgE,CAAhE,CAAAQ,EAA+D,CAAC,CACtE,cAAwB,CAAxB,CAAAhB,KAAK,CAAAkB,MAAO,CAAAgB,WAAW,CAAC,CAC3B,WAAwB,CAAxB,CAAAlC,KAAK,CAAAkB,MAAO,CAAAgB,WAAW,CAAC,CAC9B5C,KAAI,CAAJA,KAAG,CAAC,CACX,6BAA6B,CAA7B,KAA4B,CAAC,CACP,qBAAa,CAAb,aAAa,CACf,kBAA2B,CAA3B,CAAA6B,EAA0B,CAAC,CACpC1B,SAAW,CAAXA,YAAU,CAAC,CACTe,WAAW,CAAXA,YAAU,CAAC,KACnBY,EAOF,MACC5B,cAAc,EACX,KAQN,CARM,CAAAsC,GAQP,CAAC,GACD;IAAA1C,CAAA,OAAAK,WAAA;IAAAL,CAAA,OAAAoB,WAAA;IAAApB,CAAA,OAAA0C,GAAA;IAAA1C,CAAA,OAAA4B,EAAA;IAAA5B,CAAA,OAAA+B,EAAA;IAAA/B,CAAA,OAAAgC,EAAA;IAAAhC,CAAA,OAAAE,IAAA;IAAAF,CAAA,OAAAI,cAAA;IAAAJ,CAAA,OAAAY,KAAA,CAAAkB,MAAA,CAAAgB,WAAA;IAAA9C,CAAA,OAAA6C,GAAA;EAAA;IAAAA,GAAA,GAAA7C,CAAA;EAAA;EAAA,IAAA+C,GAAA;EAAA,IAAA/C,CAAA,SAAAc,MAAA,CAAAkC,KAAA,IAAAhD,CAAA,SAAA6C,GAAA;IAhCJE,GAAA,IAAC,IAAI,CAAQ,KAAY,CAAZ,CAAAjC,MAAM,CAAAkC,KAAK,CAAC,CACvB,CAAAH,GA+BC,CACH,EAjCC,IAAI,CAiCE;IAAA7C,CAAA,OAAAc,MAAA,CAAAkC,KAAA;IAAAhD,CAAA,OAAA6C,GAAA;IAAA7C,CAAA,OAAA+C,GAAA;EAAA;IAAAA,GAAA,GAAA/C,CAAA;EAAA;EAAA,OAjCP+C,GAiCO;AAAA;AAIX,MAAMhC,YAAY,GAAIH,KAAgB,IAAK;EACzC;EACA;EACA,MAAMqC,UAAU,GAAGrC,KAAK,CAACsC,UAAU,CAAC/B,QAAQ,CAAC8B,UAAU,IAAIpD,mBAAmB;EAC9E,MAAMsD,eAAe,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,CAACzC,KAAK,CAACO,QAAQ,CAACG,SAAS,GAAG2B,UAAU,IAAI,CAAC,CAAC;EAEhF,OAAO5D,UAAU,CAACiE,MAAM,CAAC;IACvB;IACA;IACAN,KAAK,EAAE;MACLO,IAAI,EAAE,CAAC;MACPC,cAAc,EAAE,QAAQ;MACxBlC,SAAS,EAAEV,KAAK,CAACO,QAAQ,CAACG;IAC5B,CAAC;IACDqB,SAAS,EAAE;MACTc,QAAQ,EAAE7C,KAAK,CAACsC,UAAU,CAAC/B,QAAQ,CAACsC,QAAQ;MAC5CR,UAAU;MACVS,UAAU,EAAE9C,KAAK,CAACsC,UAAU,CAAC/B,QAAQ,CAACuC,UAAU;MAChDC,UAAU,EAAER,eAAe;MAC3BS,aAAa,EAAET,eAAe;MAC9BU,iBAAiB,EAAE,CAAC;MACpBC,KAAK,EAAElD,KAAK,CAACkB,MAAM,CAACiC;IACtB;EACF,CAAC,CAAC;AACJ,CAAC;AAED,MAAMnB,SAAS,GAAGvD,UAAU,CAACiE,MAAM,CAAC;EAClCX,SAAS,EAAE;IACT;IACAqB,YAAY,EAAE;EAChB;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Composer.js","names":["React","useCallback","StyleSheet","View","TextInput","useColorScheme","useIsRTL","useLabels","useTheme","useThemedStyles","DEFAULT_LINE_HEIGHT","Composer","t0","$","_c","text","t1","textInputProps","isMultiline","t2","isTextOptional","t3","onSend","undefined","colorScheme","theme","labels","styles","createStyles","isDark","isRTL","maxHeight","composer","placeholder","ONE_LINE","minHeight","t4","trimmedText","trim","length","handleSubmitEditing","t5","placeholderTextColor","colors","t6","t7","returnKeyType","onSubmitEditing","submitBehavior","t8","t9","writingDirection","textAlign","t10","style","t11","textInput","stylesWeb","t12","inputCursor","t13","field","lineHeight","typography","paddingVertical","Math","max","create","flex","justifyContent","fontSize","fontWeight","paddingTop","paddingBottom","paddingHorizontal","color","inputText","includeFontPadding","textAlignVertical","outlineStyle"],"sources":["../src/Composer.tsx"],"sourcesContent":["import React, { useCallback } from 'react'\nimport {\n StyleSheet,\n TextInputProps,\n View,\n} from 'react-native'\nimport { TextInput } from 'react-native-gesture-handler'\nimport { useColorScheme } from './hooks/useColorScheme'\nimport { useIsRTL } from './hooks/useIsRTL'\nimport { useLabels } from './hooks/useLabels'\nimport { useTheme, useThemedStyles } from './hooks/useTheme'\nimport { IMessage } from './Models'\nimport { ChatTheme } from './Theme'\n\nexport interface ComposerProps {\n composerHeight?: number\n text?: string\n textInputProps?: Partial<TextInputProps>\n /**\n * Whether the field accepts multiple lines.\n *\n * `true` (default) keeps the return key inserting a newline - send with the\n * send button. `false` turns the return key into Send, which is what a\n * single-line composer should do. Previously the field was always multiline\n * with no submit handler, so the return key could never send at all.\n */\n isMultiline?: boolean\n /** Allow sending an empty message (media-only sends). */\n isTextOptional?: boolean\n onSend?(\n messages: Partial<IMessage> | Partial<IMessage>[],\n shouldResetInputToolbar: boolean,\n ): void\n}\n\n// The input text is 18, from `theme.typography.composer`. The vertical\n// padding is derived from the island height (see createStyles) so a single line of text is\n// vertically centered in it.\nconst DEFAULT_LINE_HEIGHT = 21\n\nexport function Composer ({\n text = '',\n textInputProps,\n isMultiline = true,\n isTextOptional = false,\n onSend,\n}: ComposerProps): React.ReactElement {\n const colorScheme = useColorScheme()\n const theme = useTheme()\n const labels = useLabels()\n const styles = useThemedStyles(createStyles)\n const isDark = colorScheme === 'dark'\n const isRTL = useIsRTL()\n\n const maxHeight = theme.composer.maxHeight\n const placeholder = textInputProps?.placeholder ?? labels.placeholder\n\n // A single line fills the bar height so its text sits centered (symmetric\n // padding); it grows from there up to maxHeight.\n const ONE_LINE = theme.composer.minHeight\n\n // Single-line mode: the return key sends, mirroring the send button exactly.\n const handleSubmitEditing = useCallback(() => {\n const trimmedText = text.trim()\n\n if (onSend && (trimmedText.length || isTextOptional))\n onSend({ text: trimmedText } as Partial<IMessage>, true)\n }, [text, onSend, isTextOptional])\n\n return (\n <View style={styles.field}>\n <TextInput\n testID={placeholder}\n accessible\n accessibilityLabel={placeholder}\n placeholderTextColor={textInputProps?.placeholderTextColor ?? theme.colors.placeholder}\n selectionColor={theme.colors.inputCursor}\n cursorColor={theme.colors.inputCursor}\n value={text}\n enablesReturnKeyAutomatically\n underlineColorAndroid='transparent'\n keyboardAppearance={isDark ? 'dark' : 'default'}\n multiline={isMultiline}\n placeholder={placeholder}\n {...(isMultiline\n ? null\n : {\n returnKeyType: 'send' as const,\n onSubmitEditing: handleSubmitEditing,\n // Keep the keyboard up after sending, the way a chat should behave.\n submitBehavior: 'submit' as const,\n })}\n {...textInputProps}\n style={[\n styles.textInput,\n stylesWeb.textInput,\n { minHeight: ONE_LINE, maxHeight },\n // Otherwise an empty RTL-locale field has nothing to auto-detect\n // direction from: the caret and placeholder would default to LTR.\n isRTL && { writingDirection: 'rtl', textAlign: 'right' },\n textInputProps?.style,\n ]}\n />\n </View>\n )\n}\n\nconst createStyles = (theme: ChatTheme) => {\n // Center a single line vertically: split the leftover space (bar height minus\n // one line of text) into equal top/bottom padding.\n const lineHeight = theme.typography.composer.lineHeight ?? DEFAULT_LINE_HEIGHT\n const paddingVertical = Math.max(4, (theme.composer.minHeight - lineHeight) / 2)\n\n return StyleSheet.create({\n // Transparent slot: the rounded pill is provided by the InputToolbar field\n // group so the inset emoji/attachment buttons share the pill surface.\n field: {\n flex: 1,\n justifyContent: 'center',\n minHeight: theme.composer.minHeight,\n },\n textInput: {\n fontSize: theme.typography.composer.fontSize,\n lineHeight,\n fontWeight: theme.typography.composer.fontWeight,\n paddingTop: paddingVertical,\n paddingBottom: paddingVertical,\n paddingHorizontal: 0,\n color: theme.colors.inputText,\n // Android adds font padding above the text and re-measures on the first glyph, so the text\n // dropped a little once you started typing; without it the placeholder and the text share a line.\n includeFontPadding: false,\n textAlignVertical: 'center',\n },\n })\n}\n\nconst stylesWeb = StyleSheet.create({\n textInput: {\n /* @ts-expect-error - web-specific styles */\n outlineStyle: 'none',\n },\n})\n"],"mappings":"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","ignoreList":[]}
@@ -5,7 +5,7 @@ import { InputToolbarProps } from './types';
5
5
  /** The text field, built-in or `renderComposer`. */
6
6
  export declare function useComposerFragment<TMessage extends IMessage>(props: InputToolbarProps<TMessage>, onComposerFocus: () => void, rememberSelection: (selection: TextSelection) => void): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined;
7
7
  /** The send button, built-in or `renderSend`. */
8
- export declare function useSendFragment<TMessage extends IMessage>(props: InputToolbarProps<TMessage>): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined;
8
+ export declare function useSendFragment<TMessage extends IMessage>(props: InputToolbarProps<TMessage>, isSendButtonAlwaysVisible?: boolean): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element | null | undefined;
9
9
  /** Whatever `renderAccessory` draws under the island. */
10
10
  export declare function useAccessoryFragment<TMessage extends IMessage>(props: InputToolbarProps<TMessage>): React.ReactNode;
11
11
  /** The reply or editing banner on top of the island. */
@@ -1 +1 @@
1
- {"version":3,"file":"fragments.d.ts","sourceRoot":"","sources":["../../src/InputToolbar/fragments.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAA;AAInD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAGpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAI3C,oDAAoD;AACpD,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS,QAAQ,EAC3D,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAClC,eAAe,EAAE,MAAM,IAAI,EAC3B,iBAAiB,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,mSA2BtD;AAED,iDAAiD;AACjD,wBAAgB,eAAe,CAAC,QAAQ,SAAS,QAAQ,EAAG,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,mSAQ7F;AAED,yDAAyD;AACzD,wBAAgB,oBAAoB,CAAC,QAAQ,SAAS,QAAQ,EAAG,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,mBAQlG;AAED,wDAAwD;AACxD,wBAAgB,uBAAuB,CAAC,QAAQ,SAAS,QAAQ,EAAG,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,mSA+CrG"}
1
+ {"version":3,"file":"fragments.d.ts","sourceRoot":"","sources":["../../src/InputToolbar/fragments.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAA;AAInD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAGpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAI3C,oDAAoD;AACpD,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS,QAAQ,EAC3D,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAClC,eAAe,EAAE,MAAM,IAAI,EAC3B,iBAAiB,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,mSA2BtD;AAED,iDAAiD;AACjD,wBAAgB,eAAe,CAAC,QAAQ,SAAS,QAAQ,EAAG,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC,EAAE,OAAO,mSAQlI;AAED,yDAAyD;AACzD,wBAAgB,oBAAoB,CAAC,QAAQ,SAAS,QAAQ,EAAG,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,mBAQlG;AAED,wDAAwD;AACxD,wBAAgB,uBAAuB,CAAC,QAAQ,SAAS,QAAQ,EAAG,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,mSA+CrG"}
@@ -70,8 +70,8 @@ export function useComposerFragment(props, onComposerFocus, rememberSelection) {
70
70
  }
71
71
 
72
72
  /** The send button, built-in or `renderSend`. */
73
- export function useSendFragment(props) {
74
- const $ = _c(5);
73
+ export function useSendFragment(props, isSendButtonAlwaysVisible) {
74
+ const $ = _c(6);
75
75
  const renderSend = props.renderSend;
76
76
  let t0;
77
77
  bb0: {
@@ -88,15 +88,17 @@ export function useSendFragment(props) {
88
88
  t0 = t1;
89
89
  break bb0;
90
90
  }
91
- let t1;
92
- if ($[3] !== props) {
93
- t1 = <Send {...props} />;
91
+ const t1 = isSendButtonAlwaysVisible ?? props.isSendButtonAlwaysVisible;
92
+ let t2;
93
+ if ($[3] !== props || $[4] !== t1) {
94
+ t2 = <Send {...props} isSendButtonAlwaysVisible={t1} />;
94
95
  $[3] = props;
95
96
  $[4] = t1;
97
+ $[5] = t2;
96
98
  } else {
97
- t1 = $[4];
99
+ t2 = $[5];
98
100
  }
99
- t0 = t1;
101
+ t0 = t2;
100
102
  }
101
103
  return t0;
102
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fragments.js","names":["React","useCallback","useMemo","ReplyPreview","Composer","Send","renderComponentOrElement","useComposerFragment","props","onComposerFocus","rememberSelection","$","_c","renderComposer","t0","bb0","textInputProps","t1","event","onFocus","t2","event_0","nativeEvent","selection","onSelectionChange","composerProps","t3","useSendFragment","renderSend","useAccessoryFragment","renderAccessory","useReplyPreviewFragment","replyMessage","onClearReply","editMessage","onCancelEdit","renderReplyPreview","renderReplyPreviewProp","replyPreviewContainerStyle","replyPreviewTextStyle","handleClearReply","handleCancelEdit","isEditing","previewMessage","replyPreviewProps","mode","containerStyle","textStyle","t4"],"sources":["../../src/InputToolbar/fragments.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react'\n\nimport { ReplyPreview, ReplyPreviewProps } from '../components/ReplyPreview'\nimport { Composer, ComposerProps } from '../Composer'\nimport { TextSelection } from '../emoji/textEditing'\nimport { IMessage } from '../Models'\nimport { Send } from '../Send'\nimport { renderComponentOrElement } from '../utils'\nimport { InputToolbarProps } from './types'\n\ntype TextInputProps = NonNullable<ComposerProps['textInputProps']>\n\n/** The text field, built-in or `renderComposer`. */\nexport function useComposerFragment<TMessage extends IMessage> (\n props: InputToolbarProps<TMessage>,\n onComposerFocus: () => void,\n rememberSelection: (selection: TextSelection) => void\n) {\n const renderComposer = props.renderComposer\n return useMemo(() => {\n const textInputProps = props.textInputProps\n // The composer reports its caret, so an emoji lands where it is, and its focus, which\n // brings the system keyboard back in the emoji panel's place.\n const composerProps = {\n ...props,\n textInputProps: {\n ...textInputProps,\n onFocus: (event: Parameters<NonNullable<TextInputProps['onFocus']>>[0]) => {\n onComposerFocus()\n textInputProps?.onFocus?.(event)\n },\n onSelectionChange: (event: Parameters<NonNullable<TextInputProps['onSelectionChange']>>[0]) => {\n rememberSelection(event.nativeEvent.selection)\n textInputProps?.onSelectionChange?.(event)\n },\n },\n } as ComposerProps\n\n if (renderComposer)\n return renderComponentOrElement(renderComposer, composerProps)\n\n return <Composer {...composerProps} />\n }, [renderComposer, props, onComposerFocus, rememberSelection])\n}\n\n/** The send button, built-in or `renderSend`. */\nexport function useSendFragment<TMessage extends IMessage> (props: InputToolbarProps<TMessage>) {\n const renderSend = props.renderSend\n return useMemo(() => {\n if (renderSend)\n return renderComponentOrElement(renderSend, props)\n\n return <Send {...props} />\n }, [renderSend, props])\n}\n\n/** Whatever `renderAccessory` draws under the island. */\nexport function useAccessoryFragment<TMessage extends IMessage> (props: InputToolbarProps<TMessage>) {\n const renderAccessory = props.renderAccessory\n return useMemo(() => {\n if (!renderAccessory)\n return null\n\n return renderComponentOrElement(renderAccessory, props)\n }, [renderAccessory, props])\n}\n\n/** The reply or editing banner on top of the island. */\nexport function useReplyPreviewFragment<TMessage extends IMessage> (props: InputToolbarProps<TMessage>) {\n const {\n replyMessage,\n onClearReply,\n editMessage,\n onCancelEdit,\n renderReplyPreview: renderReplyPreviewProp,\n replyPreviewContainerStyle,\n replyPreviewTextStyle,\n } = props\n\n const handleClearReply = useCallback(() => {\n onClearReply?.()\n }, [onClearReply])\n\n const handleCancelEdit = useCallback(() => {\n onCancelEdit?.()\n }, [onCancelEdit])\n\n return useMemo(() => {\n const isEditing = !!editMessage\n const previewMessage = editMessage ?? replyMessage\n if (!previewMessage)\n return null\n\n const replyPreviewProps: ReplyPreviewProps = {\n replyMessage: previewMessage,\n onClearReply: isEditing ? handleCancelEdit : handleClearReply,\n mode: isEditing ? 'edit' : 'reply',\n containerStyle: replyPreviewContainerStyle,\n textStyle: replyPreviewTextStyle,\n }\n\n if (renderReplyPreviewProp)\n return renderComponentOrElement(renderReplyPreviewProp, replyPreviewProps)\n\n // Keyed by mode, so switching between replying and editing plays the banner in again.\n return <ReplyPreview key={isEditing ? 'edit' : 'reply'} {...replyPreviewProps} />\n }, [\n replyMessage,\n editMessage,\n handleClearReply,\n handleCancelEdit,\n renderReplyPreviewProp,\n replyPreviewContainerStyle,\n replyPreviewTextStyle,\n ])\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"fragments.js","names":["React","useCallback","useMemo","ReplyPreview","Composer","Send","renderComponentOrElement","useComposerFragment","props","onComposerFocus","rememberSelection","$","_c","renderComposer","t0","bb0","textInputProps","t1","event","onFocus","t2","event_0","nativeEvent","selection","onSelectionChange","composerProps","t3","useSendFragment","isSendButtonAlwaysVisible","renderSend","useAccessoryFragment","renderAccessory","useReplyPreviewFragment","replyMessage","onClearReply","editMessage","onCancelEdit","renderReplyPreview","renderReplyPreviewProp","replyPreviewContainerStyle","replyPreviewTextStyle","handleClearReply","handleCancelEdit","isEditing","previewMessage","replyPreviewProps","mode","containerStyle","textStyle","t4"],"sources":["../../src/InputToolbar/fragments.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react'\n\nimport { ReplyPreview, ReplyPreviewProps } from '../components/ReplyPreview'\nimport { Composer, ComposerProps } from '../Composer'\nimport { TextSelection } from '../emoji/textEditing'\nimport { IMessage } from '../Models'\nimport { Send } from '../Send'\nimport { renderComponentOrElement } from '../utils'\nimport { InputToolbarProps } from './types'\n\ntype TextInputProps = NonNullable<ComposerProps['textInputProps']>\n\n/** The text field, built-in or `renderComposer`. */\nexport function useComposerFragment<TMessage extends IMessage> (\n props: InputToolbarProps<TMessage>,\n onComposerFocus: () => void,\n rememberSelection: (selection: TextSelection) => void\n) {\n const renderComposer = props.renderComposer\n return useMemo(() => {\n const textInputProps = props.textInputProps\n // The composer reports its caret, so an emoji lands where it is, and its focus, which\n // brings the system keyboard back in the emoji panel's place.\n const composerProps = {\n ...props,\n textInputProps: {\n ...textInputProps,\n onFocus: (event: Parameters<NonNullable<TextInputProps['onFocus']>>[0]) => {\n onComposerFocus()\n textInputProps?.onFocus?.(event)\n },\n onSelectionChange: (event: Parameters<NonNullable<TextInputProps['onSelectionChange']>>[0]) => {\n rememberSelection(event.nativeEvent.selection)\n textInputProps?.onSelectionChange?.(event)\n },\n },\n } as ComposerProps\n\n if (renderComposer)\n return renderComponentOrElement(renderComposer, composerProps)\n\n return <Composer {...composerProps} />\n }, [renderComposer, props, onComposerFocus, rememberSelection])\n}\n\n/** The send button, built-in or `renderSend`. */\nexport function useSendFragment<TMessage extends IMessage> (props: InputToolbarProps<TMessage>, isSendButtonAlwaysVisible?: boolean) {\n const renderSend = props.renderSend\n return useMemo(() => {\n if (renderSend)\n return renderComponentOrElement(renderSend, props)\n\n return <Send {...props} isSendButtonAlwaysVisible={isSendButtonAlwaysVisible ?? props.isSendButtonAlwaysVisible} />\n }, [renderSend, props, isSendButtonAlwaysVisible])\n}\n\n/** Whatever `renderAccessory` draws under the island. */\nexport function useAccessoryFragment<TMessage extends IMessage> (props: InputToolbarProps<TMessage>) {\n const renderAccessory = props.renderAccessory\n return useMemo(() => {\n if (!renderAccessory)\n return null\n\n return renderComponentOrElement(renderAccessory, props)\n }, [renderAccessory, props])\n}\n\n/** The reply or editing banner on top of the island. */\nexport function useReplyPreviewFragment<TMessage extends IMessage> (props: InputToolbarProps<TMessage>) {\n const {\n replyMessage,\n onClearReply,\n editMessage,\n onCancelEdit,\n renderReplyPreview: renderReplyPreviewProp,\n replyPreviewContainerStyle,\n replyPreviewTextStyle,\n } = props\n\n const handleClearReply = useCallback(() => {\n onClearReply?.()\n }, [onClearReply])\n\n const handleCancelEdit = useCallback(() => {\n onCancelEdit?.()\n }, [onCancelEdit])\n\n return useMemo(() => {\n const isEditing = !!editMessage\n const previewMessage = editMessage ?? replyMessage\n if (!previewMessage)\n return null\n\n const replyPreviewProps: ReplyPreviewProps = {\n replyMessage: previewMessage,\n onClearReply: isEditing ? handleCancelEdit : handleClearReply,\n mode: isEditing ? 'edit' : 'reply',\n containerStyle: replyPreviewContainerStyle,\n textStyle: replyPreviewTextStyle,\n }\n\n if (renderReplyPreviewProp)\n return renderComponentOrElement(renderReplyPreviewProp, replyPreviewProps)\n\n // Keyed by mode, so switching between replying and editing plays the banner in again.\n return <ReplyPreview key={isEditing ? 'edit' : 'reply'} {...replyPreviewProps} />\n }, [\n replyMessage,\n editMessage,\n handleClearReply,\n handleCancelEdit,\n renderReplyPreviewProp,\n replyPreviewContainerStyle,\n replyPreviewTextStyle,\n ])\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/InputToolbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAA;AAWjD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAOpC,OAAO,EAAE,iBAAiB,EAAU,MAAM,SAAS,CAAA;AAUnD,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACnE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD,wBAAgB,YAAY,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,EAC/D,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,qBA8MnC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/InputToolbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAA;AAWjD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAOpC,OAAO,EAAE,iBAAiB,EAAU,MAAM,SAAS,CAAA;AAUnD,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACnE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD,wBAAgB,YAAY,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,EAC/D,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,qBAkNnC"}
@@ -93,7 +93,7 @@ export function InputToolbar(props) {
93
93
  insertEmoji,
94
94
  deleteBackwardInComposer
95
95
  } = useComposerEditing(props.text ?? "", props.textInputProps?.onChangeText);
96
- const insetStyle = useKeyboardInset(emoji.open);
96
+ const insetStyle = useKeyboardInset(emoji.open, props.bottomInset);
97
97
  let t6;
98
98
  if ($[13] !== containerStyle || $[14] !== insetStyle || $[15] !== styles.container) {
99
99
  t6 = [styles.container, insetStyle, containerStyle];
@@ -136,7 +136,6 @@ export function InputToolbar(props) {
136
136
  }
137
137
  const emojiFragment = useEmojiButton(t9);
138
138
  const composerFragment = useComposerFragment(props, emoji.onComposerFocus, rememberSelection);
139
- const sendFragment = useSendFragment(props);
140
139
  const onSend = props.onSend;
141
140
  let t10;
142
141
  if ($[26] !== props.text) {
@@ -167,6 +166,8 @@ export function InputToolbar(props) {
167
166
  isVideoHoldEnabled,
168
167
  canToggleMode
169
168
  } = t11;
169
+ const isSendAlwaysVisible = props.isSendButtonAlwaysVisible ?? (!isVoiceEnabled && !showVideo);
170
+ const sendFragment = useSendFragment(props, isSendAlwaysVisible);
170
171
  let t12;
171
172
  if ($[31] !== closeEmoji || $[32] !== onSend || $[33] !== videoConfig) {
172
173
  t12 = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useEffect","useMemo","View","Animated","LayoutAnimationConfig","useComposerPanels","GlassSurface","RecordingBar","VideoRecordButton","EmojiKeyboardPanel","resolveEmojiKeyboard","useEmojiKeyboard","useIsRTL","useTheme","useThemedStyles","swapIn","swapOut","FieldGroup","useAttachStyle","useAccessoryFragment","useComposerFragment","useReplyPreviewFragment","useSendFragment","resolveRecordingOptions","createStyles","TakePreviewBar","useActionsFragment","useComposerEditing","useEmojiButton","useKeyboardInset","useRecordMode","useRecordTake","useReturnAnimations","useRightControl","InputToolbar","props","$","_c","containerStyle","styles","theme","isRTL","t0","emojiKeyboard","onPressEmoji","emojiConfig","textInputRef","textInputProps","ref","t1","current","focus","focusComposer","t2","t3","defaultHeight","isEnabled","emoji","composerPanels","closeEmoji","close","t4","t5","setCloser","rememberSelection","insertEmoji","deleteBackwardInComposer","text","onChangeText","insetStyle","open","t6","container","containerStyles","t7","rowReverse","t8","primaryStyle","primary","primaryStyles","actionsFragment","t9","isOpen","toggle","isEmojiOpen","toggleEmoji","emojiFragment","composerFragment","onComposerFocus","sendFragment","onSend","t10","trim","hasText","attachStyle","t11","canRecord","audioConfig","videoConfig","isVoiceEnabled","showVoice","showVideo","isVideoHoldEnabled","canToggleMode","t12","take","meter","videoSession","setOverlay","videoOverlay","isVideoTake","recording","voicePreview","videoPreview","isPreviewing","isRecordingActive","isCancelLingering","hasHadTake","cancelRecording","t13","isTakeInProgress","mode","recordHint","toggleRecordMode","onVoiceQuickRelease","onVideoQuickRelease","t14","onRecordExit","slideProgress","updateVoiceState","voiceRef","rightControl","kind","rightControlKind","t15","bb0","t16","videoFragment","accessoryFragment","replyPreviewFragment","canTakeAway","isFieldShown","lastExit","returning","t17","detachedOverlay","t18","t19","islandRow","t20","islandSurface","colors","inputBackground","inputFieldBorder","t21","slideDistance","trimVoicePreview","elapsed","locked","isCapturing","t22","t23","island","t24","rightSlot","t25","t26","t27","t28"],"sources":["../../src/InputToolbar/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from 'react'\nimport { View } from 'react-native'\nimport Animated, { LayoutAnimationConfig } from 'react-native-reanimated'\n\nimport { useComposerPanels } from '../components/composerPanels'\nimport { GlassSurface } from '../components/GlassSurface'\nimport { RecordingBar } from '../components/RecordingBar'\nimport { VideoRecordButton } from '../components/VideoRecordButton'\nimport { EmojiKeyboardPanel, resolveEmojiKeyboard, useEmojiKeyboard } from '../emoji/EmojiKeyboard'\nimport { useIsRTL } from '../hooks/useIsRTL'\nimport { useTheme, useThemedStyles } from '../hooks/useTheme'\nimport { IMessage } from '../Models'\nimport { swapIn, swapOut } from './animations'\nimport { FieldGroup, useAttachStyle } from './FieldGroup'\nimport { useAccessoryFragment, useComposerFragment, useReplyPreviewFragment, useSendFragment } from './fragments'\nimport { resolveRecordingOptions } from './recordingOptions'\nimport { createStyles } from './styles'\nimport { TakePreviewBar } from './TakePreviewBar'\nimport { InputToolbarProps, OnSend } from './types'\nimport { useActionsFragment } from './useActionsFragment'\nimport { useComposerEditing } from './useComposerEditing'\nimport { useEmojiButton } from './useEmojiButton'\nimport { useKeyboardInset } from './useKeyboardInset'\nimport { useRecordMode } from './useRecordMode'\nimport { useRecordTake } from './useRecordTake'\nimport { useReturnAnimations } from './useReturnAnimations'\nimport { useRightControl } from './useRightControl'\n\nexport type { ReplyPreviewProps } from '../components/ReplyPreview'\nexport type { InputToolbarProps } from './types'\n\nexport function InputToolbar<TMessage extends IMessage = IMessage> (\n props: InputToolbarProps<TMessage>\n) {\n const { containerStyle } = props\n\n const styles = useThemedStyles(createStyles)\n const theme = useTheme()\n const isRTL = useIsRTL()\n\n // The built-in emoji keyboard, unless the app handles the button itself.\n const emojiConfig = props.onPressEmoji ? null : resolveEmojiKeyboard(props.emojiKeyboard)\n const textInputRef = (props.textInputProps as { ref?: React.RefObject<{ focus?: () => void } | null> } | undefined)?.ref\n const focusComposer = () => {\n textInputRef?.current?.focus?.()\n }\n const emoji = useEmojiKeyboard({\n isEnabled: !!emojiConfig,\n focusComposer,\n defaultHeight: theme.emojiKeyboard.defaultHeight,\n })\n\n // The message list closes the panel on a tap.\n const composerPanels = useComposerPanels()\n const closeEmoji = emoji.close\n useEffect(() => {\n composerPanels?.setCloser(closeEmoji)\n return () => composerPanels?.setCloser(null)\n }, [composerPanels, closeEmoji])\n\n const { rememberSelection, insertEmoji, deleteBackwardInComposer } =\n useComposerEditing(props.text ?? '', props.textInputProps?.onChangeText)\n\n // The emoji panel covers the indicator just as the keyboard does.\n const insetStyle = useKeyboardInset(emoji.open)\n\n const containerStyles = useMemo(() => [\n styles.container,\n insetStyle,\n containerStyle,\n ], [styles, insetStyle, containerStyle])\n\n const primaryStyles = useMemo(() => [\n styles.primary,\n isRTL && styles.rowReverse,\n props.primaryStyle,\n ], [styles, isRTL, props.primaryStyle])\n\n const actionsFragment = useActionsFragment(props, closeEmoji)\n\n const emojiFragment = useEmojiButton({\n onPressEmoji: props.onPressEmoji,\n emojiConfig,\n isEmojiOpen: emoji.isOpen,\n toggleEmoji: emoji.toggle,\n })\n\n const composerFragment = useComposerFragment(props, emoji.onComposerFocus, rememberSelection)\n const sendFragment = useSendFragment(props)\n\n // onSend is forwarded from Chat at runtime; it isn't part of the public\n // InputToolbarProps surface, so read it through a typed cast.\n const onSend = (props as { onSend?: OnSend<TMessage> }).onSend\n\n // The record button when the composer is empty,\n // otherwise the send button.\n const hasText = !!props.text?.trim()\n const attachStyle = useAttachStyle(hasText)\n\n const {\n canRecord,\n audioConfig,\n videoConfig,\n isVoiceEnabled,\n showVoice,\n showVideo,\n isVideoHoldEnabled,\n canToggleMode,\n } = resolveRecordingOptions(props, hasText)\n\n const take = useRecordTake<TMessage>({ videoConfig, onSend, closeEmoji })\n const {\n meter,\n videoSession,\n setOverlay,\n videoOverlay,\n isVideoTake,\n recording,\n voicePreview,\n videoPreview,\n isPreviewing,\n isRecordingActive,\n isCancelLingering,\n hasHadTake,\n cancelRecording,\n } = take\n\n const { mode, recordHint, toggleRecordMode, onVoiceQuickRelease, onVideoQuickRelease } =\n useRecordMode({ canToggleMode, isVoiceEnabled, isTakeInProgress: take.isTakeInProgress })\n\n const { rightControl, kind: rightControlKind } = useRightControl<TMessage>({\n mode,\n canRecord,\n canToggleMode,\n showVoice,\n isVideoHoldEnabled,\n audioConfig,\n videoConfig,\n isVideoTake,\n videoSession,\n voiceRef: take.voiceRef,\n meter,\n updateVoiceState: take.updateVoiceState,\n slideProgress: take.slideProgress,\n onRecordExit: take.onRecordExit,\n recordHint,\n toggleRecordMode,\n onVoiceQuickRelease,\n onVideoQuickRelease,\n onSend,\n sendFragment,\n })\n\n // Inset camera button inside the field, for the system-camera fallback when\n // video is the only mode. With vision-camera the camera takes the record\n // button's slot instead.\n const videoFragment = useMemo(() => {\n if (!showVideo || canToggleMode || isVideoHoldEnabled)\n return null\n\n return <VideoRecordButton<TMessage> config={videoConfig} onSend={onSend} />\n }, [showVideo, canToggleMode, isVideoHoldEnabled, videoConfig, onSend])\n\n const accessoryFragment = useAccessoryFragment(props)\n const replyPreviewFragment = useReplyPreviewFragment(props)\n\n // Only a take ever takes the field away, so only then do its parts animate.\n const canTakeAway = showVoice || isVideoHoldEnabled\n const isFieldShown = !isPreviewing && !isRecordingActive && !isCancelLingering\n const returning = useReturnAnimations({ isFieldShown, lastExit: take.lastExit, hasHadTake, isRTL })\n\n return (\n <>\n <Animated.View style={containerStyles}>\n {!setOverlay && videoOverlay && (\n <View style={styles.detachedOverlay} pointerEvents='box-none'>\n {videoOverlay}\n </View>\n )}\n <View style={[styles.islandRow, isRTL && styles.rowReverse]}>\n <View style={styles.island}>\n <GlassSurface color={theme.colors.inputBackground} borderColor={theme.colors.inputFieldBorder} style={styles.islandSurface} />\n {replyPreviewFragment}\n <View style={primaryStyles}>\n {isPreviewing\n ? (\n <TakePreviewBar\n voicePreview={voicePreview}\n videoPreview={videoPreview}\n onDelete={cancelRecording}\n onTrimVoice={take.trimVoicePreview}\n />\n )\n : isRecordingActive || isCancelLingering\n ? (\n <RecordingBar\n elapsed={meter.elapsed}\n isLocked={isRecordingActive && recording.locked}\n isBlinking={!isVideoTake || videoSession.isCapturing}\n isCancelled={!isRecordingActive}\n slideProgress={take.slideProgress}\n slideDistance={take.slideDistance}\n onCancel={cancelRecording}\n />\n )\n : (\n <FieldGroup\n emojiFragment={emojiFragment}\n composerFragment={composerFragment}\n actionsFragment={actionsFragment}\n videoFragment={videoFragment}\n attachStyle={attachStyle}\n hasText={hasText}\n hasHadTake={hasHadTake}\n canTakeAway={canTakeAway}\n returning={returning}\n />\n )}\n </View>\n </View>\n <LayoutAnimationConfig skipEntering>\n <Animated.View key={rightControlKind} style={styles.rightSlot} entering={swapIn} exiting={swapOut}>\n {rightControl}\n </Animated.View>\n </LayoutAnimationConfig>\n </View>\n {accessoryFragment}\n </Animated.View>\n {emojiConfig && (\n <EmojiKeyboardPanel\n controller={emoji}\n config={emojiConfig}\n onSelect={insertEmoji}\n onBackspace={deleteBackwardInComposer}\n />\n )}\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useEffect","useMemo","View","Animated","LayoutAnimationConfig","useComposerPanels","GlassSurface","RecordingBar","VideoRecordButton","EmojiKeyboardPanel","resolveEmojiKeyboard","useEmojiKeyboard","useIsRTL","useTheme","useThemedStyles","swapIn","swapOut","FieldGroup","useAttachStyle","useAccessoryFragment","useComposerFragment","useReplyPreviewFragment","useSendFragment","resolveRecordingOptions","createStyles","TakePreviewBar","useActionsFragment","useComposerEditing","useEmojiButton","useKeyboardInset","useRecordMode","useRecordTake","useReturnAnimations","useRightControl","InputToolbar","props","$","_c","containerStyle","styles","theme","isRTL","t0","emojiKeyboard","onPressEmoji","emojiConfig","textInputRef","textInputProps","ref","t1","current","focus","focusComposer","t2","t3","defaultHeight","isEnabled","emoji","composerPanels","closeEmoji","close","t4","t5","setCloser","rememberSelection","insertEmoji","deleteBackwardInComposer","text","onChangeText","insetStyle","open","bottomInset","t6","container","containerStyles","t7","rowReverse","t8","primaryStyle","primary","primaryStyles","actionsFragment","t9","isOpen","toggle","isEmojiOpen","toggleEmoji","emojiFragment","composerFragment","onComposerFocus","onSend","t10","trim","hasText","attachStyle","t11","canRecord","audioConfig","videoConfig","isVoiceEnabled","showVoice","showVideo","isVideoHoldEnabled","canToggleMode","isSendAlwaysVisible","isSendButtonAlwaysVisible","sendFragment","t12","take","meter","videoSession","setOverlay","videoOverlay","isVideoTake","recording","voicePreview","videoPreview","isPreviewing","isRecordingActive","isCancelLingering","hasHadTake","cancelRecording","t13","isTakeInProgress","mode","recordHint","toggleRecordMode","onVoiceQuickRelease","onVideoQuickRelease","t14","onRecordExit","slideProgress","updateVoiceState","voiceRef","rightControl","kind","rightControlKind","t15","bb0","t16","videoFragment","accessoryFragment","replyPreviewFragment","canTakeAway","isFieldShown","lastExit","returning","t17","detachedOverlay","t18","t19","islandRow","t20","islandSurface","colors","inputBackground","inputFieldBorder","t21","slideDistance","trimVoicePreview","elapsed","locked","isCapturing","t22","t23","island","t24","rightSlot","t25","t26","t27","t28"],"sources":["../../src/InputToolbar/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from 'react'\nimport { View } from 'react-native'\nimport Animated, { LayoutAnimationConfig } from 'react-native-reanimated'\n\nimport { useComposerPanels } from '../components/composerPanels'\nimport { GlassSurface } from '../components/GlassSurface'\nimport { RecordingBar } from '../components/RecordingBar'\nimport { VideoRecordButton } from '../components/VideoRecordButton'\nimport { EmojiKeyboardPanel, resolveEmojiKeyboard, useEmojiKeyboard } from '../emoji/EmojiKeyboard'\nimport { useIsRTL } from '../hooks/useIsRTL'\nimport { useTheme, useThemedStyles } from '../hooks/useTheme'\nimport { IMessage } from '../Models'\nimport { swapIn, swapOut } from './animations'\nimport { FieldGroup, useAttachStyle } from './FieldGroup'\nimport { useAccessoryFragment, useComposerFragment, useReplyPreviewFragment, useSendFragment } from './fragments'\nimport { resolveRecordingOptions } from './recordingOptions'\nimport { createStyles } from './styles'\nimport { TakePreviewBar } from './TakePreviewBar'\nimport { InputToolbarProps, OnSend } from './types'\nimport { useActionsFragment } from './useActionsFragment'\nimport { useComposerEditing } from './useComposerEditing'\nimport { useEmojiButton } from './useEmojiButton'\nimport { useKeyboardInset } from './useKeyboardInset'\nimport { useRecordMode } from './useRecordMode'\nimport { useRecordTake } from './useRecordTake'\nimport { useReturnAnimations } from './useReturnAnimations'\nimport { useRightControl } from './useRightControl'\n\nexport type { ReplyPreviewProps } from '../components/ReplyPreview'\nexport type { InputToolbarProps } from './types'\n\nexport function InputToolbar<TMessage extends IMessage = IMessage> (\n props: InputToolbarProps<TMessage>\n) {\n const { containerStyle } = props\n\n const styles = useThemedStyles(createStyles)\n const theme = useTheme()\n const isRTL = useIsRTL()\n\n // The built-in emoji keyboard, unless the app handles the button itself.\n const emojiConfig = props.onPressEmoji ? null : resolveEmojiKeyboard(props.emojiKeyboard)\n const textInputRef = (props.textInputProps as { ref?: React.RefObject<{ focus?: () => void } | null> } | undefined)?.ref\n const focusComposer = () => {\n textInputRef?.current?.focus?.()\n }\n const emoji = useEmojiKeyboard({\n isEnabled: !!emojiConfig,\n focusComposer,\n defaultHeight: theme.emojiKeyboard.defaultHeight,\n })\n\n // The message list closes the panel on a tap.\n const composerPanels = useComposerPanels()\n const closeEmoji = emoji.close\n useEffect(() => {\n composerPanels?.setCloser(closeEmoji)\n return () => composerPanels?.setCloser(null)\n }, [composerPanels, closeEmoji])\n\n const { rememberSelection, insertEmoji, deleteBackwardInComposer } =\n useComposerEditing(props.text ?? '', props.textInputProps?.onChangeText)\n\n // The emoji panel covers the indicator just as the keyboard does.\n const insetStyle = useKeyboardInset(emoji.open, props.bottomInset)\n\n const containerStyles = useMemo(() => [\n styles.container,\n insetStyle,\n containerStyle,\n ], [styles, insetStyle, containerStyle])\n\n const primaryStyles = useMemo(() => [\n styles.primary,\n isRTL && styles.rowReverse,\n props.primaryStyle,\n ], [styles, isRTL, props.primaryStyle])\n\n const actionsFragment = useActionsFragment(props, closeEmoji)\n\n const emojiFragment = useEmojiButton({\n onPressEmoji: props.onPressEmoji,\n emojiConfig,\n isEmojiOpen: emoji.isOpen,\n toggleEmoji: emoji.toggle,\n })\n\n const composerFragment = useComposerFragment(props, emoji.onComposerFocus, rememberSelection)\n\n // onSend is forwarded from Chat at runtime; it isn't part of the public\n // InputToolbarProps surface, so read it through a typed cast.\n const onSend = (props as { onSend?: OnSend<TMessage> }).onSend\n\n // The record button when the composer is empty,\n // otherwise the send button.\n const hasText = !!props.text?.trim()\n const attachStyle = useAttachStyle(hasText)\n\n const {\n canRecord,\n audioConfig,\n videoConfig,\n isVoiceEnabled,\n showVoice,\n showVideo,\n isVideoHoldEnabled,\n canToggleMode,\n } = resolveRecordingOptions(props, hasText)\n\n // With no voice or video note to record, an empty composer would leave the send button's slot\n // blank: the button stays instead, disabled until there is something to send.\n const isSendAlwaysVisible = props.isSendButtonAlwaysVisible ?? (!isVoiceEnabled && !showVideo)\n const sendFragment = useSendFragment(props, isSendAlwaysVisible)\n\n const take = useRecordTake<TMessage>({ videoConfig, onSend, closeEmoji })\n const {\n meter,\n videoSession,\n setOverlay,\n videoOverlay,\n isVideoTake,\n recording,\n voicePreview,\n videoPreview,\n isPreviewing,\n isRecordingActive,\n isCancelLingering,\n hasHadTake,\n cancelRecording,\n } = take\n\n const { mode, recordHint, toggleRecordMode, onVoiceQuickRelease, onVideoQuickRelease } =\n useRecordMode({ canToggleMode, isVoiceEnabled, isTakeInProgress: take.isTakeInProgress })\n\n const { rightControl, kind: rightControlKind } = useRightControl<TMessage>({\n mode,\n canRecord,\n canToggleMode,\n showVoice,\n isVideoHoldEnabled,\n audioConfig,\n videoConfig,\n isVideoTake,\n videoSession,\n voiceRef: take.voiceRef,\n meter,\n updateVoiceState: take.updateVoiceState,\n slideProgress: take.slideProgress,\n onRecordExit: take.onRecordExit,\n recordHint,\n toggleRecordMode,\n onVoiceQuickRelease,\n onVideoQuickRelease,\n onSend,\n sendFragment,\n })\n\n // Inset camera button inside the field, for the system-camera fallback when\n // video is the only mode. With vision-camera the camera takes the record\n // button's slot instead.\n const videoFragment = useMemo(() => {\n if (!showVideo || canToggleMode || isVideoHoldEnabled)\n return null\n\n return <VideoRecordButton<TMessage> config={videoConfig} onSend={onSend} />\n }, [showVideo, canToggleMode, isVideoHoldEnabled, videoConfig, onSend])\n\n const accessoryFragment = useAccessoryFragment(props)\n const replyPreviewFragment = useReplyPreviewFragment(props)\n\n // Only a take ever takes the field away, so only then do its parts animate.\n const canTakeAway = showVoice || isVideoHoldEnabled\n const isFieldShown = !isPreviewing && !isRecordingActive && !isCancelLingering\n const returning = useReturnAnimations({ isFieldShown, lastExit: take.lastExit, hasHadTake, isRTL })\n\n return (\n <>\n <Animated.View style={containerStyles}>\n {!setOverlay && videoOverlay && (\n <View style={styles.detachedOverlay} pointerEvents='box-none'>\n {videoOverlay}\n </View>\n )}\n <View style={[styles.islandRow, isRTL && styles.rowReverse]}>\n <View style={styles.island}>\n <GlassSurface color={theme.colors.inputBackground} borderColor={theme.colors.inputFieldBorder} style={styles.islandSurface} />\n {replyPreviewFragment}\n <View style={primaryStyles}>\n {isPreviewing\n ? (\n <TakePreviewBar\n voicePreview={voicePreview}\n videoPreview={videoPreview}\n onDelete={cancelRecording}\n onTrimVoice={take.trimVoicePreview}\n />\n )\n : isRecordingActive || isCancelLingering\n ? (\n <RecordingBar\n elapsed={meter.elapsed}\n isLocked={isRecordingActive && recording.locked}\n isBlinking={!isVideoTake || videoSession.isCapturing}\n isCancelled={!isRecordingActive}\n slideProgress={take.slideProgress}\n slideDistance={take.slideDistance}\n onCancel={cancelRecording}\n />\n )\n : (\n <FieldGroup\n emojiFragment={emojiFragment}\n composerFragment={composerFragment}\n actionsFragment={actionsFragment}\n videoFragment={videoFragment}\n attachStyle={attachStyle}\n hasText={hasText}\n hasHadTake={hasHadTake}\n canTakeAway={canTakeAway}\n returning={returning}\n />\n )}\n </View>\n </View>\n <LayoutAnimationConfig skipEntering>\n <Animated.View key={rightControlKind} style={styles.rightSlot} entering={swapIn} exiting={swapOut}>\n {rightControl}\n </Animated.View>\n </LayoutAnimationConfig>\n </View>\n {accessoryFragment}\n </Animated.View>\n {emojiConfig && (\n <EmojiKeyboardPanel\n controller={emoji}\n config={emojiConfig}\n onSelect={insertEmoji}\n onBackspace={deleteBackwardInComposer}\n />\n )}\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -9,6 +9,12 @@ import { EmojiKeyboardProps } from '../emoji/EmojiKeyboard';
9
9
  import { AudioRecordingProps, IMessage, ReplyMessage, VideoRecordingProps } from '../Models';
10
10
  import { SendProps } from '../Send';
11
11
  export interface InputToolbarProps<TMessage extends IMessage> {
12
+ /**
13
+ * The space the composer keeps below itself for the home indicator. Measured by default; pass it
14
+ * when the host already knows it, e.g. a chat inside a panel whose own inset arrives late. It is
15
+ * still given up as the keyboard or the emoji panel covers it.
16
+ */
17
+ bottomInset?: number;
12
18
  actions?: AttachmentAction[];
13
19
  actionSheetOptionTintColor?: string;
14
20
  containerStyle?: StyleProp<ViewStyle>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/InputToolbar/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/InputToolbar/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../src/InputToolbar/types.ts"],"sourcesContent":["import React from 'react'\nimport { StyleProp, TextStyle, ViewStyle } from 'react-native'\n\nimport { ActionsProps } from '../Actions'\nimport { AttachmentsProps } from '../attachments/types'\nimport { AttachmentAction } from '../components/AttachmentSheet'\nimport { ReplyPreviewProps } from '../components/ReplyPreview'\nimport { ComposerProps } from '../Composer'\nimport { EmojiKeyboardProps } from '../emoji/EmojiKeyboard'\nimport { AudioRecordingProps, IMessage, ReplyMessage, VideoRecordingProps } from '../Models'\nimport { SendProps } from '../Send'\n\nexport interface InputToolbarProps<TMessage extends IMessage> {\n actions?: AttachmentAction[]\n actionSheetOptionTintColor?: string\n containerStyle?: StyleProp<ViewStyle>\n primaryStyle?: StyleProp<ViewStyle>\n renderAccessory?: (props: InputToolbarProps<TMessage>) => React.ReactNode\n renderActions?: (props: ActionsProps) => React.ReactNode\n renderSend?: (props: SendProps<TMessage>) => React.ReactNode\n renderComposer?: (props: ComposerProps) => React.ReactNode\n onPressActionButton?: () => void\n icon?: () => React.ReactNode\n wrapperStyle?: StyleProp<ViewStyle>\n /** Reply message to show in preview */\n replyMessage?: ReplyMessage | null\n /** Callback to clear reply */\n onClearReply?: () => void\n /** The message being edited; shows the \"Editing\" banner instead of the reply one. */\n editMessage?: ReplyMessage | null\n /** Called when the editing banner is closed. */\n onCancelEdit?: () => void\n /** Custom render for reply preview */\n renderReplyPreview?: (props: ReplyPreviewProps) => React.ReactNode\n /** Style for reply preview container */\n replyPreviewContainerStyle?: StyleProp<ViewStyle>\n /** Style for reply preview text */\n replyPreviewTextStyle?: StyleProp<TextStyle>\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.\n */\n audioRecording?: boolean | AudioRecordingProps\n /**\n * Round video notes. On by default when `react-native-vision-camera` is installed; `false`\n * turns them off. `{ isEnabled: true }` also offers the system camera (`expo-image-picker`)\n * when vision-camera is missing.\n */\n videoRecording?: boolean | VideoRecordingProps\n /** Force-show the send button even when the composer is empty */\n isSendButtonAlwaysVisible?: boolean\n /** Current composer text (used to swap the send button for the mic button) */\n text?: string\n /** Props for the composer's `TextInput`, forwarded from `Chat`. */\n textInputProps?: ComposerProps['textInputProps']\n /**\n * Called when the emoji button is pressed, instead of opening the built-in emoji keyboard.\n * Passing it shows the button even with `emojiKeyboard={false}`.\n */\n onPressEmoji?: () => void\n /**\n * The built-in emoji keyboard the emoji button opens in the system keyboard's place. On by\n * default; `false` hides the button (unless `onPressEmoji` is set).\n */\n emojiKeyboard?: boolean | EmojiKeyboardProps\n /**\n * The built-in attachment menu behind the paperclip. On by default (each tab shows when its\n * optional peer is installed); `false` hides the paperclip. `actions`, `onPressActionButton`\n * and `renderActions` take precedence.\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\nexport type OnSend<TMessage extends IMessage> = (\n message: Partial<TMessage> | Partial<TMessage>[],\n shouldResetInputToolbar: boolean\n) => void\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/InputToolbar/types.ts"],"sourcesContent":["import React from 'react'\nimport { StyleProp, TextStyle, ViewStyle } from 'react-native'\n\nimport { ActionsProps } from '../Actions'\nimport { AttachmentsProps } from '../attachments/types'\nimport { AttachmentAction } from '../components/AttachmentSheet'\nimport { ReplyPreviewProps } from '../components/ReplyPreview'\nimport { ComposerProps } from '../Composer'\nimport { EmojiKeyboardProps } from '../emoji/EmojiKeyboard'\nimport { AudioRecordingProps, IMessage, ReplyMessage, VideoRecordingProps } from '../Models'\nimport { SendProps } from '../Send'\n\nexport interface InputToolbarProps<TMessage extends IMessage> {\n /**\n * The space the composer keeps below itself for the home indicator. Measured by default; pass it\n * when the host already knows it, e.g. a chat inside a panel whose own inset arrives late. It is\n * still given up as the keyboard or the emoji panel covers it.\n */\n bottomInset?: number\n actions?: AttachmentAction[]\n actionSheetOptionTintColor?: string\n containerStyle?: StyleProp<ViewStyle>\n primaryStyle?: StyleProp<ViewStyle>\n renderAccessory?: (props: InputToolbarProps<TMessage>) => React.ReactNode\n renderActions?: (props: ActionsProps) => React.ReactNode\n renderSend?: (props: SendProps<TMessage>) => React.ReactNode\n renderComposer?: (props: ComposerProps) => React.ReactNode\n onPressActionButton?: () => void\n icon?: () => React.ReactNode\n wrapperStyle?: StyleProp<ViewStyle>\n /** Reply message to show in preview */\n replyMessage?: ReplyMessage | null\n /** Callback to clear reply */\n onClearReply?: () => void\n /** The message being edited; shows the \"Editing\" banner instead of the reply one. */\n editMessage?: ReplyMessage | null\n /** Called when the editing banner is closed. */\n onCancelEdit?: () => void\n /** Custom render for reply preview */\n renderReplyPreview?: (props: ReplyPreviewProps) => React.ReactNode\n /** Style for reply preview container */\n replyPreviewContainerStyle?: StyleProp<ViewStyle>\n /** Style for reply preview text */\n replyPreviewTextStyle?: StyleProp<TextStyle>\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.\n */\n audioRecording?: boolean | AudioRecordingProps\n /**\n * Round video notes. On by default when `react-native-vision-camera` is installed; `false`\n * turns them off. `{ isEnabled: true }` also offers the system camera (`expo-image-picker`)\n * when vision-camera is missing.\n */\n videoRecording?: boolean | VideoRecordingProps\n /** Force-show the send button even when the composer is empty */\n isSendButtonAlwaysVisible?: boolean\n /** Current composer text (used to swap the send button for the mic button) */\n text?: string\n /** Props for the composer's `TextInput`, forwarded from `Chat`. */\n textInputProps?: ComposerProps['textInputProps']\n /**\n * Called when the emoji button is pressed, instead of opening the built-in emoji keyboard.\n * Passing it shows the button even with `emojiKeyboard={false}`.\n */\n onPressEmoji?: () => void\n /**\n * The built-in emoji keyboard the emoji button opens in the system keyboard's place. On by\n * default; `false` hides the button (unless `onPressEmoji` is set).\n */\n emojiKeyboard?: boolean | EmojiKeyboardProps\n /**\n * The built-in attachment menu behind the paperclip. On by default (each tab shows when its\n * optional peer is installed); `false` hides the paperclip. `actions`, `onPressActionButton`\n * and `renderActions` take precedence.\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\nexport type OnSend<TMessage extends IMessage> = (\n message: Partial<TMessage> | Partial<TMessage>[],\n shouldResetInputToolbar: boolean\n) => void\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useActionsFragment.d.ts","sourceRoot":"","sources":["../../src/InputToolbar/useActionsFragment.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAA;AAMnD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,iBAAiB,EAAU,MAAM,SAAS,CAAA;AAEnD,kGAAkG;AAClG,wBAAgB,kBAAkB,CAAC,QAAQ,SAAS,QAAQ,EAC1D,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAClC,UAAU,EAAE,MAAM,IAAI,mSAyEvB"}
1
+ {"version":3,"file":"useActionsFragment.d.ts","sourceRoot":"","sources":["../../src/InputToolbar/useActionsFragment.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAA;AAMnD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,iBAAiB,EAAU,MAAM,SAAS,CAAA;AAEnD,kGAAkG;AAClG,wBAAgB,kBAAkB,CAAC,QAAQ,SAAS,QAAQ,EAC1D,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAClC,UAAU,EAAE,MAAM,IAAI,mSA8EvB"}
@@ -6,7 +6,7 @@ import { getAttachmentTabs } from '../attachments/buildMessages';
6
6
  import { renderComponentOrElement } from '../utils';
7
7
  /** The control behind the paperclip: custom actions, the legacy sheet, or the attachment menu. */
8
8
  export function useActionsFragment(props, closeEmoji) {
9
- const $ = _c(30);
9
+ const $ = _c(35);
10
10
  const {
11
11
  renderActions,
12
12
  onPressActionButton,
@@ -37,44 +37,65 @@ export function useActionsFragment(props, closeEmoji) {
37
37
  t1 = $[3];
38
38
  }
39
39
  const requestedTabsId = t1;
40
+ const pickers = attachmentsConfig?.pickers;
40
41
  let t2;
42
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
43
+ t2 = ["gallery", "camera", "file"];
44
+ $[4] = t2;
45
+ } else {
46
+ t2 = $[4];
47
+ }
48
+ let t3;
49
+ if ($[5] !== pickers) {
50
+ t3 = t2.filter(tab => !!pickers?.[tab]);
51
+ $[5] = pickers;
52
+ $[6] = t3;
53
+ } else {
54
+ t3 = $[6];
55
+ }
56
+ const customPickersId = t3.join(",");
57
+ const isGalleryGridEnabled = attachmentsConfig?.isGalleryGridEnabled !== false;
58
+ let t4;
41
59
  bb0: {
42
60
  if (!hasAttachments) {
43
- let t3;
44
- if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
45
- t3 = [];
46
- $[4] = t3;
61
+ let t5;
62
+ if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
63
+ t5 = [];
64
+ $[7] = t5;
47
65
  } else {
48
- t3 = $[4];
66
+ t5 = $[7];
49
67
  }
50
- t2 = t3;
68
+ t4 = t5;
51
69
  break bb0;
52
70
  }
53
- let t3;
54
- if ($[5] !== requestedTabsId) {
55
- t3 = getAttachmentTabs(requestedTabsId === undefined ? undefined : requestedTabsId.split(",").filter(Boolean));
56
- $[5] = requestedTabsId;
57
- $[6] = t3;
71
+ let t5;
72
+ if ($[8] !== customPickersId || $[9] !== isGalleryGridEnabled || $[10] !== requestedTabsId) {
73
+ const custom = Object.fromEntries(customPickersId.split(",").filter(Boolean).map(_temp));
74
+ t5 = getAttachmentTabs(requestedTabsId === undefined ? undefined : requestedTabsId.split(",").filter(Boolean), custom, isGalleryGridEnabled);
75
+ $[8] = customPickersId;
76
+ $[9] = isGalleryGridEnabled;
77
+ $[10] = requestedTabsId;
78
+ $[11] = t5;
58
79
  } else {
59
- t3 = $[6];
80
+ t5 = $[11];
60
81
  }
61
- t2 = t3;
82
+ t4 = t5;
62
83
  }
63
- const attachmentTabs = t2;
84
+ const attachmentTabs = t4;
64
85
  const onSendProp = props.onSend;
65
- let t3;
66
- if ($[7] !== onSendProp) {
67
- t3 = (messages, shouldReset) => {
86
+ let t5;
87
+ if ($[12] !== onSendProp) {
88
+ t5 = (messages, shouldReset) => {
68
89
  onSendProp?.(messages, shouldReset);
69
90
  };
70
- $[7] = onSendProp;
71
- $[8] = t3;
91
+ $[12] = onSendProp;
92
+ $[13] = t5;
72
93
  } else {
73
- t3 = $[8];
94
+ t5 = $[13];
74
95
  }
75
- const onSendForAttachments = t3;
76
- let t4;
77
- if ($[9] !== actionSheetOptionTintColor || $[10] !== actions || $[11] !== attachmentTabs || $[12] !== attachmentsConfig || $[13] !== closeEmoji || $[14] !== containerStyle || $[15] !== icon || $[16] !== onPressActionButton || $[17] !== onSendForAttachments || $[18] !== renderActions || $[19] !== wrapperStyle) {
96
+ const onSendForAttachments = t5;
97
+ let t6;
98
+ if ($[14] !== actionSheetOptionTintColor || $[15] !== actions || $[16] !== attachmentTabs || $[17] !== attachmentsConfig || $[18] !== closeEmoji || $[19] !== containerStyle || $[20] !== icon || $[21] !== onPressActionButton || $[22] !== onSendForAttachments || $[23] !== renderActions || $[24] !== wrapperStyle) {
78
99
  bb1: {
79
100
  const actionsProps = {
80
101
  onPressActionButton,
@@ -85,55 +106,58 @@ export function useActionsFragment(props, closeEmoji) {
85
106
  containerStyle
86
107
  };
87
108
  if (renderActions) {
88
- t4 = renderComponentOrElement(renderActions, actionsProps);
109
+ t6 = renderComponentOrElement(renderActions, actionsProps);
89
110
  break bb1;
90
111
  }
91
112
  if (onPressActionButton || actions?.length) {
92
- let t5;
93
- if ($[21] !== actionsProps) {
94
- t5 = <Actions {...actionsProps} />;
95
- $[21] = actionsProps;
96
- $[22] = t5;
113
+ let t7;
114
+ if ($[26] !== actionsProps) {
115
+ t7 = <Actions {...actionsProps} />;
116
+ $[26] = actionsProps;
117
+ $[27] = t7;
97
118
  } else {
98
- t5 = $[22];
119
+ t7 = $[27];
99
120
  }
100
- t4 = t5;
121
+ t6 = t7;
101
122
  break bb1;
102
123
  }
103
124
  if (attachmentsConfig && attachmentTabs.length > 0) {
104
- let t5;
105
- if ($[23] !== attachmentTabs || $[24] !== attachmentsConfig || $[25] !== closeEmoji || $[26] !== icon || $[27] !== onSendForAttachments || $[28] !== wrapperStyle) {
106
- t5 = <AttachmentButton tabs={attachmentTabs} config={attachmentsConfig} onSend={onSendForAttachments} onOpen={closeEmoji} icon={icon} wrapperStyle={wrapperStyle} />;
107
- $[23] = attachmentTabs;
108
- $[24] = attachmentsConfig;
109
- $[25] = closeEmoji;
110
- $[26] = icon;
111
- $[27] = onSendForAttachments;
112
- $[28] = wrapperStyle;
113
- $[29] = t5;
125
+ let t7;
126
+ if ($[28] !== attachmentTabs || $[29] !== attachmentsConfig || $[30] !== closeEmoji || $[31] !== icon || $[32] !== onSendForAttachments || $[33] !== wrapperStyle) {
127
+ t7 = <AttachmentButton tabs={attachmentTabs} config={attachmentsConfig} onSend={onSendForAttachments} onOpen={closeEmoji} icon={icon} wrapperStyle={wrapperStyle} />;
128
+ $[28] = attachmentTabs;
129
+ $[29] = attachmentsConfig;
130
+ $[30] = closeEmoji;
131
+ $[31] = icon;
132
+ $[32] = onSendForAttachments;
133
+ $[33] = wrapperStyle;
134
+ $[34] = t7;
114
135
  } else {
115
- t5 = $[29];
136
+ t7 = $[34];
116
137
  }
117
- t4 = t5;
138
+ t6 = t7;
118
139
  break bb1;
119
140
  }
120
- t4 = null;
141
+ t6 = null;
121
142
  }
122
- $[9] = actionSheetOptionTintColor;
123
- $[10] = actions;
124
- $[11] = attachmentTabs;
125
- $[12] = attachmentsConfig;
126
- $[13] = closeEmoji;
127
- $[14] = containerStyle;
128
- $[15] = icon;
129
- $[16] = onPressActionButton;
130
- $[17] = onSendForAttachments;
131
- $[18] = renderActions;
132
- $[19] = wrapperStyle;
133
- $[20] = t4;
143
+ $[14] = actionSheetOptionTintColor;
144
+ $[15] = actions;
145
+ $[16] = attachmentTabs;
146
+ $[17] = attachmentsConfig;
147
+ $[18] = closeEmoji;
148
+ $[19] = containerStyle;
149
+ $[20] = icon;
150
+ $[21] = onPressActionButton;
151
+ $[22] = onSendForAttachments;
152
+ $[23] = renderActions;
153
+ $[24] = wrapperStyle;
154
+ $[25] = t6;
134
155
  } else {
135
- t4 = $[20];
156
+ t6 = $[25];
136
157
  }
137
- return t4;
158
+ return t6;
159
+ }
160
+ function _temp(tab_0) {
161
+ return [tab_0, true];
138
162
  }
139
163
  //# sourceMappingURL=useActionsFragment.js.map