react-native-gifted-chat 2.8.2-alpha.6 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +190 -269
  2. package/package.json +2 -1
  3. package/src/Actions.tsx +1 -1
  4. package/src/Avatar.tsx +12 -12
  5. package/src/Bubble/index.tsx +14 -16
  6. package/src/Bubble/styles.ts +1 -1
  7. package/src/Bubble/types.ts +26 -27
  8. package/src/Color.ts +1 -1
  9. package/src/Composer.tsx +1 -4
  10. package/src/Day/styles.ts +1 -1
  11. package/src/GiftedAvatar.tsx +2 -2
  12. package/src/GiftedChat/index.tsx +26 -61
  13. package/src/GiftedChat/types.ts +40 -49
  14. package/src/InputToolbar.tsx +28 -19
  15. package/src/LoadEarlierMessages.tsx +1 -1
  16. package/src/Message/index.tsx +11 -14
  17. package/src/Message/types.ts +8 -12
  18. package/src/MessageAudio.tsx +1 -1
  19. package/src/MessageContainer/components/DayAnimated/index.tsx +1 -3
  20. package/src/MessageContainer/components/DayAnimated/types.ts +1 -1
  21. package/src/MessageContainer/components/Item/index.tsx +9 -11
  22. package/src/MessageContainer/components/Item/types.ts +1 -1
  23. package/src/MessageContainer/index.tsx +32 -36
  24. package/src/MessageContainer/styles.ts +1 -1
  25. package/src/MessageContainer/types.ts +12 -16
  26. package/src/MessageImage.tsx +1 -1
  27. package/src/MessageText.tsx +1 -1
  28. package/src/MessageVideo.tsx +1 -1
  29. package/src/Models.ts +63 -0
  30. package/src/QuickReplies.tsx +2 -2
  31. package/src/Send.tsx +31 -32
  32. package/src/SystemMessage.tsx +2 -2
  33. package/src/Time.tsx +6 -6
  34. package/src/TypingIndicator/index.tsx +1 -3
  35. package/src/TypingIndicator/styles.ts +1 -1
  36. package/src/__tests__/Actions.test.tsx +1 -1
  37. package/src/__tests__/Avatar.test.tsx +7 -2
  38. package/src/__tests__/Bubble.test.tsx +3 -7
  39. package/src/__tests__/Color.test.tsx +1 -1
  40. package/src/__tests__/Composer.test.tsx +1 -1
  41. package/src/__tests__/Day.test.tsx +3 -3
  42. package/src/__tests__/DayAnimated.test.tsx +5 -11
  43. package/src/__tests__/GiftedAvatar.test.tsx +1 -1
  44. package/src/__tests__/GiftedChat.test.tsx +1 -1
  45. package/src/__tests__/InputToolbar.test.tsx +1 -1
  46. package/src/__tests__/LoadEarlier.test.tsx +2 -2
  47. package/src/__tests__/Message.test.tsx +7 -13
  48. package/src/__tests__/MessageContainer.test.tsx +4 -4
  49. package/src/__tests__/MessageImage.test.tsx +2 -2
  50. package/src/__tests__/MessageText.test.tsx +3 -2
  51. package/src/__tests__/Send.test.tsx +2 -2
  52. package/src/__tests__/SystemMessage.test.tsx +1 -1
  53. package/src/__tests__/Time.test.tsx +1 -1
  54. package/src/__tests__/__snapshots__/Actions.test.tsx.snap +2 -86
  55. package/src/__tests__/__snapshots__/Bubble.test.tsx.snap +1 -1
  56. package/src/__tests__/__snapshots__/Day.test.tsx.snap +96 -2
  57. package/src/__tests__/__snapshots__/InputToolbar.test.tsx.snap +1 -1
  58. package/src/__tests__/__snapshots__/LoadEarlier.test.tsx.snap +3 -89
  59. package/src/__tests__/__snapshots__/Message.test.tsx.snap +43 -4
  60. package/src/__tests__/__snapshots__/MessageText.test.tsx.snap +1 -1
  61. package/src/__tests__/__snapshots__/Send.test.tsx.snap +10 -142
  62. package/src/__tests__/data.ts +2 -2
  63. package/src/components/TouchableOpacity.tsx +19 -8
  64. package/src/index.ts +19 -1
  65. package/src/types.ts +1 -63
  66. package/src/utils.ts +23 -2
package/src/index.ts CHANGED
@@ -1,4 +1,22 @@
1
1
  export * from './GiftedChat'
2
2
  export * from './Constant'
3
- export * from './utils'
3
+ export * as utils from './utils'
4
4
  export * from './GiftedChatContext'
5
+ export * from './types'
6
+ export { Actions } from './Actions'
7
+ export { Avatar } from './Avatar'
8
+ export { Bubble } from './Bubble'
9
+ export { SystemMessage } from './SystemMessage'
10
+ export { MessageImage } from './MessageImage'
11
+ export { MessageText } from './MessageText'
12
+ export { Composer } from './Composer'
13
+ export { Day } from './Day'
14
+ export { InputToolbar } from './InputToolbar'
15
+ export { LoadEarlierMessages } from './LoadEarlierMessages'
16
+ export { Message } from './Message'
17
+ export { MessageContainer } from './MessageContainer'
18
+ export { Send } from './Send'
19
+ export { Time } from './Time'
20
+ export { GiftedAvatar } from './GiftedAvatar'
21
+ export { MessageAudio } from './MessageAudio'
22
+ export { MessageVideo } from './MessageVideo'
package/src/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { StyleProp, ViewStyle } from 'react-native'
1
+ export * from './Models'
2
2
 
3
3
  export { ActionsProps } from './Actions'
4
4
  export { AvatarProps } from './Avatar'
@@ -22,65 +22,3 @@ export { QuickRepliesProps } from './QuickReplies'
22
22
  export { SendProps } from './Send'
23
23
  export { SystemMessageProps } from './SystemMessage'
24
24
  export { TimeProps } from './Time'
25
-
26
- export type Omit<T, K> = Pick<T, Exclude<keyof T, K>>
27
-
28
- export interface LeftRightStyle<T> {
29
- left?: StyleProp<T>
30
- right?: StyleProp<T>
31
- }
32
-
33
- type renderFunction = (x: unknown) => React.ReactNode
34
-
35
- export interface User {
36
- _id: string | number
37
- name?: string
38
- avatar?: string | number | renderFunction
39
- }
40
-
41
- export interface Reply {
42
- title: string
43
- value: string
44
- messageId?: number | string
45
- }
46
-
47
- export interface QuickReplies {
48
- type: 'radio' | 'checkbox'
49
- values: Reply[]
50
- keepIt?: boolean
51
- }
52
-
53
- export interface IMessage {
54
- _id: string | number
55
- text: string
56
- createdAt: Date | number
57
- user: User
58
- image?: string
59
- video?: string
60
- audio?: string
61
- system?: boolean
62
- sent?: boolean
63
- received?: boolean
64
- pending?: boolean
65
- quickReplies?: QuickReplies
66
- location?: {
67
- latitude: number
68
- longitude: number
69
- }
70
- }
71
-
72
- export type IChatMessage = IMessage
73
-
74
- export interface MessageVideoProps<TMessage extends IMessage> {
75
- currentMessage: TMessage
76
- containerStyle?: StyleProp<ViewStyle>
77
- videoStyle?: StyleProp<ViewStyle>
78
- videoProps?: object
79
- }
80
-
81
- export interface MessageAudioProps<TMessage extends IMessage> {
82
- currentMessage: TMessage
83
- containerStyle?: StyleProp<ViewStyle>
84
- audioStyle?: StyleProp<ViewStyle>
85
- audioProps?: object
86
- }
package/src/utils.ts CHANGED
@@ -1,6 +1,27 @@
1
- import { useCallback, useEffect, useRef } from 'react'
1
+ import React, { useCallback, useEffect, useRef } from 'react'
2
2
  import dayjs from 'dayjs'
3
- import { IMessage } from './types'
3
+ import { IMessage } from './Models'
4
+
5
+ export function renderComponentOrElement<TProps extends Record<string, any>>(
6
+ component: React.ComponentType<TProps> | React.ReactElement | ((props: TProps) => React.ReactNode) | null | undefined,
7
+ props: TProps
8
+ ): React.ReactNode {
9
+ if (!component)
10
+ return null
11
+
12
+ if (React.isValidElement(component))
13
+ // If it's already a React element, clone it with props
14
+ return React.cloneElement(component, props as any)
15
+
16
+ if (typeof component === 'function') {
17
+ // If it's a component or render function
18
+ const Component = component as React.ComponentType<TProps>
19
+ return React.createElement(Component, props as any)
20
+ }
21
+
22
+ // If it's neither, return it as-is
23
+ return component
24
+ }
4
25
 
5
26
  export function isSameDay (
6
27
  currentMessage: IMessage,