@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.
- package/README.md +36 -4
- package/lib/Actions.d.ts.map +1 -1
- package/lib/Actions.js +33 -27
- package/lib/Actions.js.map +1 -1
- package/lib/Chat/Chat.d.ts.map +1 -1
- package/lib/Chat/Chat.js +253 -203
- package/lib/Chat/Chat.js.map +1 -1
- package/lib/Chat/ChatMessageList.d.ts.map +1 -1
- package/lib/Chat/ChatMessageList.js +4 -0
- package/lib/Chat/ChatMessageList.js.map +1 -1
- package/lib/Chat/index.d.ts +9 -1
- package/lib/Chat/index.d.ts.map +1 -1
- package/lib/Chat/index.js +14 -1
- package/lib/Chat/index.js.map +1 -1
- package/lib/Chat/types.d.ts +29 -0
- package/lib/Chat/types.d.ts.map +1 -1
- package/lib/Chat/types.js.map +1 -1
- package/lib/Chat/useMessageActions.d.ts +1 -0
- package/lib/Chat/useMessageActions.d.ts.map +1 -1
- package/lib/Chat/useMessageActions.js +97 -89
- package/lib/Chat/useMessageActions.js.map +1 -1
- package/lib/ChatHeader.d.ts +50 -0
- package/lib/ChatHeader.d.ts.map +1 -0
- package/lib/ChatHeader.js +356 -0
- package/lib/ChatHeader.js.map +1 -0
- package/lib/ChatList/ChatListCell.d.ts +1 -1
- package/lib/ChatList/ChatListCell.d.ts.map +1 -1
- package/lib/ChatList/ChatListCell.js +42 -11
- package/lib/ChatList/ChatListCell.js.map +1 -1
- package/lib/ChatList/index.js +332 -323
- package/lib/ChatList/index.js.map +1 -1
- package/lib/ChatList/types.d.ts +17 -1
- package/lib/ChatList/types.d.ts.map +1 -1
- package/lib/ChatList/types.js.map +1 -1
- package/lib/ChatList/utils.d.ts +4 -1
- package/lib/ChatList/utils.d.ts.map +1 -1
- package/lib/ChatList/utils.js +3 -2
- package/lib/ChatList/utils.js.map +1 -1
- package/lib/Composer.js +5 -1
- package/lib/Composer.js.map +1 -1
- package/lib/InputToolbar/fragments.d.ts +1 -1
- package/lib/InputToolbar/fragments.d.ts.map +1 -1
- package/lib/InputToolbar/fragments.js +9 -7
- package/lib/InputToolbar/fragments.js.map +1 -1
- package/lib/InputToolbar/index.d.ts.map +1 -1
- package/lib/InputToolbar/index.js +3 -2
- package/lib/InputToolbar/index.js.map +1 -1
- package/lib/InputToolbar/types.d.ts +6 -0
- package/lib/InputToolbar/types.d.ts.map +1 -1
- package/lib/InputToolbar/types.js.map +1 -1
- package/lib/InputToolbar/useActionsFragment.d.ts.map +1 -1
- package/lib/InputToolbar/useActionsFragment.js +83 -59
- package/lib/InputToolbar/useActionsFragment.js.map +1 -1
- package/lib/InputToolbar/useKeyboardInset.d.ts +1 -1
- package/lib/InputToolbar/useKeyboardInset.d.ts.map +1 -1
- package/lib/InputToolbar/useKeyboardInset.js +2 -2
- package/lib/InputToolbar/useKeyboardInset.js.map +1 -1
- package/lib/MessageText.d.ts.map +1 -1
- package/lib/MessageText.js +39 -33
- package/lib/MessageText.js.map +1 -1
- package/lib/MessagesContainer/index.d.ts.map +1 -1
- package/lib/MessagesContainer/index.js +113 -94
- package/lib/MessagesContainer/index.js.map +1 -1
- package/lib/MessagesContainer/types.d.ts +5 -2
- package/lib/MessagesContainer/types.d.ts.map +1 -1
- package/lib/MessagesContainer/types.js.map +1 -1
- package/lib/MessagesContainer/useChained.d.ts +6 -0
- package/lib/MessagesContainer/useChained.d.ts.map +1 -0
- package/lib/MessagesContainer/useChained.js +38 -0
- package/lib/MessagesContainer/useChained.js.map +1 -0
- package/lib/MessagesContainer/useListChrome.d.ts.map +1 -1
- package/lib/MessagesContainer/useListChrome.js +1 -1
- package/lib/MessagesContainer/useListChrome.js.map +1 -1
- package/lib/Models.d.ts +2 -1
- package/lib/Models.d.ts.map +1 -1
- package/lib/Models.js.map +1 -1
- package/lib/Send.d.ts.map +1 -1
- package/lib/Send.js +18 -13
- package/lib/Send.js.map +1 -1
- package/lib/Theme.d.ts +11 -0
- package/lib/Theme.d.ts.map +1 -1
- package/lib/Theme.js +17 -1
- package/lib/Theme.js.map +1 -1
- package/lib/attachments/AttachmentButton.js +17 -15
- package/lib/attachments/AttachmentButton.js.map +1 -1
- package/lib/attachments/AttachmentMenu/GalleryGrid.d.ts +3 -1
- package/lib/attachments/AttachmentMenu/GalleryGrid.d.ts.map +1 -1
- package/lib/attachments/AttachmentMenu/GalleryGrid.js +69 -68
- package/lib/attachments/AttachmentMenu/GalleryGrid.js.map +1 -1
- package/lib/attachments/AttachmentMenu/TabPanel.d.ts +3 -1
- package/lib/attachments/AttachmentMenu/TabPanel.d.ts.map +1 -1
- package/lib/attachments/AttachmentMenu/TabPanel.js +23 -21
- package/lib/attachments/AttachmentMenu/TabPanel.js.map +1 -1
- package/lib/attachments/AttachmentMenu/index.d.ts +6 -2
- package/lib/attachments/AttachmentMenu/index.d.ts.map +1 -1
- package/lib/attachments/AttachmentMenu/index.js +259 -247
- package/lib/attachments/AttachmentMenu/index.js.map +1 -1
- package/lib/attachments/buildMessages.d.ts +4 -4
- package/lib/attachments/buildMessages.d.ts.map +1 -1
- package/lib/attachments/buildMessages.js +9 -8
- package/lib/attachments/buildMessages.js.map +1 -1
- package/lib/attachments/types.d.ts +19 -0
- package/lib/attachments/types.d.ts.map +1 -1
- package/lib/attachments/types.js.map +1 -1
- package/lib/components/TouchableOpacity.d.ts +5 -0
- package/lib/components/TouchableOpacity.d.ts.map +1 -1
- package/lib/components/TouchableOpacity.js +59 -54
- package/lib/components/TouchableOpacity.js.map +1 -1
- package/lib/components/defaultMessageActions.d.ts +3 -1
- package/lib/components/defaultMessageActions.d.ts.map +1 -1
- package/lib/components/defaultMessageActions.js +9 -1
- package/lib/components/defaultMessageActions.js.map +1 -1
- package/lib/components/textHighlight.d.ts +14 -0
- package/lib/components/textHighlight.d.ts.map +1 -0
- package/lib/components/textHighlight.js +39 -0
- package/lib/components/textHighlight.js.map +1 -0
- package/lib/hooks/useKeyboardVerticalOffset.d.ts +6 -0
- package/lib/hooks/useKeyboardVerticalOffset.d.ts.map +1 -1
- package/lib/hooks/useKeyboardVerticalOffset.js +35 -13
- package/lib/hooks/useKeyboardVerticalOffset.js.map +1 -1
- package/lib/i18n.d.ts +2 -0
- package/lib/i18n.d.ts.map +1 -1
- package/lib/i18n.js +1 -0
- package/lib/i18n.js.map +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/linkParser.d.ts +4 -1
- package/lib/linkParser.d.ts.map +1 -1
- package/lib/linkParser.js +115 -78
- package/lib/linkParser.js.map +1 -1
- package/lib/locales/ar.d.ts.map +1 -1
- package/lib/locales/ar.js +1 -0
- package/lib/locales/ar.js.map +1 -1
- package/lib/locales/de.d.ts.map +1 -1
- package/lib/locales/de.js +1 -0
- package/lib/locales/de.js.map +1 -1
- package/lib/locales/es.d.ts.map +1 -1
- package/lib/locales/es.js +1 -0
- package/lib/locales/es.js.map +1 -1
- package/lib/locales/fr.d.ts.map +1 -1
- package/lib/locales/fr.js +1 -0
- package/lib/locales/fr.js.map +1 -1
- package/lib/locales/hi.d.ts.map +1 -1
- package/lib/locales/hi.js +1 -0
- package/lib/locales/hi.js.map +1 -1
- package/lib/locales/id.d.ts.map +1 -1
- package/lib/locales/id.js +1 -0
- package/lib/locales/id.js.map +1 -1
- package/lib/locales/it.d.ts.map +1 -1
- package/lib/locales/it.js +1 -0
- package/lib/locales/it.js.map +1 -1
- package/lib/locales/ja.d.ts.map +1 -1
- package/lib/locales/ja.js +1 -0
- package/lib/locales/ja.js.map +1 -1
- package/lib/locales/ko.d.ts.map +1 -1
- package/lib/locales/ko.js +1 -0
- package/lib/locales/ko.js.map +1 -1
- package/lib/locales/nl.d.ts.map +1 -1
- package/lib/locales/nl.js +1 -0
- package/lib/locales/nl.js.map +1 -1
- package/lib/locales/pl.d.ts.map +1 -1
- package/lib/locales/pl.js +1 -0
- package/lib/locales/pl.js.map +1 -1
- package/lib/locales/pt.d.ts.map +1 -1
- package/lib/locales/pt.js +1 -0
- package/lib/locales/pt.js.map +1 -1
- package/lib/locales/ru.d.ts.map +1 -1
- package/lib/locales/ru.js +1 -0
- package/lib/locales/ru.js.map +1 -1
- package/lib/locales/tr.d.ts.map +1 -1
- package/lib/locales/tr.js +1 -0
- package/lib/locales/tr.js.map +1 -1
- package/lib/locales/zh.d.ts.map +1 -1
- package/lib/locales/zh.js +1 -0
- package/lib/locales/zh.js.map +1 -1
- package/llms.txt +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActionsFragment.js","names":["React","useCallback","useMemo","Actions","AttachmentButton","resolveAttachments","getAttachmentTabs","renderComponentOrElement","useActionsFragment","props","closeEmoji","$","_c","renderActions","onPressActionButton","actions","actionSheetOptionTintColor","icon","wrapperStyle","containerStyle","attachmentsProp","attachments","t0","attachmentsConfig","requestedTabs","tabs","hasAttachments","t1","join","requestedTabsId","t2","
|
|
1
|
+
{"version":3,"file":"useActionsFragment.js","names":["React","useCallback","useMemo","Actions","AttachmentButton","resolveAttachments","getAttachmentTabs","renderComponentOrElement","useActionsFragment","props","closeEmoji","$","_c","renderActions","onPressActionButton","actions","actionSheetOptionTintColor","icon","wrapperStyle","containerStyle","attachmentsProp","attachments","t0","attachmentsConfig","requestedTabs","tabs","hasAttachments","t1","join","requestedTabsId","pickers","t2","Symbol","for","t3","filter","tab","customPickersId","isGalleryGridEnabled","t4","bb0","t5","custom","Object","fromEntries","split","Boolean","map","_temp","undefined","attachmentTabs","onSendProp","onSend","messages","shouldReset","onSendForAttachments","t6","bb1","actionsProps","length","t7","tab_0"],"sources":["../../src/InputToolbar/useActionsFragment.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react'\n\nimport { Actions } from '../Actions'\nimport { AttachmentButton, resolveAttachments } from '../attachments/AttachmentButton'\nimport { getAttachmentTabs } from '../attachments/buildMessages'\nimport { AttachmentTab } from '../attachments/types'\nimport { IMessage } from '../Models'\nimport { renderComponentOrElement } from '../utils'\nimport { InputToolbarProps, OnSend } from './types'\n\n/** The control behind the paperclip: custom actions, the legacy sheet, or the attachment menu. */\nexport function useActionsFragment<TMessage extends IMessage> (\n props: InputToolbarProps<TMessage>,\n closeEmoji: () => void\n) {\n const {\n renderActions,\n onPressActionButton,\n actions,\n actionSheetOptionTintColor,\n icon,\n wrapperStyle,\n containerStyle,\n } = props\n\n // The built-in attachment menu, behind the paperclip when no legacy `actions` are given.\n const attachmentsProp = props.attachments\n const attachmentsConfig = useMemo(() => resolveAttachments<TMessage>(attachmentsProp), [attachmentsProp])\n const requestedTabs = attachmentsConfig?.tabs\n const hasAttachments = !!attachmentsConfig\n // Keyed by the tab list, not its identity: an inline array would rebuild the menu every render.\n const requestedTabsId = requestedTabs?.join(',')\n // Which tabs have the app's own picker, as a key for the same reason.\n const pickers = attachmentsConfig?.pickers\n const customPickersId = (['gallery', 'camera', 'file'] as const).filter(tab => !!pickers?.[tab]).join(',')\n const isGalleryGridEnabled = attachmentsConfig?.isGalleryGridEnabled !== false\n const attachmentTabs = useMemo(() => {\n if (!hasAttachments)\n return []\n const custom = Object.fromEntries(customPickersId.split(',').filter(Boolean).map(tab => [tab, true]))\n return getAttachmentTabs(requestedTabsId === undefined\n ? undefined\n : requestedTabsId.split(',').filter(Boolean) as AttachmentTab[], custom, isGalleryGridEnabled)\n }, [hasAttachments, requestedTabsId, customPickersId, isGalleryGridEnabled])\n const onSendProp = (props as { onSend?: OnSend<TMessage> }).onSend\n const onSendForAttachments = useCallback((messages: Partial<TMessage>[], shouldReset: boolean) => {\n onSendProp?.(messages, shouldReset)\n }, [onSendProp])\n\n return useMemo(() => {\n const actionsProps = {\n onPressActionButton,\n actions,\n actionSheetOptionTintColor,\n icon,\n wrapperStyle,\n containerStyle,\n }\n\n if (renderActions)\n return renderComponentOrElement(renderActions, actionsProps)\n\n if (onPressActionButton || actions?.length)\n return <Actions {...actionsProps} />\n\n if (attachmentsConfig && attachmentTabs.length > 0)\n return (\n <AttachmentButton<TMessage>\n tabs={attachmentTabs}\n config={attachmentsConfig}\n onSend={onSendForAttachments}\n onOpen={closeEmoji}\n icon={icon}\n wrapperStyle={wrapperStyle}\n />\n )\n\n return null\n }, [\n renderActions,\n onPressActionButton,\n actions,\n actionSheetOptionTintColor,\n icon,\n wrapperStyle,\n containerStyle,\n attachmentsConfig,\n attachmentTabs,\n onSendForAttachments,\n closeEmoji,\n ])\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@ import { SharedValue } from 'react-native-reanimated';
|
|
|
3
3
|
* The toolbar's bottom padding: the home indicator's inset, given up as the keyboard or the
|
|
4
4
|
* emoji panel (`emojiOpen`) covers it.
|
|
5
5
|
*/
|
|
6
|
-
export declare function useKeyboardInset(emojiOpen: SharedValue<number
|
|
6
|
+
export declare function useKeyboardInset(emojiOpen: SharedValue<number>, bottomInsetProp?: number): import("react-native-reanimated/lib/typescript/hook/commonTypes").AnimatedStyleHandle<{
|
|
7
7
|
paddingBottom: number;
|
|
8
8
|
}>;
|
|
9
9
|
//# sourceMappingURL=useKeyboardInset.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKeyboardInset.d.ts","sourceRoot":"","sources":["../../src/InputToolbar/useKeyboardInset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAoC,MAAM,yBAAyB,CAAA;AAKvF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC;;
|
|
1
|
+
{"version":3,"file":"useKeyboardInset.d.ts","sourceRoot":"","sources":["../../src/InputToolbar/useKeyboardInset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAoC,MAAM,yBAAyB,CAAA;AAKvF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,EAAE,MAAM;;GAqBzF"}
|
|
@@ -7,13 +7,13 @@ import { useTheme } from '../hooks/useTheme';
|
|
|
7
7
|
* The toolbar's bottom padding: the home indicator's inset, given up as the keyboard or the
|
|
8
8
|
* emoji panel (`emojiOpen`) covers it.
|
|
9
9
|
*/
|
|
10
|
-
export function useKeyboardInset(emojiOpen) {
|
|
10
|
+
export function useKeyboardInset(emojiOpen, bottomInsetProp) {
|
|
11
11
|
const theme = useTheme();
|
|
12
12
|
const insets = useSafeAreaInsets();
|
|
13
13
|
const keyboard = useReanimatedKeyboardAnimation();
|
|
14
14
|
const noKeyboard = useSharedValue(0);
|
|
15
15
|
const keyboardHeight = keyboard?.height ?? noKeyboard;
|
|
16
|
-
const bottomInset = insets.bottom;
|
|
16
|
+
const bottomInset = bottomInsetProp ?? insets.bottom;
|
|
17
17
|
const bottomGap = theme.spacing.inputToolbarPaddingV;
|
|
18
18
|
return useAnimatedStyle(() => {
|
|
19
19
|
const covered = bottomInset > 0 ? Math.min(1, Math.max(0, -keyboardHeight.value / bottomInset)) : 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKeyboardInset.js","names":["useReanimatedKeyboardAnimation","useAnimatedStyle","useSharedValue","useSafeAreaInsets","useTheme","useKeyboardInset","emojiOpen","theme","insets","keyboard","noKeyboard","keyboardHeight","height","bottomInset","bottom","bottomGap","spacing","inputToolbarPaddingV","covered","Math","min","max","value","paddingBottom"],"sources":["../../src/InputToolbar/useKeyboardInset.ts"],"sourcesContent":["import { useReanimatedKeyboardAnimation } from 'react-native-keyboard-controller'\nimport { SharedValue, useAnimatedStyle, useSharedValue } from 'react-native-reanimated'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\n\nimport { useTheme } from '../hooks/useTheme'\n\n/**\n * The toolbar's bottom padding: the home indicator's inset, given up as the keyboard or the\n * emoji panel (`emojiOpen`) covers it.\n */\nexport function useKeyboardInset (emojiOpen: SharedValue<number
|
|
1
|
+
{"version":3,"file":"useKeyboardInset.js","names":["useReanimatedKeyboardAnimation","useAnimatedStyle","useSharedValue","useSafeAreaInsets","useTheme","useKeyboardInset","emojiOpen","bottomInsetProp","theme","insets","keyboard","noKeyboard","keyboardHeight","height","bottomInset","bottom","bottomGap","spacing","inputToolbarPaddingV","covered","Math","min","max","value","paddingBottom"],"sources":["../../src/InputToolbar/useKeyboardInset.ts"],"sourcesContent":["import { useReanimatedKeyboardAnimation } from 'react-native-keyboard-controller'\nimport { SharedValue, useAnimatedStyle, useSharedValue } from 'react-native-reanimated'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\n\nimport { useTheme } from '../hooks/useTheme'\n\n/**\n * The toolbar's bottom padding: the home indicator's inset, given up as the keyboard or the\n * emoji panel (`emojiOpen`) covers it.\n */\nexport function useKeyboardInset (emojiOpen: SharedValue<number>, bottomInsetProp?: number) {\n const theme = useTheme()\n const insets = useSafeAreaInsets()\n\n // The island floats 9 above the home indicator (`INPUT_BUBBLE_BOTTOM`), and 9 above the\n // keyboard once it covers the indicator: the inset fades out with the keyboard's progress.\n const keyboard = useReanimatedKeyboardAnimation()\n const noKeyboard = useSharedValue(0)\n // Guarded for mocks that return nothing.\n const keyboardHeight = keyboard?.height ?? noKeyboard\n const bottomInset = bottomInsetProp ?? insets.bottom\n const bottomGap = theme.spacing.inputToolbarPaddingV\n // Driven by how much of the inset the keyboard actually covers, not by its progress: a\n // floating or split keyboard on Android (or a hardware keyboard's suggestion strip) reports\n // full progress at a height of 0-ish, and the toolbar then dropped onto the gesture bar.\n return useAnimatedStyle(() => {\n const covered = bottomInset > 0 ? Math.min(1, Math.max(0, -keyboardHeight.value / bottomInset)) : 1\n return {\n paddingBottom: bottomGap + bottomInset * (1 - Math.min(1, Math.max(covered, emojiOpen.value))),\n }\n })\n}\n"],"mappings":"AAAA,SAASA,8BAA8B,QAAQ,kCAAkC;AACjF,SAAsBC,gBAAgB,EAAEC,cAAc,QAAQ,yBAAyB;AACvF,SAASC,iBAAiB,QAAQ,gCAAgC;AAElE,SAASC,QAAQ,QAAQ,mBAAmB;;AAE5C;AACA;AACA;AACA;AACA,OAAO,SAAAC,iBAAAC,SAAA,EAAAC,eAAA;EACL,MAAAC,KAAA,GAAcJ,QAAQ,CAAC,CAAC;EACxB,MAAAK,MAAA,GAAeN,iBAAiB,CAAC,CAAC;EAIlC,MAAAO,QAAA,GAAiBV,8BAA8B,CAAC,CAAC;EACjD,MAAAW,UAAA,GAAmBT,cAAc,CAAC,CAAC,CAAC;EAEpC,MAAAU,cAAA,GAAuBF,QAAQ,EAAAG,MAAsB,IAA9BF,UAA8B;EACrD,MAAAG,WAAA,GAAoBP,eAAgC,IAAbE,MAAM,CAAAM,MAAO;EACpD,MAAAC,SAAA,GAAkBR,KAAK,CAAAS,OAAQ,CAAAC,oBAAqB;EAAA,OAI7CjB,gBAAgB,CAAC;IACtB,MAAAkB,OAAA,GAAgBL,WAAW,GAAG,CAAqE,GAAjEM,IAAI,CAAAC,GAAI,CAAC,CAAC,EAAED,IAAI,CAAAE,GAAI,CAAC,CAAC,EAAE,CAACV,cAAc,CAAAW,KAAM,GAAGT,WAAW,CAAK,CAAC,GAAnF,CAAmF;IAAA,OAC5F;MAAAU,aAAA,EACUR,SAAS,GAAGF,WAAW,IAAI,CAAC,GAAGM,IAAI,CAAAC,GAAI,CAAC,CAAC,EAAED,IAAI,CAAAE,GAAI,CAACH,OAAO,EAAEb,SAAS,CAAAiB,KAAM,CAAC,CAAC;IAC/F,CAAC;EAAA,CACF,CAAC;AAAA","ignoreList":[]}
|
package/lib/MessageText.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageText.d.ts","sourceRoot":"","sources":["../src/MessageText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAA;AACnD,OAAO,EAEL,SAAS,EACT,SAAS,EACT,SAAS,EAEH,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"MessageText.d.ts","sourceRoot":"","sources":["../src/MessageText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAA;AACnD,OAAO,EAEL,SAAS,EACT,SAAS,EACT,SAAS,EAEH,MAAM,cAAc,CAAA;AAO5B,OAAO,EAAc,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGnD,MAAM,MAAM,gBAAgB,CAAC,QAAQ,SAAS,QAAQ,IAAI;IACxD,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC3B,cAAc,EAAE,QAAQ,CAAA;IACxB,cAAc,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IAC1C,SAAS,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IACrC,SAAS,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IACrC,eAAe,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACtC,OAAO,CAAC,EAAE,CACR,OAAO,EAAE,QAAQ,EACjB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,QAAQ,KACX,IAAI,CAAA;IAET,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6HAA6H;IAC7H,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,CAAA;AAED,wBAAgB,WAAW,CAAC,QAAQ,SAAS,QAAQ,EAAE,EACrD,cAAc,EACd,QAAiB,EACjB,cAAc,EACd,SAAS,EACT,SAAS,EAAE,aAAa,EACxB,eAAe,EACf,OAAO,EAAE,WAAW,EACpB,QAAQ,EACR,KAAY,EACZ,KAAY,EACZ,GAAU,EACV,OAAe,EACf,OAAe,EACf,UAAU,EACV,UAAU,EACV,WAAmB,EACnB,QAAQ,EACR,aAAa,EACb,QAAQ,GACT,EAAE,gBAAgB,CAAC,QAAQ,CAAC,qBA6G5B"}
|
package/lib/MessageText.js
CHANGED
|
@@ -4,10 +4,11 @@ import { StyleSheet, View, Text } from 'react-native';
|
|
|
4
4
|
import { BasicMarkdown } from './components/BasicMarkdown';
|
|
5
5
|
import { MarkdownMessageText, canUseStreamdown } from './components/MarkdownMessageText';
|
|
6
6
|
import { StreamingCursor } from './components/StreamingCursor';
|
|
7
|
+
import { useTextHighlight } from './components/textHighlight';
|
|
7
8
|
import { useThemedStyles } from './hooks/useTheme';
|
|
8
9
|
import { LinkParser } from './linkParser';
|
|
9
10
|
export function MessageText(t0) {
|
|
10
|
-
const $ = _c(
|
|
11
|
+
const $ = _c(79);
|
|
11
12
|
const {
|
|
12
13
|
currentMessage,
|
|
13
14
|
position: t1,
|
|
@@ -37,6 +38,7 @@ export function MessageText(t0) {
|
|
|
37
38
|
const mention = t6 === undefined ? false : t6;
|
|
38
39
|
const stripPrefix = t7 === undefined ? false : t7;
|
|
39
40
|
const styles = useThemedStyles(createStyles);
|
|
41
|
+
const highlight = useTextHighlight();
|
|
40
42
|
let t8;
|
|
41
43
|
if ($[0] !== linkStyleProp || $[1] !== position || $[2] !== styles) {
|
|
42
44
|
t8 = StyleSheet.flatten([styles.link, styles[`link_${position}`], linkStyleProp?.[position]]);
|
|
@@ -187,10 +189,12 @@ export function MessageText(t0) {
|
|
|
187
189
|
}
|
|
188
190
|
return t21;
|
|
189
191
|
}
|
|
190
|
-
const t14 =
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
192
|
+
const t14 = highlight?.text;
|
|
193
|
+
const t15 = highlight?.style;
|
|
194
|
+
const t16 = onPressProp ? handlePress : undefined;
|
|
195
|
+
let t17;
|
|
196
|
+
if ($[52] !== currentMessage.text || $[53] !== email || $[54] !== hashtag || $[55] !== hashtagUrl || $[56] !== linkStyle || $[57] !== matchers || $[58] !== mention || $[59] !== mentionUrl || $[60] !== phone || $[61] !== stripPrefix || $[62] !== style || $[63] !== t14 || $[64] !== t15 || $[65] !== t16 || $[66] !== url) {
|
|
197
|
+
t17 = <LinkParser text={currentMessage.text} matchers={matchers} email={email} phone={phone} url={url} hashtag={hashtag} mention={mention} hashtagUrl={hashtagUrl} mentionUrl={mentionUrl} stripPrefix={stripPrefix} linkStyle={linkStyle} textStyle={style} highlight={t14} highlightStyle={t15} onPress={t16} TextComponent={Text} />;
|
|
194
198
|
$[52] = currentMessage.text;
|
|
195
199
|
$[53] = email;
|
|
196
200
|
$[54] = hashtag;
|
|
@@ -203,43 +207,45 @@ export function MessageText(t0) {
|
|
|
203
207
|
$[61] = stripPrefix;
|
|
204
208
|
$[62] = style;
|
|
205
209
|
$[63] = t14;
|
|
206
|
-
$[64] =
|
|
207
|
-
$[65] =
|
|
210
|
+
$[64] = t15;
|
|
211
|
+
$[65] = t16;
|
|
212
|
+
$[66] = url;
|
|
213
|
+
$[67] = t17;
|
|
208
214
|
} else {
|
|
209
|
-
|
|
215
|
+
t17 = $[67];
|
|
210
216
|
}
|
|
211
|
-
const parsed =
|
|
212
|
-
const
|
|
213
|
-
let
|
|
214
|
-
if ($[
|
|
215
|
-
|
|
216
|
-
$[
|
|
217
|
-
$[
|
|
218
|
-
$[
|
|
217
|
+
const parsed = t17;
|
|
218
|
+
const t18 = containerStyle?.[position];
|
|
219
|
+
let t19;
|
|
220
|
+
if ($[68] !== styles.container || $[69] !== t18) {
|
|
221
|
+
t19 = [styles.container, t18];
|
|
222
|
+
$[68] = styles.container;
|
|
223
|
+
$[69] = t18;
|
|
224
|
+
$[70] = t19;
|
|
219
225
|
} else {
|
|
220
|
-
|
|
226
|
+
t19 = $[70];
|
|
221
227
|
}
|
|
222
|
-
let
|
|
223
|
-
if ($[
|
|
224
|
-
|
|
225
|
-
$[
|
|
226
|
-
$[
|
|
227
|
-
$[
|
|
228
|
-
$[
|
|
229
|
-
$[
|
|
228
|
+
let t20;
|
|
229
|
+
if ($[71] !== isStreaming || $[72] !== parsed || $[73] !== style || $[74] !== trailing) {
|
|
230
|
+
t20 = isStreaming || trailing ? <Text style={style}>{parsed}{isStreaming && <StreamingCursor />}{trailing}</Text> : parsed;
|
|
231
|
+
$[71] = isStreaming;
|
|
232
|
+
$[72] = parsed;
|
|
233
|
+
$[73] = style;
|
|
234
|
+
$[74] = trailing;
|
|
235
|
+
$[75] = t20;
|
|
230
236
|
} else {
|
|
231
|
-
|
|
237
|
+
t20 = $[75];
|
|
232
238
|
}
|
|
233
|
-
let
|
|
234
|
-
if ($[
|
|
235
|
-
|
|
236
|
-
$[74] = t17;
|
|
237
|
-
$[75] = t18;
|
|
239
|
+
let t21;
|
|
240
|
+
if ($[76] !== t19 || $[77] !== t20) {
|
|
241
|
+
t21 = <View style={t19}>{t20}</View>;
|
|
238
242
|
$[76] = t19;
|
|
243
|
+
$[77] = t20;
|
|
244
|
+
$[78] = t21;
|
|
239
245
|
} else {
|
|
240
|
-
|
|
246
|
+
t21 = $[78];
|
|
241
247
|
}
|
|
242
|
-
return
|
|
248
|
+
return t21;
|
|
243
249
|
}
|
|
244
250
|
const createStyles = theme => StyleSheet.create({
|
|
245
251
|
container: {
|
package/lib/MessageText.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageText.js","names":["React","useMemo","useCallback","StyleSheet","View","Text","BasicMarkdown","MarkdownMessageText","canUseStreamdown","StreamingCursor","useThemedStyles","LinkParser","MessageText","t0","$","_c","currentMessage","position","t1","containerStyle","textStyle","linkStyle","linkStyleProp","customTextStyle","onPress","onPressProp","matchers","email","t2","phone","t3","url","t4","hashtag","t5","mention","t6","hashtagUrl","mentionUrl","stripPrefix","t7","markdown","markdownProps","trailing","undefined","styles","createStyles","t8","flatten","link","t9","t10","t11","text","style","t12","url_0","type","handlePress","isStreaming","streaming","wantMarkdown","t13","trailingLine","t14","t15","container","t16","t17","t18","link_0","t19","t20","t21","parsed","theme","create","marginTop","spacing","bubblePaddingV","marginBottom","bubblePaddingBottom","marginHorizontal","bubblePaddingH","fontSize","typography","message","lineHeight","fontWeight","text_left","color","colors","incomingText","text_right","outgoingText","link_left","incomingLink","link_right","outgoingLink"],"sources":["../src/MessageText.tsx"],"sourcesContent":["import React, { useMemo, useCallback } from 'react'\nimport {\n StyleSheet,\n StyleProp,\n ViewStyle,\n TextStyle,\n View,\n Text } from 'react-native'\n\nimport { BasicMarkdown } from './components/BasicMarkdown'\nimport { MarkdownMessageText, canUseStreamdown } from './components/MarkdownMessageText'\nimport { StreamingCursor } from './components/StreamingCursor'\nimport { useThemedStyles } from './hooks/useTheme'\nimport { LinkParser, LinkMatcher, LinkType } from './linkParser'\nimport { LeftRightStyle, IMessage } from './Models'\nimport { ChatTheme } from './Theme'\n\nexport type MessageTextProps<TMessage extends IMessage> = {\n position?: 'left' | 'right'\n currentMessage: TMessage\n containerStyle?: LeftRightStyle<ViewStyle>\n textStyle?: LeftRightStyle<TextStyle>\n linkStyle?: LeftRightStyle<TextStyle>\n customTextStyle?: StyleProp<TextStyle>\n onPress?: (\n message: TMessage,\n url: string,\n type: LinkType\n ) => void\n // Link parser options\n matchers?: LinkMatcher[]\n email?: boolean\n phone?: boolean\n url?: boolean\n hashtag?: boolean\n mention?: boolean\n hashtagUrl?: string\n mentionUrl?: string\n stripPrefix?: boolean\n /**\n * Render the message body as markdown (great for AI/streamed replies). `true`\n * forces markdown for every message, `false` disables it; when left unset,\n * streamed messages render as markdown automatically. Uses the optional\n * `react-native-streamdown` peer when installed (best handling of\n * streaming-incomplete markdown), otherwise a built-in dependency-free renderer\n * covering headings, lists, blockquotes, code, bold/italic/strikethrough and links.\n */\n markdown?: boolean\n /** Extra props forwarded to the Streamdown component (its own theming/rules API); only used when streamdown is installed. */\n markdownProps?: Record<string, unknown>\n /**\n * Inline content after the last word. `Bubble` puts an invisible copy of the time here, so\n * the visible time can sit on the last line when it fits and the text wraps around it\n * when it does not. In markdown it follows the closing paragraph,\n * heading or list item; after a code block or a quote it takes a line of its own.\n */\n trailing?: React.ReactNode\n}\n\nexport function MessageText<TMessage extends IMessage>({\n currentMessage,\n position = 'left',\n containerStyle,\n textStyle,\n linkStyle: linkStyleProp,\n customTextStyle,\n onPress: onPressProp,\n matchers,\n email = true,\n phone = true,\n url = true,\n hashtag = false,\n mention = false,\n hashtagUrl,\n mentionUrl,\n stripPrefix = false,\n markdown,\n markdownProps,\n trailing,\n}: MessageTextProps<TMessage>) {\n const styles = useThemedStyles(createStyles)\n\n const linkStyle = useMemo(() => StyleSheet.flatten([\n styles.link,\n styles[`link_${position}`],\n linkStyleProp?.[position],\n ]), [styles, position, linkStyleProp])\n\n const style = useMemo(() => [\n styles.text,\n styles[`text_${position}`],\n textStyle?.[position],\n customTextStyle,\n ], [styles, position, textStyle, customTextStyle])\n\n const handlePress = useCallback((url: string, type: LinkType) => {\n onPressProp?.(currentMessage, url, type)\n }, [onPressProp, currentMessage])\n\n const isStreaming = !!currentMessage?.streaming\n\n // Render markdown when explicitly enabled, or when the message is being\n // streamed (AI replies) and it wasn't explicitly disabled. Prefer\n // react-native-streamdown when installed (best streaming-incomplete handling),\n // otherwise fall back to the built-in dependency-free renderer.\n const wantMarkdown = markdown !== false && (markdown === true || isStreaming)\n\n // Blocks of markdown have no last line to share, so the time gets one of its own.\n const trailingLine = trailing ? <Text style={style}>{trailing}</Text> : null\n\n if (wantMarkdown && canUseStreamdown())\n return (\n <View style={[styles.container, containerStyle?.[position]]}>\n <MarkdownMessageText\n text={currentMessage!.text}\n isStreaming={isStreaming}\n textStyle={style}\n linkStyle={linkStyle}\n onLinkPress={onPressProp ? (link: string) => handlePress(link, 'url') : undefined}\n componentProps={markdownProps}\n />\n {trailingLine}\n </View>\n )\n\n if (wantMarkdown)\n return (\n <View style={[styles.container, containerStyle?.[position]]}>\n <BasicMarkdown\n text={currentMessage!.text}\n textStyle={style}\n linkStyle={linkStyle}\n onLinkPress={onPressProp ? (link: string) => handlePress(link, 'url') : undefined}\n // The time shares the last line when it fits, as with plain text; a streaming reply\n // keeps its caret on the line after, so the time waits below it.\n trailing={isStreaming ? undefined : trailing}\n />\n {isStreaming && (\n <Text style={style}>\n <StreamingCursor />\n </Text>\n )}\n {isStreaming && trailingLine}\n </View>\n )\n\n const parsed = (\n <LinkParser\n text={currentMessage!.text}\n matchers={matchers}\n email={email}\n phone={phone}\n url={url}\n hashtag={hashtag}\n mention={mention}\n hashtagUrl={hashtagUrl}\n mentionUrl={mentionUrl}\n stripPrefix={stripPrefix}\n linkStyle={linkStyle}\n textStyle={style}\n onPress={onPressProp ? handlePress : undefined}\n TextComponent={Text}\n />\n )\n\n return (\n <View\n style={[\n styles.container,\n containerStyle?.[position],\n ]}\n >\n {isStreaming || trailing\n ? (\n // Wrap in a Text so the caret and the reserved time space flow inline after the\n // last word and inherit the bubble text color.\n <Text style={style}>\n {parsed}\n {isStreaming && <StreamingCursor />}\n {trailing}\n </Text>\n )\n : parsed}\n </View>\n )\n}\n\nconst createStyles = (theme: ChatTheme) => StyleSheet.create({\n container: {\n marginTop: theme.spacing.bubblePaddingV,\n marginBottom: theme.spacing.bubblePaddingBottom,\n marginHorizontal: theme.spacing.bubblePaddingH,\n },\n text: {\n fontSize: theme.typography.message.fontSize,\n lineHeight: theme.typography.message.lineHeight,\n fontWeight: theme.typography.message.fontWeight,\n },\n text_left: {\n color: theme.colors.incomingText,\n },\n text_right: {\n color: theme.colors.outgoingText,\n },\n // Links are colored, not underlined.\n link: {},\n link_left: {\n color: theme.colors.incomingLink,\n },\n link_right: {\n color: theme.colors.outgoingLink,\n },\n})\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"MessageText.js","names":["React","useMemo","useCallback","StyleSheet","View","Text","BasicMarkdown","MarkdownMessageText","canUseStreamdown","StreamingCursor","useTextHighlight","useThemedStyles","LinkParser","MessageText","t0","$","_c","currentMessage","position","t1","containerStyle","textStyle","linkStyle","linkStyleProp","customTextStyle","onPress","onPressProp","matchers","email","t2","phone","t3","url","t4","hashtag","t5","mention","t6","hashtagUrl","mentionUrl","stripPrefix","t7","markdown","markdownProps","trailing","undefined","styles","createStyles","highlight","t8","flatten","link","t9","t10","t11","text","style","t12","url_0","type","handlePress","isStreaming","streaming","wantMarkdown","t13","trailingLine","t14","t15","container","t16","t17","t18","link_0","t19","t20","t21","parsed","theme","create","marginTop","spacing","bubblePaddingV","marginBottom","bubblePaddingBottom","marginHorizontal","bubblePaddingH","fontSize","typography","message","lineHeight","fontWeight","text_left","color","colors","incomingText","text_right","outgoingText","link_left","incomingLink","link_right","outgoingLink"],"sources":["../src/MessageText.tsx"],"sourcesContent":["import React, { useMemo, useCallback } from 'react'\nimport {\n StyleSheet,\n StyleProp,\n ViewStyle,\n TextStyle,\n View,\n Text } from 'react-native'\n\nimport { BasicMarkdown } from './components/BasicMarkdown'\nimport { MarkdownMessageText, canUseStreamdown } from './components/MarkdownMessageText'\nimport { StreamingCursor } from './components/StreamingCursor'\nimport { useTextHighlight } from './components/textHighlight'\nimport { useThemedStyles } from './hooks/useTheme'\nimport { LinkParser, LinkMatcher, LinkType } from './linkParser'\nimport { LeftRightStyle, IMessage } from './Models'\nimport { ChatTheme } from './Theme'\n\nexport type MessageTextProps<TMessage extends IMessage> = {\n position?: 'left' | 'right'\n currentMessage: TMessage\n containerStyle?: LeftRightStyle<ViewStyle>\n textStyle?: LeftRightStyle<TextStyle>\n linkStyle?: LeftRightStyle<TextStyle>\n customTextStyle?: StyleProp<TextStyle>\n onPress?: (\n message: TMessage,\n url: string,\n type: LinkType\n ) => void\n // Link parser options\n matchers?: LinkMatcher[]\n email?: boolean\n phone?: boolean\n url?: boolean\n hashtag?: boolean\n mention?: boolean\n hashtagUrl?: string\n mentionUrl?: string\n stripPrefix?: boolean\n /**\n * Render the message body as markdown (great for AI/streamed replies). `true`\n * forces markdown for every message, `false` disables it; when left unset,\n * streamed messages render as markdown automatically. Uses the optional\n * `react-native-streamdown` peer when installed (best handling of\n * streaming-incomplete markdown), otherwise a built-in dependency-free renderer\n * covering headings, lists, blockquotes, code, bold/italic/strikethrough and links.\n */\n markdown?: boolean\n /** Extra props forwarded to the Streamdown component (its own theming/rules API); only used when streamdown is installed. */\n markdownProps?: Record<string, unknown>\n /**\n * Inline content after the last word. `Bubble` puts an invisible copy of the time here, so\n * the visible time can sit on the last line when it fits and the text wraps around it\n * when it does not. In markdown it follows the closing paragraph,\n * heading or list item; after a code block or a quote it takes a line of its own.\n */\n trailing?: React.ReactNode\n}\n\nexport function MessageText<TMessage extends IMessage>({\n currentMessage,\n position = 'left',\n containerStyle,\n textStyle,\n linkStyle: linkStyleProp,\n customTextStyle,\n onPress: onPressProp,\n matchers,\n email = true,\n phone = true,\n url = true,\n hashtag = false,\n mention = false,\n hashtagUrl,\n mentionUrl,\n stripPrefix = false,\n markdown,\n markdownProps,\n trailing,\n}: MessageTextProps<TMessage>) {\n const styles = useThemedStyles(createStyles)\n const highlight = useTextHighlight()\n\n const linkStyle = useMemo(() => StyleSheet.flatten([\n styles.link,\n styles[`link_${position}`],\n linkStyleProp?.[position],\n ]), [styles, position, linkStyleProp])\n\n const style = useMemo(() => [\n styles.text,\n styles[`text_${position}`],\n textStyle?.[position],\n customTextStyle,\n ], [styles, position, textStyle, customTextStyle])\n\n const handlePress = useCallback((url: string, type: LinkType) => {\n onPressProp?.(currentMessage, url, type)\n }, [onPressProp, currentMessage])\n\n const isStreaming = !!currentMessage?.streaming\n\n // Render markdown when explicitly enabled, or when the message is being\n // streamed (AI replies) and it wasn't explicitly disabled. Prefer\n // react-native-streamdown when installed (best streaming-incomplete handling),\n // otherwise fall back to the built-in dependency-free renderer.\n const wantMarkdown = markdown !== false && (markdown === true || isStreaming)\n\n // Blocks of markdown have no last line to share, so the time gets one of its own.\n const trailingLine = trailing ? <Text style={style}>{trailing}</Text> : null\n\n if (wantMarkdown && canUseStreamdown())\n return (\n <View style={[styles.container, containerStyle?.[position]]}>\n <MarkdownMessageText\n text={currentMessage!.text}\n isStreaming={isStreaming}\n textStyle={style}\n linkStyle={linkStyle}\n onLinkPress={onPressProp ? (link: string) => handlePress(link, 'url') : undefined}\n componentProps={markdownProps}\n />\n {trailingLine}\n </View>\n )\n\n if (wantMarkdown)\n return (\n <View style={[styles.container, containerStyle?.[position]]}>\n <BasicMarkdown\n text={currentMessage!.text}\n textStyle={style}\n linkStyle={linkStyle}\n onLinkPress={onPressProp ? (link: string) => handlePress(link, 'url') : undefined}\n // The time shares the last line when it fits, as with plain text; a streaming reply\n // keeps its caret on the line after, so the time waits below it.\n trailing={isStreaming ? undefined : trailing}\n />\n {isStreaming && (\n <Text style={style}>\n <StreamingCursor />\n </Text>\n )}\n {isStreaming && trailingLine}\n </View>\n )\n\n const parsed = (\n <LinkParser\n text={currentMessage!.text}\n matchers={matchers}\n email={email}\n phone={phone}\n url={url}\n hashtag={hashtag}\n mention={mention}\n hashtagUrl={hashtagUrl}\n mentionUrl={mentionUrl}\n stripPrefix={stripPrefix}\n linkStyle={linkStyle}\n textStyle={style}\n highlight={highlight?.text}\n highlightStyle={highlight?.style}\n onPress={onPressProp ? handlePress : undefined}\n TextComponent={Text}\n />\n )\n\n return (\n <View\n style={[\n styles.container,\n containerStyle?.[position],\n ]}\n >\n {isStreaming || trailing\n ? (\n // Wrap in a Text so the caret and the reserved time space flow inline after the\n // last word and inherit the bubble text color.\n <Text style={style}>\n {parsed}\n {isStreaming && <StreamingCursor />}\n {trailing}\n </Text>\n )\n : parsed}\n </View>\n )\n}\n\nconst createStyles = (theme: ChatTheme) => StyleSheet.create({\n container: {\n marginTop: theme.spacing.bubblePaddingV,\n marginBottom: theme.spacing.bubblePaddingBottom,\n marginHorizontal: theme.spacing.bubblePaddingH,\n },\n text: {\n fontSize: theme.typography.message.fontSize,\n lineHeight: theme.typography.message.lineHeight,\n fontWeight: theme.typography.message.fontWeight,\n },\n text_left: {\n color: theme.colors.incomingText,\n },\n text_right: {\n color: theme.colors.outgoingText,\n },\n // Links are colored, not underlined.\n link: {},\n link_left: {\n color: theme.colors.incomingLink,\n },\n link_right: {\n color: theme.colors.outgoingLink,\n },\n})\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/MessagesContainer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAOlD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAWpC,OAAO,EAAE,sBAAsB,EAAiB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/MessagesContainer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAOlD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAWpC,OAAO,EAAE,sBAAsB,EAAiB,MAAM,SAAS,CAAA;AAc/D,cAAc,SAAS,CAAA;AAEvB,eAAO,MAAM,iBAAiB,GAAI,QAAQ,SAAS,QAAQ,EAAE,OAAO,sBAAsB,CAAC,QAAQ,CAAC,sBAgPnG,CAAA"}
|
|
@@ -17,6 +17,7 @@ import { MessageRowConfigContext, RowTargetsContext } from './rowConfig';
|
|
|
17
17
|
import { MessageRowStoreContext } from './rowStore';
|
|
18
18
|
import styles, { createThemedStyles } from './styles';
|
|
19
19
|
import { useCellLayouts } from './useCellLayouts';
|
|
20
|
+
import { useChained } from './useChained';
|
|
20
21
|
import { useDaysPositions } from './useDaysPositions';
|
|
21
22
|
import { useListChrome } from './useListChrome';
|
|
22
23
|
import { useListMetrics, useRowsHeight } from './useListMetrics';
|
|
@@ -28,7 +29,7 @@ import { useTapToClosePanels } from './useTapToClosePanels';
|
|
|
28
29
|
import { useViewabilityPairs } from './viewability';
|
|
29
30
|
export * from './types';
|
|
30
31
|
export const MessagesContainer = props => {
|
|
31
|
-
const $ = _c(
|
|
32
|
+
const $ = _c(109);
|
|
32
33
|
const {
|
|
33
34
|
messages: t0,
|
|
34
35
|
user,
|
|
@@ -239,131 +240,149 @@ export const MessagesContainer = props => {
|
|
|
239
240
|
onListTouchStart,
|
|
240
241
|
onListTouchEnd
|
|
241
242
|
} = useTapToClosePanels();
|
|
242
|
-
const
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
$[
|
|
254
|
-
$[
|
|
255
|
-
$[49] = onItemSizeChanged;
|
|
256
|
-
$[50] = onLayoutList;
|
|
257
|
-
$[51] = onMetricsChange;
|
|
258
|
-
$[52] = onMomentumScrollBegin;
|
|
259
|
-
$[53] = onMomentumScrollEnd;
|
|
260
|
-
$[54] = onScrollBeginDrag;
|
|
261
|
-
$[55] = onScrollEndDrag;
|
|
262
|
-
$[56] = onStartReached;
|
|
263
|
-
$[57] = orderedData;
|
|
264
|
-
$[58] = renderChatEmpty;
|
|
265
|
-
$[59] = renderItem;
|
|
266
|
-
$[60] = sharedValues;
|
|
267
|
-
$[61] = t14;
|
|
268
|
-
$[62] = viewabilityPairs;
|
|
269
|
-
$[63] = t15;
|
|
243
|
+
const handleScrollBeginDrag = useChained(onScrollBeginDrag, listProps?.onScrollBeginDrag);
|
|
244
|
+
const handleScrollEndDrag = useChained(onScrollEndDrag, listProps?.onScrollEndDrag);
|
|
245
|
+
const handleMomentumScrollBegin = useChained(onMomentumScrollBegin, listProps?.onMomentumScrollBegin);
|
|
246
|
+
const handleMomentumScrollEnd = useChained(onMomentumScrollEnd, listProps?.onMomentumScrollEnd);
|
|
247
|
+
const handleContentSizeChange = useChained(onContentSizeChange, listProps?.onContentSizeChange);
|
|
248
|
+
const handleItemSizeChanged = useChained(onItemSizeChanged, listProps?.onItemSizeChanged);
|
|
249
|
+
const handleMetricsChange = useChained(onMetricsChange, listProps?.onMetricsChange);
|
|
250
|
+
const listContentStyle = listProps?.contentContainerStyle;
|
|
251
|
+
let t14;
|
|
252
|
+
if ($[40] !== listContentStyle) {
|
|
253
|
+
t14 = listContentStyle ? [styles.messagesContainer, listContentStyle] : styles.messagesContainer;
|
|
254
|
+
$[40] = listContentStyle;
|
|
255
|
+
$[41] = t14;
|
|
270
256
|
} else {
|
|
271
|
-
|
|
257
|
+
t14 = $[41];
|
|
272
258
|
}
|
|
273
|
-
const
|
|
259
|
+
const contentContainerStyle = t14;
|
|
260
|
+
const t15 = isLayoutAnimated ? listCellTransition : undefined;
|
|
274
261
|
let t16;
|
|
275
|
-
if ($[64] !==
|
|
276
|
-
t16 =
|
|
277
|
-
$[
|
|
278
|
-
$[
|
|
262
|
+
if ($[42] !== ListFooterComponent || $[43] !== ListHeaderComponent || $[44] !== alignItemsAtEnd || $[45] !== contentContainerStyle || $[46] !== forwardRef || $[47] !== handleContentSizeChange || $[48] !== handleItemSizeChanged || $[49] !== handleMetricsChange || $[50] !== handleMomentumScrollBegin || $[51] !== handleMomentumScrollEnd || $[52] !== handleScrollBeginDrag || $[53] !== handleScrollEndDrag || $[54] !== initialScroll || $[55] !== keyExtractor || $[56] !== listProps || $[57] !== maintainScrollAtEnd || $[58] !== onLayoutList || $[59] !== onStartReached || $[60] !== orderedData || $[61] !== renderChatEmpty || $[62] !== renderItem || $[63] !== sharedValues || $[64] !== t15 || $[65] !== viewabilityPairs) {
|
|
263
|
+
t16 = <AnimatedLegendList ref={forwardRef} keyExtractor={keyExtractor} data={orderedData} renderItem={renderItem} estimatedItemSize={64} alignItemsAtEnd={alignItemsAtEnd} {...initialScroll} maintainScrollAtEnd={maintainScrollAtEnd} maintainVisibleContentPosition={true} itemLayoutAnimation={t15} sharedValues={sharedValues} style={stylesCommon.fill} ListEmptyComponent={renderChatEmpty} ListHeaderComponent={ListHeaderComponent} ListFooterComponent={ListFooterComponent} onStartReached={onStartReached} onStartReachedThreshold={0.1} keyboardDismissMode="interactive" keyboardShouldPersistTaps="handled" {...listProps} contentContainerStyle={contentContainerStyle} onScrollBeginDrag={handleScrollBeginDrag} onScrollEndDrag={handleScrollEndDrag} onMomentumScrollBegin={handleMomentumScrollBegin} onMomentumScrollEnd={handleMomentumScrollEnd} onContentSizeChange={handleContentSizeChange} onItemSizeChanged={handleItemSizeChanged} onMetricsChange={handleMetricsChange} onViewableItemsChanged={undefined} viewabilityConfig={undefined} viewabilityConfigCallbackPairs={viewabilityPairs} onLayout={onLayoutList} />;
|
|
264
|
+
$[42] = ListFooterComponent;
|
|
265
|
+
$[43] = ListHeaderComponent;
|
|
266
|
+
$[44] = alignItemsAtEnd;
|
|
267
|
+
$[45] = contentContainerStyle;
|
|
268
|
+
$[46] = forwardRef;
|
|
269
|
+
$[47] = handleContentSizeChange;
|
|
270
|
+
$[48] = handleItemSizeChanged;
|
|
271
|
+
$[49] = handleMetricsChange;
|
|
272
|
+
$[50] = handleMomentumScrollBegin;
|
|
273
|
+
$[51] = handleMomentumScrollEnd;
|
|
274
|
+
$[52] = handleScrollBeginDrag;
|
|
275
|
+
$[53] = handleScrollEndDrag;
|
|
276
|
+
$[54] = initialScroll;
|
|
277
|
+
$[55] = keyExtractor;
|
|
278
|
+
$[56] = listProps;
|
|
279
|
+
$[57] = maintainScrollAtEnd;
|
|
280
|
+
$[58] = onLayoutList;
|
|
281
|
+
$[59] = onStartReached;
|
|
282
|
+
$[60] = orderedData;
|
|
283
|
+
$[61] = renderChatEmpty;
|
|
284
|
+
$[62] = renderItem;
|
|
285
|
+
$[63] = sharedValues;
|
|
286
|
+
$[64] = t15;
|
|
287
|
+
$[65] = viewabilityPairs;
|
|
288
|
+
$[66] = t16;
|
|
279
289
|
} else {
|
|
280
|
-
t16 = $[
|
|
290
|
+
t16 = $[66];
|
|
281
291
|
}
|
|
292
|
+
const listEngine = t16;
|
|
282
293
|
let t17;
|
|
283
|
-
if ($[
|
|
284
|
-
t17 =
|
|
285
|
-
$[
|
|
286
|
-
$[
|
|
287
|
-
$[68] = isScrollToBottomVisible;
|
|
288
|
-
$[69] = scrollToBottomComponentProp;
|
|
289
|
-
$[70] = scrollToBottomContentStyle;
|
|
290
|
-
$[71] = scrollToBottomOpacity;
|
|
291
|
-
$[72] = scrollToBottomStyle;
|
|
292
|
-
$[73] = unreadCount;
|
|
293
|
-
$[74] = t17;
|
|
294
|
+
if ($[67] !== themedStyles.root) {
|
|
295
|
+
t17 = [styles.contentContainerStyle, themedStyles.root, stylesCommon.fill];
|
|
296
|
+
$[67] = themedStyles.root;
|
|
297
|
+
$[68] = t17;
|
|
294
298
|
} else {
|
|
295
|
-
t17 = $[
|
|
299
|
+
t17 = $[68];
|
|
296
300
|
}
|
|
297
301
|
let t18;
|
|
298
|
-
if ($[
|
|
299
|
-
t18 =
|
|
300
|
-
$[
|
|
301
|
-
$[
|
|
302
|
-
$[
|
|
303
|
-
$[
|
|
304
|
-
$[
|
|
305
|
-
$[
|
|
306
|
-
$[
|
|
307
|
-
$[
|
|
308
|
-
$[
|
|
309
|
-
$[84] = renderDayProp;
|
|
310
|
-
$[85] = scrolledY;
|
|
311
|
-
$[86] = t18;
|
|
302
|
+
if ($[69] !== handleScrollToBottomPress || $[70] !== isScrollToBottomEnabled || $[71] !== isScrollToBottomVisible || $[72] !== scrollToBottomComponentProp || $[73] !== scrollToBottomContentStyle || $[74] !== scrollToBottomOpacity || $[75] !== scrollToBottomStyle || $[76] !== unreadCount) {
|
|
303
|
+
t18 = <ScrollToBottomButton isEnabled={isScrollToBottomEnabled} isVisible={isScrollToBottomVisible} opacity={scrollToBottomOpacity} unreadCount={unreadCount} onPress={handleScrollToBottomPress} style={scrollToBottomStyle} contentStyle={scrollToBottomContentStyle} scrollToBottomComponent={scrollToBottomComponentProp} />;
|
|
304
|
+
$[69] = handleScrollToBottomPress;
|
|
305
|
+
$[70] = isScrollToBottomEnabled;
|
|
306
|
+
$[71] = isScrollToBottomVisible;
|
|
307
|
+
$[72] = scrollToBottomComponentProp;
|
|
308
|
+
$[73] = scrollToBottomContentStyle;
|
|
309
|
+
$[74] = scrollToBottomOpacity;
|
|
310
|
+
$[75] = scrollToBottomStyle;
|
|
311
|
+
$[76] = unreadCount;
|
|
312
|
+
$[77] = t18;
|
|
312
313
|
} else {
|
|
313
|
-
t18 = $[
|
|
314
|
+
t18 = $[77];
|
|
314
315
|
}
|
|
315
316
|
let t19;
|
|
316
|
-
if ($[
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
$[
|
|
320
|
-
$[
|
|
321
|
-
$[
|
|
322
|
-
$[
|
|
323
|
-
$[
|
|
324
|
-
$[
|
|
325
|
-
$[
|
|
317
|
+
if ($[78] !== daysPositions || $[79] !== floatingDayOpacity || $[80] !== floatingRenderedDate || $[81] !== isDayAnimationEnabled || $[82] !== isScrollActive || $[83] !== listHeight || $[84] !== loadEarlierMessagesProps?.isLoading || $[85] !== props.dateFormat || $[86] !== props.dateFormatCalendar || $[87] !== renderDayProp || $[88] !== scrolledY) {
|
|
318
|
+
t19 = isDayAnimationEnabled && <DayAnimated scrolledY={scrolledY} daysPositions={daysPositions} listHeight={listHeight} isScrollActive={isScrollActive} floatingRenderedDate={floatingRenderedDate} opacity={floatingDayOpacity} renderDay={renderDayProp} isLoading={loadEarlierMessagesProps?.isLoading ?? false} dateFormat={props.dateFormat} dateFormatCalendar={props.dateFormatCalendar} />;
|
|
319
|
+
$[78] = daysPositions;
|
|
320
|
+
$[79] = floatingDayOpacity;
|
|
321
|
+
$[80] = floatingRenderedDate;
|
|
322
|
+
$[81] = isDayAnimationEnabled;
|
|
323
|
+
$[82] = isScrollActive;
|
|
324
|
+
$[83] = listHeight;
|
|
325
|
+
$[84] = loadEarlierMessagesProps?.isLoading;
|
|
326
|
+
$[85] = props.dateFormat;
|
|
327
|
+
$[86] = props.dateFormatCalendar;
|
|
328
|
+
$[87] = renderDayProp;
|
|
329
|
+
$[88] = scrolledY;
|
|
330
|
+
$[89] = t19;
|
|
326
331
|
} else {
|
|
327
|
-
t19 = $[
|
|
332
|
+
t19 = $[89];
|
|
328
333
|
}
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
$[
|
|
335
|
-
$[
|
|
336
|
-
$[
|
|
334
|
+
let t20;
|
|
335
|
+
if ($[90] !== listEngine || $[91] !== onListTouchEnd || $[92] !== onListTouchStart || $[93] !== t17 || $[94] !== t18 || $[95] !== t19) {
|
|
336
|
+
const list = <View style={t17} onTouchStart={onListTouchStart} onTouchEnd={onListTouchEnd}>{listEngine}{t18}{t19}</View>;
|
|
337
|
+
t20 = <TypingIndicatorListAnimationContext.Provider value={true}>{list}</TypingIndicatorListAnimationContext.Provider>;
|
|
338
|
+
$[90] = listEngine;
|
|
339
|
+
$[91] = onListTouchEnd;
|
|
340
|
+
$[92] = onListTouchStart;
|
|
341
|
+
$[93] = t17;
|
|
342
|
+
$[94] = t18;
|
|
343
|
+
$[95] = t19;
|
|
344
|
+
$[96] = t20;
|
|
337
345
|
} else {
|
|
338
|
-
|
|
346
|
+
t20 = $[96];
|
|
339
347
|
}
|
|
348
|
+
const animatedList = t20;
|
|
349
|
+
const t21 = rowStore;
|
|
340
350
|
let t22;
|
|
341
|
-
if ($[97] !==
|
|
342
|
-
t22 = <
|
|
343
|
-
$[97] =
|
|
344
|
-
$[98] =
|
|
351
|
+
if ($[97] !== animatedList || $[98] !== rowTargets) {
|
|
352
|
+
t22 = <RowTargetsContext.Provider value={rowTargets}>{animatedList}</RowTargetsContext.Provider>;
|
|
353
|
+
$[97] = animatedList;
|
|
354
|
+
$[98] = rowTargets;
|
|
345
355
|
$[99] = t22;
|
|
346
356
|
} else {
|
|
347
357
|
t22 = $[99];
|
|
348
358
|
}
|
|
349
359
|
let t23;
|
|
350
|
-
if ($[100] !==
|
|
351
|
-
t23 = <
|
|
352
|
-
$[100] =
|
|
360
|
+
if ($[100] !== rowConfig || $[101] !== t22) {
|
|
361
|
+
t23 = <MessageRowConfigContext.Provider value={rowConfig}>{t22}</MessageRowConfigContext.Provider>;
|
|
362
|
+
$[100] = rowConfig;
|
|
353
363
|
$[101] = t22;
|
|
354
364
|
$[102] = t23;
|
|
355
365
|
} else {
|
|
356
366
|
t23 = $[102];
|
|
357
367
|
}
|
|
358
368
|
let t24;
|
|
359
|
-
if ($[103] !==
|
|
360
|
-
t24 = <
|
|
361
|
-
$[103] =
|
|
369
|
+
if ($[103] !== t21 || $[104] !== t23) {
|
|
370
|
+
t24 = <MessageRowStoreContext.Provider value={t21}>{t23}</MessageRowStoreContext.Provider>;
|
|
371
|
+
$[103] = t21;
|
|
362
372
|
$[104] = t23;
|
|
363
373
|
$[105] = t24;
|
|
364
374
|
} else {
|
|
365
375
|
t24 = $[105];
|
|
366
376
|
}
|
|
367
|
-
|
|
377
|
+
let t25;
|
|
378
|
+
if ($[106] !== gradientStore || $[107] !== t24) {
|
|
379
|
+
t25 = <BubbleGradientContext.Provider value={gradientStore}>{t24}</BubbleGradientContext.Provider>;
|
|
380
|
+
$[106] = gradientStore;
|
|
381
|
+
$[107] = t24;
|
|
382
|
+
$[108] = t25;
|
|
383
|
+
} else {
|
|
384
|
+
t25 = $[108];
|
|
385
|
+
}
|
|
386
|
+
return t25;
|
|
368
387
|
};
|
|
369
388
|
//# sourceMappingURL=index.js.map
|