@kesha-antonov/react-native-chat 4.1.0 → 4.3.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.
- package/README.md +306 -62
- package/lib/Actions.d.ts +5 -5
- package/lib/Actions.d.ts.map +1 -1
- package/lib/Actions.js +28 -39
- package/lib/Actions.js.map +1 -1
- package/lib/Avatar.d.ts.map +1 -1
- package/lib/Avatar.js +22 -27
- package/lib/Avatar.js.map +1 -1
- package/lib/Bubble/index.d.ts.map +1 -1
- package/lib/Bubble/index.js +138 -37
- package/lib/Bubble/index.js.map +1 -1
- package/lib/Bubble/styles.d.ts +47 -11
- package/lib/Bubble/styles.d.ts.map +1 -1
- package/lib/Bubble/styles.js +108 -57
- package/lib/Bubble/styles.js.map +1 -1
- package/lib/Bubble/types.d.ts +16 -1
- package/lib/Bubble/types.d.ts.map +1 -1
- package/lib/Chat/ChatKeyboardAvoidingView.d.ts +21 -0
- package/lib/Chat/ChatKeyboardAvoidingView.d.ts.map +1 -0
- package/lib/Chat/ChatKeyboardAvoidingView.js +15 -0
- package/lib/Chat/ChatKeyboardAvoidingView.js.map +1 -0
- package/lib/Chat/index.d.ts.map +1 -1
- package/lib/Chat/index.js +81 -28
- package/lib/Chat/index.js.map +1 -1
- package/lib/Chat/types.d.ts +36 -6
- package/lib/Chat/types.d.ts.map +1 -1
- package/lib/ChatAvatar.d.ts.map +1 -1
- package/lib/ChatAvatar.js +11 -17
- package/lib/ChatAvatar.js.map +1 -1
- package/lib/ChatContext.d.ts +29 -1
- package/lib/ChatContext.d.ts.map +1 -1
- package/lib/ChatContext.js +3 -0
- package/lib/ChatContext.js.map +1 -1
- package/lib/Color.d.ts.map +1 -1
- package/lib/Color.js +6 -2
- package/lib/Color.js.map +1 -1
- package/lib/Composer.d.ts +14 -1
- package/lib/Composer.d.ts.map +1 -1
- package/lib/Composer.js +63 -50
- package/lib/Composer.js.map +1 -1
- package/lib/Day/index.d.ts.map +1 -1
- package/lib/Day/index.js +7 -3
- package/lib/Day/index.js.map +1 -1
- package/lib/Day/styles.d.ts +6 -7
- package/lib/Day/styles.d.ts.map +1 -1
- package/lib/Day/styles.js +11 -13
- package/lib/Day/styles.js.map +1 -1
- package/lib/Icons.d.ts +24 -0
- package/lib/Icons.d.ts.map +1 -0
- package/lib/Icons.js +2 -0
- package/lib/Icons.js.map +1 -0
- package/lib/InputToolbar.d.ts +18 -5
- package/lib/InputToolbar.d.ts.map +1 -1
- package/lib/InputToolbar.js +223 -19
- package/lib/InputToolbar.js.map +1 -1
- package/lib/LoadEarlierMessages.d.ts.map +1 -1
- package/lib/LoadEarlierMessages.js +12 -7
- package/lib/LoadEarlierMessages.js.map +1 -1
- package/lib/Message/index.d.ts.map +1 -1
- package/lib/Message/index.js +10 -9
- package/lib/Message/index.js.map +1 -1
- package/lib/Message/styles.d.ts +1 -4
- package/lib/Message/styles.d.ts.map +1 -1
- package/lib/Message/styles.js +4 -4
- package/lib/Message/styles.js.map +1 -1
- package/lib/MessageAudio.d.ts +2 -1
- package/lib/MessageAudio.d.ts.map +1 -1
- package/lib/MessageAudio.js +121 -19
- package/lib/MessageAudio.js.map +1 -1
- package/lib/MessageLocation.d.ts +9 -0
- package/lib/MessageLocation.d.ts.map +1 -0
- package/lib/MessageLocation.js +85 -0
- package/lib/MessageLocation.js.map +1 -0
- package/lib/MessageText.d.ts +12 -1
- package/lib/MessageText.d.ts.map +1 -1
- package/lib/MessageText.js +38 -11
- package/lib/MessageText.js.map +1 -1
- package/lib/MessageVideo.d.ts +2 -1
- package/lib/MessageVideo.d.ts.map +1 -1
- package/lib/MessageVideo.js +156 -18
- package/lib/MessageVideo.js.map +1 -1
- package/lib/MessagesContainer/FlashList.d.ts +9 -0
- package/lib/MessagesContainer/FlashList.d.ts.map +1 -0
- package/lib/MessagesContainer/FlashList.js +23 -0
- package/lib/MessagesContainer/FlashList.js.map +1 -0
- package/lib/MessagesContainer/components/Item/index.d.ts +2 -1
- package/lib/MessagesContainer/components/Item/index.d.ts.map +1 -1
- package/lib/MessagesContainer/components/Item/index.js +23 -1
- package/lib/MessagesContainer/components/Item/index.js.map +1 -1
- package/lib/MessagesContainer/index.d.ts.map +1 -1
- package/lib/MessagesContainer/index.js +133 -42
- package/lib/MessagesContainer/index.js.map +1 -1
- package/lib/MessagesContainer/styles.d.ts +23 -7
- package/lib/MessagesContainer/styles.d.ts.map +1 -1
- package/lib/MessagesContainer/styles.js +25 -9
- package/lib/MessagesContainer/styles.js.map +1 -1
- package/lib/MessagesContainer/types.d.ts +22 -2
- package/lib/MessagesContainer/types.d.ts.map +1 -1
- package/lib/Models.d.ts +72 -0
- package/lib/Models.d.ts.map +1 -1
- package/lib/QuickReplies.d.ts +1 -1
- package/lib/QuickReplies.d.ts.map +1 -1
- package/lib/QuickReplies.js +13 -7
- package/lib/QuickReplies.js.map +1 -1
- package/lib/Reactions/MessageReactions.d.ts.map +1 -1
- package/lib/Reactions/MessageReactions.js +11 -10
- package/lib/Reactions/MessageReactions.js.map +1 -1
- package/lib/Reactions/ReactionPicker.d.ts.map +1 -1
- package/lib/Reactions/ReactionPicker.js +5 -3
- package/lib/Reactions/ReactionPicker.js.map +1 -1
- package/lib/Send.d.ts +2 -2
- package/lib/Send.d.ts.map +1 -1
- package/lib/Send.js +37 -37
- package/lib/Send.js.map +1 -1
- package/lib/SystemMessage.d.ts.map +1 -1
- package/lib/SystemMessage.js +8 -5
- package/lib/SystemMessage.js.map +1 -1
- package/lib/Theme.d.ts +148 -0
- package/lib/Theme.d.ts.map +1 -0
- package/lib/Theme.js +142 -0
- package/lib/Theme.js.map +1 -0
- package/lib/Time.d.ts.map +1 -1
- package/lib/Time.js +7 -5
- package/lib/Time.js.map +1 -1
- package/lib/TypingIndicator/index.d.ts.map +1 -1
- package/lib/TypingIndicator/index.js +4 -1
- package/lib/TypingIndicator/index.js.map +1 -1
- package/lib/TypingIndicator/styles.d.ts +2 -2
- package/lib/TypingIndicator/styles.d.ts.map +1 -1
- package/lib/TypingIndicator/styles.js +4 -5
- package/lib/TypingIndicator/styles.js.map +1 -1
- package/lib/components/AttachmentSheet.d.ts +28 -0
- package/lib/components/AttachmentSheet.d.ts.map +1 -0
- package/lib/components/AttachmentSheet.js +177 -0
- package/lib/components/AttachmentSheet.js.map +1 -0
- package/lib/components/BasicMarkdown.d.ts +12 -0
- package/lib/components/BasicMarkdown.d.ts.map +1 -0
- package/lib/components/BasicMarkdown.js +220 -0
- package/lib/components/BasicMarkdown.js.map +1 -0
- package/lib/components/ContextMenu.d.ts +25 -0
- package/lib/components/ContextMenu.d.ts.map +1 -0
- package/lib/components/ContextMenu.js +122 -0
- package/lib/components/ContextMenu.js.map +1 -0
- package/lib/components/Icon.d.ts +17 -0
- package/lib/components/Icon.d.ts.map +1 -0
- package/lib/components/Icon.js +19 -0
- package/lib/components/Icon.js.map +1 -0
- package/lib/components/LucideIcon.d.ts +10 -0
- package/lib/components/LucideIcon.d.ts.map +1 -0
- package/lib/components/LucideIcon.js +118 -0
- package/lib/components/LucideIcon.js.map +1 -0
- package/lib/components/MarkdownMessageText.d.ts +19 -0
- package/lib/components/MarkdownMessageText.d.ts.map +1 -0
- package/lib/components/MarkdownMessageText.js +35 -0
- package/lib/components/MarkdownMessageText.js.map +1 -0
- package/lib/components/MediaCard.d.ts +19 -0
- package/lib/components/MediaCard.d.ts.map +1 -0
- package/lib/components/MediaCard.js +102 -0
- package/lib/components/MediaCard.js.map +1 -0
- package/lib/components/MediaControls.d.ts +41 -0
- package/lib/components/MediaControls.d.ts.map +1 -0
- package/lib/components/MediaControls.js +523 -0
- package/lib/components/MediaControls.js.map +1 -0
- package/lib/components/MessageReply.d.ts.map +1 -1
- package/lib/components/MessageReply.js +11 -9
- package/lib/components/MessageReply.js.map +1 -1
- package/lib/components/ReplyPreview.d.ts +3 -1
- package/lib/components/ReplyPreview.d.ts.map +1 -1
- package/lib/components/ReplyPreview.js +36 -36
- package/lib/components/ReplyPreview.js.map +1 -1
- package/lib/components/SendIcon.d.ts +13 -0
- package/lib/components/SendIcon.d.ts.map +1 -0
- package/lib/components/SendIcon.js +37 -0
- package/lib/components/SendIcon.js.map +1 -0
- package/lib/components/Ticks.d.ts +25 -0
- package/lib/components/Ticks.d.ts.map +1 -0
- package/lib/components/Ticks.js +102 -0
- package/lib/components/Ticks.js.map +1 -0
- package/lib/components/VideoNoteOverlay.d.ts +25 -0
- package/lib/components/VideoNoteOverlay.d.ts.map +1 -0
- package/lib/components/VideoNoteOverlay.js +151 -0
- package/lib/components/VideoNoteOverlay.js.map +1 -0
- package/lib/components/VideoNoteRecorder.d.ts +19 -0
- package/lib/components/VideoNoteRecorder.d.ts.map +1 -0
- package/lib/components/VideoNoteRecorder.js +634 -0
- package/lib/components/VideoNoteRecorder.js.map +1 -0
- package/lib/components/VideoRecordButton.d.ts +29 -0
- package/lib/components/VideoRecordButton.d.ts.map +1 -0
- package/lib/components/VideoRecordButton.js +117 -0
- package/lib/components/VideoRecordButton.js.map +1 -0
- package/lib/components/VoiceMessageInput.d.ts +33 -0
- package/lib/components/VoiceMessageInput.d.ts.map +1 -0
- package/lib/components/VoiceMessageInput.js +396 -0
- package/lib/components/VoiceMessageInput.js.map +1 -0
- package/lib/components/WaveformPlayer.d.ts +19 -0
- package/lib/components/WaveformPlayer.d.ts.map +1 -0
- package/lib/components/WaveformPlayer.js +367 -0
- package/lib/components/WaveformPlayer.js.map +1 -0
- package/lib/components/mediaPalette.d.ts +23 -0
- package/lib/components/mediaPalette.d.ts.map +1 -0
- package/lib/components/mediaPalette.js +16 -0
- package/lib/components/mediaPalette.js.map +1 -0
- package/lib/components/mediaPlayback.d.ts +22 -0
- package/lib/components/mediaPlayback.d.ts.map +1 -0
- package/lib/components/mediaPlayback.js +34 -0
- package/lib/components/mediaPlayback.js.map +1 -0
- package/lib/hooks/useColorScheme.d.ts +9 -2
- package/lib/hooks/useColorScheme.d.ts.map +1 -1
- package/lib/hooks/useColorScheme.js +9 -3
- package/lib/hooks/useColorScheme.js.map +1 -1
- package/lib/hooks/useHasKeyboardProvider.d.ts +19 -0
- package/lib/hooks/useHasKeyboardProvider.d.ts.map +1 -0
- package/lib/hooks/useHasKeyboardProvider.js +31 -0
- package/lib/hooks/useHasKeyboardProvider.js.map +1 -0
- package/lib/hooks/useIcons.d.ts +4 -0
- package/lib/hooks/useIcons.d.ts.map +1 -0
- package/lib/hooks/useIcons.js +8 -0
- package/lib/hooks/useIcons.js.map +1 -0
- package/lib/hooks/useIsKeyboardVisible.d.ts +12 -0
- package/lib/hooks/useIsKeyboardVisible.d.ts.map +1 -0
- package/lib/hooks/useIsKeyboardVisible.js +31 -0
- package/lib/hooks/useIsKeyboardVisible.js.map +1 -0
- package/lib/hooks/useKeyboardVerticalOffset.d.ts +28 -0
- package/lib/hooks/useKeyboardVerticalOffset.d.ts.map +1 -0
- package/lib/hooks/useKeyboardVerticalOffset.js +43 -0
- package/lib/hooks/useKeyboardVerticalOffset.js.map +1 -0
- package/lib/hooks/useLabels.d.ts +4 -0
- package/lib/hooks/useLabels.d.ts.map +1 -0
- package/lib/hooks/useLabels.js +8 -0
- package/lib/hooks/useLabels.js.map +1 -0
- package/lib/hooks/useTheme.d.ts +21 -0
- package/lib/hooks/useTheme.d.ts.map +1 -0
- package/lib/hooks/useTheme.js +32 -0
- package/lib/hooks/useTheme.js.map +1 -0
- package/lib/i18n.d.ts +59 -0
- package/lib/i18n.d.ts.map +1 -0
- package/lib/i18n.js +122 -0
- package/lib/i18n.js.map +1 -0
- package/lib/index.d.ts +17 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +17 -0
- package/lib/index.js.map +1 -1
- package/lib/types.d.ts +2 -1
- package/lib/types.d.ts.map +1 -1
- package/package.json +103 -41
- package/lib/MessageReply.d.ts +0 -15
- package/lib/MessageReply.d.ts.map +0 -1
- package/lib/MessageReply.js +0 -102
- package/lib/MessageReply.js.map +0 -1
- package/lib/ReplyPreview.d.ts +0 -14
- package/lib/ReplyPreview.d.ts.map +0 -1
- package/lib/ReplyPreview.js +0 -94
- package/lib/ReplyPreview.js.map +0 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a `KeyboardProvider` is already mounted above this component.
|
|
3
|
+
*
|
|
4
|
+
* Mounting a second one is not harmless. On Android every provider installs an
|
|
5
|
+
* `OnApplyWindowInsetsListener` on the *activity's* root view and rewrites the content
|
|
6
|
+
* view's margins from its own `statusBarTranslucent` / `navigationBarTranslucent` props,
|
|
7
|
+
* so a nested provider relayouts the whole host app - and it never restores the listener
|
|
8
|
+
* it replaced, leaving the app broken even after the chat screen is gone.
|
|
9
|
+
* See https://github.com/kesha-antonov/react-native-chat/issues/11
|
|
10
|
+
*
|
|
11
|
+
* Detection: with no provider above, `react-native-keyboard-controller` hands out a
|
|
12
|
+
* module-level fallback context. Two details give that fallback away, and neither can
|
|
13
|
+
* hold for a real provider (which creates one shared value per field): both fields point
|
|
14
|
+
* at the very same object, and that object is a hand-rolled stub rather than a Reanimated
|
|
15
|
+
* shared value. Requiring both keeps the failure mode safe - if either detail ever
|
|
16
|
+
* changes we simply mount our own provider, which is what we did before.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useHasKeyboardProvider(): boolean;
|
|
19
|
+
//# sourceMappingURL=useHasKeyboardProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHasKeyboardProvider.d.ts","sourceRoot":"","sources":["../../src/hooks/useHasKeyboardProvider.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,IAAK,OAAO,CAMjD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
import { KeyboardContext } from 'react-native-keyboard-controller';
|
|
3
|
+
// `react-native-keyboard-controller/jest` doesn't mock `KeyboardContext`, so fall back to
|
|
4
|
+
// an empty context to keep consumers' test suites running.
|
|
5
|
+
const Context = KeyboardContext ??
|
|
6
|
+
createContext(undefined);
|
|
7
|
+
const isReanimatedSharedValue = (value) => typeof value === 'object' && value !== null && '_isReanimatedSharedValue' in value;
|
|
8
|
+
/**
|
|
9
|
+
* Whether a `KeyboardProvider` is already mounted above this component.
|
|
10
|
+
*
|
|
11
|
+
* Mounting a second one is not harmless. On Android every provider installs an
|
|
12
|
+
* `OnApplyWindowInsetsListener` on the *activity's* root view and rewrites the content
|
|
13
|
+
* view's margins from its own `statusBarTranslucent` / `navigationBarTranslucent` props,
|
|
14
|
+
* so a nested provider relayouts the whole host app - and it never restores the listener
|
|
15
|
+
* it replaced, leaving the app broken even after the chat screen is gone.
|
|
16
|
+
* See https://github.com/kesha-antonov/react-native-chat/issues/11
|
|
17
|
+
*
|
|
18
|
+
* Detection: with no provider above, `react-native-keyboard-controller` hands out a
|
|
19
|
+
* module-level fallback context. Two details give that fallback away, and neither can
|
|
20
|
+
* hold for a real provider (which creates one shared value per field): both fields point
|
|
21
|
+
* at the very same object, and that object is a hand-rolled stub rather than a Reanimated
|
|
22
|
+
* shared value. Requiring both keeps the failure mode safe - if either detail ever
|
|
23
|
+
* changes we simply mount our own provider, which is what we did before.
|
|
24
|
+
*/
|
|
25
|
+
export function useHasKeyboardProvider() {
|
|
26
|
+
const context = useContext(Context);
|
|
27
|
+
const progress = context?.reanimated?.progress;
|
|
28
|
+
const height = context?.reanimated?.height;
|
|
29
|
+
return progress !== height && isReanimatedSharedValue(progress);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=useHasKeyboardProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHasKeyboardProvider.js","sourceRoot":"","sources":["../../src/hooks/useHasKeyboardProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAMlE,0FAA0F;AAC1F,2DAA2D;AAC3D,MAAM,OAAO,GACV,eAAmF;IACpF,aAAa,CAA4B,SAAS,CAAC,CAAA;AAErD,MAAM,uBAAuB,GAAG,CAAC,KAAc,EAAE,EAAE,CACjD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,0BAA0B,IAAI,KAAK,CAAA;AAEpF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;IACnC,MAAM,QAAQ,GAAG,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAA;IAC9C,MAAM,MAAM,GAAG,OAAO,EAAE,UAAU,EAAE,MAAM,CAAA;IAE1C,OAAO,QAAQ,KAAK,MAAM,IAAI,uBAAuB,CAAC,QAAQ,CAAC,CAAA;AACjE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIcons.d.ts","sourceRoot":"","sources":["../../src/hooks/useIcons.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAIpC,+EAA+E;AAC/E,wBAAgB,QAAQ,IAAK,SAAS,CAGrC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { useChatContext } from '../ChatContext';
|
|
2
|
+
const EMPTY = {};
|
|
3
|
+
/** Returns the icon override registry from context (empty outside of Chat). */
|
|
4
|
+
export function useIcons() {
|
|
5
|
+
const { getIcons } = useChatContext();
|
|
6
|
+
return getIcons?.() ?? EMPTY;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=useIcons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIcons.js","sourceRoot":"","sources":["../../src/hooks/useIcons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAG/C,MAAM,KAAK,GAAc,EAAE,CAAA;AAE3B,+EAA+E;AAC/E,MAAM,UAAU,QAAQ;IACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAA;IACrC,OAAO,QAAQ,EAAE,EAAE,IAAI,KAAK,CAAA;AAC9B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether the software keyboard is currently on screen.
|
|
3
|
+
*
|
|
4
|
+
* Tracks `keyboardWillShow` / `keyboardWillHide` rather than the `Did` events so layout
|
|
5
|
+
* reacts *with* the keyboard animation instead of a beat after it.
|
|
6
|
+
*
|
|
7
|
+
* `isEnabled` exists because this re-renders its consumer on every keyboard transition:
|
|
8
|
+
* pass `false` and no listener is registered at all, so features that don't need the
|
|
9
|
+
* keyboard state pay nothing for it.
|
|
10
|
+
*/
|
|
11
|
+
export declare function useIsKeyboardVisible(isEnabled?: boolean): boolean;
|
|
12
|
+
//# sourceMappingURL=useIsKeyboardVisible.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsKeyboardVisible.d.ts","sourceRoot":"","sources":["../../src/hooks/useIsKeyboardVisible.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAE,SAAS,GAAE,OAAc,GAAG,OAAO,CAwBxE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
import { KeyboardController, KeyboardEvents } from 'react-native-keyboard-controller';
|
|
3
|
+
/**
|
|
4
|
+
* Whether the software keyboard is currently on screen.
|
|
5
|
+
*
|
|
6
|
+
* Tracks `keyboardWillShow` / `keyboardWillHide` rather than the `Did` events so layout
|
|
7
|
+
* reacts *with* the keyboard animation instead of a beat after it.
|
|
8
|
+
*
|
|
9
|
+
* `isEnabled` exists because this re-renders its consumer on every keyboard transition:
|
|
10
|
+
* pass `false` and no listener is registered at all, so features that don't need the
|
|
11
|
+
* keyboard state pay nothing for it.
|
|
12
|
+
*/
|
|
13
|
+
export function useIsKeyboardVisible(isEnabled = true) {
|
|
14
|
+
const [isVisible, setIsVisible] = useState(() => isEnabled && (KeyboardController.isVisible?.() ?? false));
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (!isEnabled) {
|
|
17
|
+
setIsVisible(false);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// The keyboard may already be up when this turns on (e.g. the prop flipped while the
|
|
21
|
+
// composer was focused), and it can also change between render and subscribing.
|
|
22
|
+
setIsVisible(KeyboardController.isVisible?.() ?? false);
|
|
23
|
+
const subscriptions = [
|
|
24
|
+
KeyboardEvents.addListener('keyboardWillShow', () => setIsVisible(true)),
|
|
25
|
+
KeyboardEvents.addListener('keyboardWillHide', () => setIsVisible(false)),
|
|
26
|
+
];
|
|
27
|
+
return () => subscriptions.forEach(subscription => subscription.remove());
|
|
28
|
+
}, [isEnabled]);
|
|
29
|
+
return isVisible;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=useIsKeyboardVisible.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsKeyboardVisible.js","sourceRoot":"","sources":["../../src/hooks/useIsKeyboardVisible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAErF;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAE,YAAqB,IAAI;IAC7D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CACxC,GAAG,EAAE,CAAC,SAAS,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,IAAI,KAAK,CAAC,CAC/D,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,OAAM;QACR,CAAC;QAED,qFAAqF;QACrF,gFAAgF;QAChF,YAAY,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,IAAI,KAAK,CAAC,CAAA;QAEvD,MAAM,aAAa,GAAG;YACpB,cAAc,CAAC,WAAW,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxE,cAAc,CAAC,WAAW,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAC1E,CAAA;QAED,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;IAC3E,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { View } from 'react-native';
|
|
2
|
+
/**
|
|
3
|
+
* How far down the window the chat container starts - the value
|
|
4
|
+
* `KeyboardAvoidingView` needs to keep the input toolbar on top of the keyboard.
|
|
5
|
+
*
|
|
6
|
+
* It cannot come from insets: a navigation header draws above the chat and insets
|
|
7
|
+
* cannot see it, so `insets.top` (the old default) placed a chat below a header
|
|
8
|
+
* roughly a header-height too low, i.e. behind the keyboard.
|
|
9
|
+
* See https://github.com/kesha-antonov/react-native-chat/issues/11
|
|
10
|
+
*
|
|
11
|
+
* It cannot come from `useSafeAreaFrame()` alone either. That reads the nearest
|
|
12
|
+
* `SafeAreaProvider`, and react-native-safe-area-context (v5) seeds a nested
|
|
13
|
+
* provider from its *parent's* metrics - so when the host app already mounts one
|
|
14
|
+
* at the root (the documented setup, and what expo-router does), the provider
|
|
15
|
+
* `ChatWrapper` mounts reports the root frame and `y` stays 0 no matter where the
|
|
16
|
+
* chat actually sits. A chat under a navigation header then got offset 0 and its
|
|
17
|
+
* toolbar landed a header-height too low: back behind the keyboard.
|
|
18
|
+
*
|
|
19
|
+
* So the offset is measured from the chat container itself, in window
|
|
20
|
+
* coordinates, and the safe-area frame is kept only as the pre-measurement
|
|
21
|
+
* seed. Attach `onLayout`/`ref` to the view that wraps the chat.
|
|
22
|
+
*/
|
|
23
|
+
export declare function useKeyboardVerticalOffset(): {
|
|
24
|
+
ref: import("react").RefObject<View | null>;
|
|
25
|
+
onLayout: () => void;
|
|
26
|
+
keyboardVerticalOffset: number;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=useKeyboardVerticalOffset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useKeyboardVerticalOffset.d.ts","sourceRoot":"","sources":["../../src/hooks/useKeyboardVerticalOffset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAGnC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,yBAAyB;;;;EAoBxC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { useCallback, useRef, useState } from 'react';
|
|
2
|
+
import { useSafeAreaFrame } from 'react-native-safe-area-context';
|
|
3
|
+
/**
|
|
4
|
+
* How far down the window the chat container starts - the value
|
|
5
|
+
* `KeyboardAvoidingView` needs to keep the input toolbar on top of the keyboard.
|
|
6
|
+
*
|
|
7
|
+
* It cannot come from insets: a navigation header draws above the chat and insets
|
|
8
|
+
* cannot see it, so `insets.top` (the old default) placed a chat below a header
|
|
9
|
+
* roughly a header-height too low, i.e. behind the keyboard.
|
|
10
|
+
* See https://github.com/kesha-antonov/react-native-chat/issues/11
|
|
11
|
+
*
|
|
12
|
+
* It cannot come from `useSafeAreaFrame()` alone either. That reads the nearest
|
|
13
|
+
* `SafeAreaProvider`, and react-native-safe-area-context (v5) seeds a nested
|
|
14
|
+
* provider from its *parent's* metrics - so when the host app already mounts one
|
|
15
|
+
* at the root (the documented setup, and what expo-router does), the provider
|
|
16
|
+
* `ChatWrapper` mounts reports the root frame and `y` stays 0 no matter where the
|
|
17
|
+
* chat actually sits. A chat under a navigation header then got offset 0 and its
|
|
18
|
+
* toolbar landed a header-height too low: back behind the keyboard.
|
|
19
|
+
*
|
|
20
|
+
* So the offset is measured from the chat container itself, in window
|
|
21
|
+
* coordinates, and the safe-area frame is kept only as the pre-measurement
|
|
22
|
+
* seed. Attach `onLayout`/`ref` to the view that wraps the chat.
|
|
23
|
+
*/
|
|
24
|
+
export function useKeyboardVerticalOffset() {
|
|
25
|
+
const frameY = useSafeAreaFrame().y;
|
|
26
|
+
const ref = useRef(null);
|
|
27
|
+
const [measured, setMeasured] = useState(null);
|
|
28
|
+
const onLayout = useCallback(() => {
|
|
29
|
+
// measureInWindow, not the layout event: the event reports the position
|
|
30
|
+
// within the parent, which is 0 for a fill view and tells us nothing about
|
|
31
|
+
// where the chat sits on screen.
|
|
32
|
+
ref.current?.measureInWindow((_x, y) => {
|
|
33
|
+
if (Number.isFinite(y))
|
|
34
|
+
setMeasured(previous => (previous === y ? previous : y));
|
|
35
|
+
});
|
|
36
|
+
}, []);
|
|
37
|
+
return {
|
|
38
|
+
ref,
|
|
39
|
+
onLayout,
|
|
40
|
+
keyboardVerticalOffset: measured ?? frameY,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=useKeyboardVerticalOffset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useKeyboardVerticalOffset.js","sourceRoot":"","sources":["../../src/hooks/useKeyboardVerticalOffset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEjE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAA;IACnC,MAAM,GAAG,GAAG,MAAM,CAAO,IAAI,CAAC,CAAA;IAC9B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAE7D,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,wEAAwE;QACxE,2EAA2E;QAC3E,iCAAiC;QACjC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpB,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO;QACL,GAAG;QACH,QAAQ;QACR,sBAAsB,EAAE,QAAQ,IAAI,MAAM;KAC3C,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLabels.d.ts","sourceRoot":"","sources":["../../src/hooks/useLabels.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAiB,MAAM,SAAS,CAAA;AAEnD,gFAAgF;AAChF,wBAAgB,SAAS,IAAK,UAAU,CAGvC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { useChatContext } from '../ChatContext';
|
|
2
|
+
import { defaultLabels } from '../i18n';
|
|
3
|
+
/** Returns the resolved UI labels (English defaults when used outside Chat). */
|
|
4
|
+
export function useLabels() {
|
|
5
|
+
const { getLabels } = useChatContext();
|
|
6
|
+
return getLabels?.() ?? defaultLabels;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=useLabels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLabels.js","sourceRoot":"","sources":["../../src/hooks/useLabels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAc,aAAa,EAAE,MAAM,SAAS,CAAA;AAEnD,gFAAgF;AAChF,MAAM,UAAU,SAAS;IACvB,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAA;IACtC,OAAO,SAAS,EAAE,EAAE,IAAI,aAAa,CAAA;AACvC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ChatTheme } from '../Theme';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the active {@link ChatTheme}. Inside `Chat` this is the resolved theme
|
|
4
|
+
* shared through context (defaults merged with `theme` / `darkTheme` overrides),
|
|
5
|
+
* so switching the theme prop or the system color scheme at runtime updates
|
|
6
|
+
* every consumer. Used standalone (outside `Chat`), it falls back to the
|
|
7
|
+
* built-in defaults for the current system color scheme.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useTheme(): ChatTheme;
|
|
10
|
+
/**
|
|
11
|
+
* DRY helper for theme-aware StyleSheets. Pass a module-level factory that maps
|
|
12
|
+
* a theme to a `StyleSheet.create(...)` result; the styles are memoized on the
|
|
13
|
+
* theme, so they are rebuilt only when the theme actually changes.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* const createStyles = (theme: ChatTheme) => StyleSheet.create({ ... })
|
|
17
|
+
* // inside a component:
|
|
18
|
+
* const styles = useThemedStyles(createStyles)
|
|
19
|
+
*/
|
|
20
|
+
export declare function useThemedStyles<T>(factory: (theme: ChatTheme) => T): T;
|
|
21
|
+
//# sourceMappingURL=useTheme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/hooks/useTheme.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAuC,MAAM,UAAU,CAAA;AAGzE;;;;;;GAMG;AACH,wBAAgB,QAAQ,IAAK,SAAS,CASrC;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAG,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC,CAGvE"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { useChatContext } from '../ChatContext';
|
|
3
|
+
import { defaultDarkTheme, defaultLightTheme } from '../Theme';
|
|
4
|
+
import { useColorScheme } from './useColorScheme';
|
|
5
|
+
/**
|
|
6
|
+
* Returns the active {@link ChatTheme}. Inside `Chat` this is the resolved theme
|
|
7
|
+
* shared through context (defaults merged with `theme` / `darkTheme` overrides),
|
|
8
|
+
* so switching the theme prop or the system color scheme at runtime updates
|
|
9
|
+
* every consumer. Used standalone (outside `Chat`), it falls back to the
|
|
10
|
+
* built-in defaults for the current system color scheme.
|
|
11
|
+
*/
|
|
12
|
+
export function useTheme() {
|
|
13
|
+
const colorScheme = useColorScheme();
|
|
14
|
+
const { getTheme } = useChatContext();
|
|
15
|
+
const contextTheme = getTheme?.();
|
|
16
|
+
return useMemo(() => contextTheme ?? (colorScheme === 'dark' ? defaultDarkTheme : defaultLightTheme), [contextTheme, colorScheme]);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* DRY helper for theme-aware StyleSheets. Pass a module-level factory that maps
|
|
20
|
+
* a theme to a `StyleSheet.create(...)` result; the styles are memoized on the
|
|
21
|
+
* theme, so they are rebuilt only when the theme actually changes.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* const createStyles = (theme: ChatTheme) => StyleSheet.create({ ... })
|
|
25
|
+
* // inside a component:
|
|
26
|
+
* const styles = useThemedStyles(createStyles)
|
|
27
|
+
*/
|
|
28
|
+
export function useThemedStyles(factory) {
|
|
29
|
+
const theme = useTheme();
|
|
30
|
+
return useMemo(() => factory(theme), [factory, theme]);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=useTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTheme.js","sourceRoot":"","sources":["../../src/hooks/useTheme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAa,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ;IACtB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IACpC,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAA;IACrC,MAAM,YAAY,GAAG,QAAQ,EAAE,EAAE,CAAA;IAEjC,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,YAAY,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,EACrF,CAAC,YAAY,EAAE,WAAW,CAAC,CAC5B,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAK,OAAgC;IAClE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;AACxD,CAAC"}
|
package/lib/i18n.d.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI string localization for the chat. Date/time localization is handled
|
|
3
|
+
* separately by Day.js via the `locale` prop; this covers the static UI labels
|
|
4
|
+
* (composer placeholder, buttons, recording hint, media/location labels, etc.).
|
|
5
|
+
*
|
|
6
|
+
* Provide overrides through the `labels` prop on `Chat`, or rely on the built-in
|
|
7
|
+
* translations selected by the `locale` prop. Labels resolve as:
|
|
8
|
+
* labels (prop) > translations[locale] > defaultLabels (English)
|
|
9
|
+
*/
|
|
10
|
+
export interface ChatLabels {
|
|
11
|
+
/** Composer placeholder. */
|
|
12
|
+
placeholder: string;
|
|
13
|
+
/** Send button / quick-reply send label. */
|
|
14
|
+
send: string;
|
|
15
|
+
/** Cancel row in the attachment sheet. */
|
|
16
|
+
cancel: string;
|
|
17
|
+
/** "Load earlier messages" button. */
|
|
18
|
+
loadEarlier: string;
|
|
19
|
+
/** Day separator label for today's date. */
|
|
20
|
+
today: string;
|
|
21
|
+
/** Video message fallback label. */
|
|
22
|
+
video: string;
|
|
23
|
+
/** Voice/audio message fallback label. */
|
|
24
|
+
voiceMessage: string;
|
|
25
|
+
videoMessage: string;
|
|
26
|
+
/** Location message title. */
|
|
27
|
+
location: string;
|
|
28
|
+
/** Accessibility label for the location card. */
|
|
29
|
+
openLocationAccessibility: string;
|
|
30
|
+
/** Voice recording slide-to-cancel hint. */
|
|
31
|
+
slideToCancel: string;
|
|
32
|
+
/** Reply banner title; `{name}` is replaced with the author's name. */
|
|
33
|
+
replyingTo: string;
|
|
34
|
+
/** Edit banner title. */
|
|
35
|
+
editing: string;
|
|
36
|
+
/** Shown in the video recorder when camera permission is missing. */
|
|
37
|
+
cameraPermission: string;
|
|
38
|
+
/** Shown in the video recorder when no camera device is found. */
|
|
39
|
+
noCamera: string;
|
|
40
|
+
/** Hint under the video recorder's shutter while a take is running. */
|
|
41
|
+
stopAndSend: string;
|
|
42
|
+
/** Hint under the video recorder's shutter before recording starts. */
|
|
43
|
+
tapToRecord: string;
|
|
44
|
+
/** Hint while holding the video shutter. */
|
|
45
|
+
releaseToSend: string;
|
|
46
|
+
/** Idle hint for the hold-to-record video shutter. */
|
|
47
|
+
holdToRecord: string;
|
|
48
|
+
}
|
|
49
|
+
export declare const defaultLabels: ChatLabels;
|
|
50
|
+
/** Built-in translations (a starter set). Each is merged over English. */
|
|
51
|
+
export declare const translations: Record<string, Partial<ChatLabels>>;
|
|
52
|
+
/**
|
|
53
|
+
* Resolve the active labels: the `labels` override on top of the built-in
|
|
54
|
+
* translation for `locale` (if any) on top of English defaults.
|
|
55
|
+
*/
|
|
56
|
+
export declare function resolveLabels(locale?: string, labels?: Partial<ChatLabels>): ChatLabels;
|
|
57
|
+
/** Interpolate `{name}`-style placeholders in a label. */
|
|
58
|
+
export declare function formatLabel(label: string, values: Record<string, string | number>): string;
|
|
59
|
+
//# sourceMappingURL=i18n.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAA;IACZ,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,iDAAiD;IACjD,yBAAyB,EAAE,MAAM,CAAA;IACjC,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAA;IAClB,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAA;IACxB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAA;IAChB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAA;IACnB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAA;IACrB,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,UAoB3B,CAAA;AAED,0EAA0E;AAC1E,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAqF5D,CAAA;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAC3B,UAAU,CAIZ;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAE3F"}
|
package/lib/i18n.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
export const defaultLabels = {
|
|
2
|
+
placeholder: 'Type a message...',
|
|
3
|
+
send: 'Send',
|
|
4
|
+
cancel: 'Cancel',
|
|
5
|
+
loadEarlier: 'Load earlier messages',
|
|
6
|
+
today: 'Today',
|
|
7
|
+
video: 'Video',
|
|
8
|
+
voiceMessage: 'Voice message',
|
|
9
|
+
videoMessage: 'Video message',
|
|
10
|
+
location: 'Location',
|
|
11
|
+
openLocationAccessibility: 'Open location in maps',
|
|
12
|
+
slideToCancel: 'Slide left to cancel...',
|
|
13
|
+
replyingTo: 'Replying to {name}',
|
|
14
|
+
editing: 'Editing',
|
|
15
|
+
cameraPermission: 'Camera permission needed',
|
|
16
|
+
noCamera: 'No camera available',
|
|
17
|
+
stopAndSend: 'Tap to stop and send',
|
|
18
|
+
tapToRecord: 'Tap to record',
|
|
19
|
+
releaseToSend: 'Release to send, slide up to lock',
|
|
20
|
+
holdToRecord: 'Hold to record',
|
|
21
|
+
};
|
|
22
|
+
/** Built-in translations (a starter set). Each is merged over English. */
|
|
23
|
+
export const translations = {
|
|
24
|
+
es: {
|
|
25
|
+
placeholder: 'Escribe un mensaje...',
|
|
26
|
+
send: 'Enviar',
|
|
27
|
+
cancel: 'Cancelar',
|
|
28
|
+
loadEarlier: 'Cargar mensajes anteriores',
|
|
29
|
+
today: 'Hoy',
|
|
30
|
+
video: 'Video',
|
|
31
|
+
voiceMessage: 'Mensaje de voz',
|
|
32
|
+
videoMessage: 'Mensaje de video',
|
|
33
|
+
location: 'Ubicacion',
|
|
34
|
+
openLocationAccessibility: 'Abrir ubicacion en mapas',
|
|
35
|
+
slideToCancel: 'desliza para cancelar',
|
|
36
|
+
replyingTo: 'Respondiendo a {name}',
|
|
37
|
+
editing: 'Editando',
|
|
38
|
+
cameraPermission: 'Se necesita permiso de camara',
|
|
39
|
+
noCamera: 'No hay camara disponible',
|
|
40
|
+
stopAndSend: 'Toca para detener y enviar',
|
|
41
|
+
tapToRecord: 'Toca para grabar',
|
|
42
|
+
releaseToSend: 'Suelta para enviar, desliza arriba para bloquear',
|
|
43
|
+
holdToRecord: 'Manten pulsado para grabar',
|
|
44
|
+
},
|
|
45
|
+
fr: {
|
|
46
|
+
placeholder: 'Ecrire un message...',
|
|
47
|
+
send: 'Envoyer',
|
|
48
|
+
cancel: 'Annuler',
|
|
49
|
+
loadEarlier: 'Charger les messages precedents',
|
|
50
|
+
today: 'Aujourd\'hui',
|
|
51
|
+
video: 'Video',
|
|
52
|
+
voiceMessage: 'Message vocal',
|
|
53
|
+
videoMessage: 'Message vidéo',
|
|
54
|
+
location: 'Position',
|
|
55
|
+
openLocationAccessibility: 'Ouvrir la position dans les cartes',
|
|
56
|
+
slideToCancel: 'glisser pour annuler',
|
|
57
|
+
replyingTo: 'Reponse a {name}',
|
|
58
|
+
editing: 'Modification',
|
|
59
|
+
cameraPermission: 'Autorisation de la camera requise',
|
|
60
|
+
noCamera: 'Aucune camera disponible',
|
|
61
|
+
stopAndSend: 'Appuyez pour arreter et envoyer',
|
|
62
|
+
tapToRecord: 'Appuyez pour enregistrer',
|
|
63
|
+
releaseToSend: 'Relachez pour envoyer, glissez vers le haut pour verrouiller',
|
|
64
|
+
holdToRecord: 'Maintenez pour enregistrer',
|
|
65
|
+
},
|
|
66
|
+
de: {
|
|
67
|
+
placeholder: 'Nachricht schreiben...',
|
|
68
|
+
send: 'Senden',
|
|
69
|
+
cancel: 'Abbrechen',
|
|
70
|
+
loadEarlier: 'Fruhere Nachrichten laden',
|
|
71
|
+
today: 'Heute',
|
|
72
|
+
video: 'Video',
|
|
73
|
+
voiceMessage: 'Sprachnachricht',
|
|
74
|
+
videoMessage: 'Videonachricht',
|
|
75
|
+
location: 'Standort',
|
|
76
|
+
openLocationAccessibility: 'Standort in Karten offnen',
|
|
77
|
+
slideToCancel: 'zum Abbrechen wischen',
|
|
78
|
+
replyingTo: 'Antwort an {name}',
|
|
79
|
+
editing: 'Bearbeiten',
|
|
80
|
+
cameraPermission: 'Kameraberechtigung erforderlich',
|
|
81
|
+
noCamera: 'Keine Kamera verfugbar',
|
|
82
|
+
stopAndSend: 'Tippen zum Beenden und Senden',
|
|
83
|
+
tapToRecord: 'Zum Aufnehmen tippen',
|
|
84
|
+
releaseToSend: 'Loslassen zum Senden, nach oben wischen zum Sperren',
|
|
85
|
+
holdToRecord: 'Zum Aufnehmen gedruckt halten',
|
|
86
|
+
},
|
|
87
|
+
ru: {
|
|
88
|
+
placeholder: 'Введите сообщение...',
|
|
89
|
+
send: 'Отправить',
|
|
90
|
+
cancel: 'Отмена',
|
|
91
|
+
loadEarlier: 'Загрузить предыдущие сообщения',
|
|
92
|
+
today: 'Сегодня',
|
|
93
|
+
video: 'Видео',
|
|
94
|
+
voiceMessage: 'Голосовое сообщение',
|
|
95
|
+
videoMessage: 'Видеосообщение',
|
|
96
|
+
location: 'Местоположение',
|
|
97
|
+
openLocationAccessibility: 'Открыть местоположение на картах',
|
|
98
|
+
slideToCancel: 'смахните для отмены',
|
|
99
|
+
replyingTo: 'Ответ {name}',
|
|
100
|
+
editing: 'Редактирование',
|
|
101
|
+
cameraPermission: 'Требуется доступ к камере',
|
|
102
|
+
noCamera: 'Камера недоступна',
|
|
103
|
+
stopAndSend: 'Нажмите, чтобы остановить и отправить',
|
|
104
|
+
tapToRecord: 'Нажмите, чтобы записать',
|
|
105
|
+
releaseToSend: 'Отпустите, чтобы отправить, вверх - закрепить',
|
|
106
|
+
holdToRecord: 'Удерживайте для записи',
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Resolve the active labels: the `labels` override on top of the built-in
|
|
111
|
+
* translation for `locale` (if any) on top of English defaults.
|
|
112
|
+
*/
|
|
113
|
+
export function resolveLabels(locale, labels) {
|
|
114
|
+
const localeKey = locale?.split('-')[0]?.toLowerCase();
|
|
115
|
+
const translated = localeKey ? translations[localeKey] : undefined;
|
|
116
|
+
return { ...defaultLabels, ...translated, ...labels };
|
|
117
|
+
}
|
|
118
|
+
/** Interpolate `{name}`-style placeholders in a label. */
|
|
119
|
+
export function formatLabel(label, values) {
|
|
120
|
+
return label.replace(/\{(\w+)\}/g, (_match, key) => String(values[key] ?? ''));
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=i18n.js.map
|
package/lib/i18n.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -8,6 +8,9 @@ export * from './linkParser';
|
|
|
8
8
|
export * from './Reply';
|
|
9
9
|
export * from './Reactions';
|
|
10
10
|
export * from './styles';
|
|
11
|
+
export * from './Theme';
|
|
12
|
+
export * from './Icons';
|
|
13
|
+
export * from './i18n';
|
|
11
14
|
export { Color } from './Color';
|
|
12
15
|
export { Actions } from './Actions';
|
|
13
16
|
export { Avatar } from './Avatar';
|
|
@@ -15,6 +18,16 @@ export { Bubble } from './Bubble';
|
|
|
15
18
|
export { SystemMessage } from './SystemMessage';
|
|
16
19
|
export { MessageImage } from './MessageImage';
|
|
17
20
|
export { MessageText } from './MessageText';
|
|
21
|
+
export { MessageLocation } from './MessageLocation';
|
|
22
|
+
export { MediaCard } from './components/MediaCard';
|
|
23
|
+
export { AttachmentSheet } from './components/AttachmentSheet';
|
|
24
|
+
export { ContextMenu } from './components/ContextMenu';
|
|
25
|
+
export { MarkdownMessageText, isMarkdownAvailable } from './components/MarkdownMessageText';
|
|
26
|
+
export { BasicMarkdown } from './components/BasicMarkdown';
|
|
27
|
+
export { WaveformPlayer, isWaveformAvailable } from './components/WaveformPlayer';
|
|
28
|
+
export { VoiceMessageInput, isVoiceRecordingAvailable } from './components/VoiceMessageInput';
|
|
29
|
+
export { VideoRecordButton, isVideoRecordingAvailable } from './components/VideoRecordButton';
|
|
30
|
+
export { VideoNoteRecorder, isVisionCameraAvailable } from './components/VideoNoteRecorder';
|
|
18
31
|
export { Composer } from './Composer';
|
|
19
32
|
export { Day } from './Day';
|
|
20
33
|
export { InputToolbar } from './InputToolbar';
|
|
@@ -30,6 +43,10 @@ export { MessageReply } from './components/MessageReply';
|
|
|
30
43
|
export { ReplyPreview } from './components/ReplyPreview';
|
|
31
44
|
export { StreamingCursor } from './components/StreamingCursor';
|
|
32
45
|
export { useColorScheme } from './hooks/useColorScheme';
|
|
46
|
+
export { useTheme, useThemedStyles } from './hooks/useTheme';
|
|
47
|
+
export { useIcons } from './hooks/useIcons';
|
|
48
|
+
export { useLabels } from './hooks/useLabels';
|
|
49
|
+
export { Icon } from './components/Icon';
|
|
33
50
|
export { useStreamingMessages } from './hooks/useStreamingMessages';
|
|
34
51
|
export type { UseStreamingMessagesOptions, UseStreamingMessagesResult, StreamHandle } from './hooks/useStreamingMessages';
|
|
35
52
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAEhC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,YAAY,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,YAAY,EACb,MAAM,8BAA8B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -8,6 +8,9 @@ export * from './linkParser';
|
|
|
8
8
|
export * from './Reply';
|
|
9
9
|
export * from './Reactions';
|
|
10
10
|
export * from './styles';
|
|
11
|
+
export * from './Theme';
|
|
12
|
+
export * from './Icons';
|
|
13
|
+
export * from './i18n';
|
|
11
14
|
export { Color } from './Color';
|
|
12
15
|
export { Actions } from './Actions';
|
|
13
16
|
export { Avatar } from './Avatar';
|
|
@@ -15,6 +18,16 @@ export { Bubble } from './Bubble';
|
|
|
15
18
|
export { SystemMessage } from './SystemMessage';
|
|
16
19
|
export { MessageImage } from './MessageImage';
|
|
17
20
|
export { MessageText } from './MessageText';
|
|
21
|
+
export { MessageLocation } from './MessageLocation';
|
|
22
|
+
export { MediaCard } from './components/MediaCard';
|
|
23
|
+
export { AttachmentSheet } from './components/AttachmentSheet';
|
|
24
|
+
export { ContextMenu } from './components/ContextMenu';
|
|
25
|
+
export { MarkdownMessageText, isMarkdownAvailable } from './components/MarkdownMessageText';
|
|
26
|
+
export { BasicMarkdown } from './components/BasicMarkdown';
|
|
27
|
+
export { WaveformPlayer, isWaveformAvailable } from './components/WaveformPlayer';
|
|
28
|
+
export { VoiceMessageInput, isVoiceRecordingAvailable } from './components/VoiceMessageInput';
|
|
29
|
+
export { VideoRecordButton, isVideoRecordingAvailable } from './components/VideoRecordButton';
|
|
30
|
+
export { VideoNoteRecorder, isVisionCameraAvailable } from './components/VideoNoteRecorder';
|
|
18
31
|
export { Composer } from './Composer';
|
|
19
32
|
export { Day } from './Day';
|
|
20
33
|
export { InputToolbar } from './InputToolbar';
|
|
@@ -30,5 +43,9 @@ export { MessageReply } from './components/MessageReply';
|
|
|
30
43
|
export { ReplyPreview } from './components/ReplyPreview';
|
|
31
44
|
export { StreamingCursor } from './components/StreamingCursor';
|
|
32
45
|
export { useColorScheme } from './hooks/useColorScheme';
|
|
46
|
+
export { useTheme, useThemedStyles } from './hooks/useTheme';
|
|
47
|
+
export { useIcons } from './hooks/useIcons';
|
|
48
|
+
export { useLabels } from './hooks/useLabels';
|
|
49
|
+
export { Icon } from './components/Icon';
|
|
33
50
|
export { useStreamingMessages } from './hooks/useStreamingMessages';
|
|
34
51
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAEhC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAEhC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjF,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAC3F,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA"}
|
package/lib/types.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export * from './Models';
|
|
2
2
|
export type { ActionsProps } from './Actions';
|
|
3
3
|
export type { AvatarProps } from './Avatar';
|
|
4
|
-
export type { BubbleProps, RenderMessageImageProps, RenderMessageVideoProps, RenderMessageAudioProps, RenderMessageTextProps } from './Bubble';
|
|
4
|
+
export type { BubbleProps, RenderMessageImageProps, RenderMessageVideoProps, RenderMessageAudioProps, RenderMessageLocationProps, RenderMessageTextProps } from './Bubble';
|
|
5
5
|
export type { ComposerProps } from './Composer';
|
|
6
|
+
export type { AttachmentAction, AttachmentSheetProps } from './components/AttachmentSheet';
|
|
6
7
|
export type { DayProps } from './Day';
|
|
7
8
|
export type { ChatAvatarProps } from './ChatAvatar';
|
|
8
9
|
export type { InputToolbarProps, ReplyPreviewProps } from './InputToolbar';
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AAExB,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,YAAY,EACV,WAAW,EACX,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrC,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAC1E,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACjE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACvC,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AAExB,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,YAAY,EACV,WAAW,EACX,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAC1F,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrC,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAC1E,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACjE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACvC,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA"}
|