stream-chat-react-native-core 5.23.1 → 5.23.2-beta.2

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 (59) hide show
  1. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +94 -93
  2. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  3. package/lib/commonjs/components/Channel/Channel.js +33 -32
  4. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  5. package/lib/commonjs/components/MessageInput/MessageInput.js +30 -37
  6. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  7. package/lib/commonjs/components/MessageList/MessageList.js +41 -43
  8. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  9. package/lib/commonjs/components/MessageList/hooks/useMessageList.js +1 -2
  10. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  11. package/lib/commonjs/i18n/en.json +1 -1
  12. package/lib/commonjs/i18n/fr.json +50 -50
  13. package/lib/commonjs/i18n/hi.json +50 -50
  14. package/lib/commonjs/i18n/it.json +50 -50
  15. package/lib/commonjs/i18n/nl.json +50 -50
  16. package/lib/commonjs/i18n/ru.json +50 -50
  17. package/lib/commonjs/i18n/tr.json +50 -50
  18. package/lib/commonjs/version.json +1 -1
  19. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +94 -93
  20. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  21. package/lib/module/components/Channel/Channel.js +33 -32
  22. package/lib/module/components/Channel/Channel.js.map +1 -1
  23. package/lib/module/components/MessageInput/MessageInput.js +30 -37
  24. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  25. package/lib/module/components/MessageList/MessageList.js +41 -43
  26. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  27. package/lib/module/components/MessageList/hooks/useMessageList.js +1 -2
  28. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  29. package/lib/module/i18n/en.json +1 -1
  30. package/lib/module/i18n/fr.json +50 -50
  31. package/lib/module/i18n/hi.json +50 -50
  32. package/lib/module/i18n/it.json +50 -50
  33. package/lib/module/i18n/nl.json +50 -50
  34. package/lib/module/i18n/ru.json +50 -50
  35. package/lib/module/i18n/tr.json +50 -50
  36. package/lib/module/version.json +1 -1
  37. package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -3
  38. package/lib/typescript/components/MessageList/MessageList.d.ts +1 -5
  39. package/lib/typescript/i18n/en.json +1 -1
  40. package/lib/typescript/i18n/fr.json +50 -50
  41. package/lib/typescript/i18n/hi.json +50 -50
  42. package/lib/typescript/i18n/it.json +50 -50
  43. package/lib/typescript/i18n/nl.json +50 -50
  44. package/lib/typescript/i18n/ru.json +50 -50
  45. package/lib/typescript/i18n/tr.json +50 -50
  46. package/package.json +1 -1
  47. package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +83 -74
  48. package/src/components/Channel/Channel.tsx +22 -17
  49. package/src/components/MessageInput/MessageInput.tsx +14 -16
  50. package/src/components/MessageList/MessageList.tsx +12 -15
  51. package/src/components/MessageList/hooks/useMessageList.ts +2 -2
  52. package/src/i18n/en.json +1 -1
  53. package/src/i18n/fr.json +50 -50
  54. package/src/i18n/hi.json +50 -50
  55. package/src/i18n/it.json +50 -50
  56. package/src/i18n/nl.json +50 -50
  57. package/src/i18n/ru.json +50 -50
  58. package/src/i18n/tr.json +50 -50
  59. package/src/version.json +1 -1
@@ -1,31 +1,49 @@
1
1
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2
+ var _typeof = require("@babel/runtime/helpers/typeof");
2
3
  Object.defineProperty(exports, "__esModule", {
3
4
  value: true
4
5
  });
5
6
  exports.AutoCompleteSuggestionListWithContext = exports.AutoCompleteSuggestionList = void 0;
7
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
6
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
8
- var _react = _interopRequireDefault(require("react"));
10
+ var _react = _interopRequireWildcard(require("react"));
9
11
  var _reactNative = require("react-native");
10
12
  var _SuggestionsContext = require("../../contexts/suggestionsContext/SuggestionsContext");
11
13
  var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
12
- var _excluded = ["children"];
14
+ var _native = require("../../native");
15
+ var _excluded = ["children", "style"];
13
16
  var _this = this,
14
17
  _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx";
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
+ var AUTO_COMPLETE_SUGGESTION_LIST_HEADER_HEIGHT = 30;
15
21
  var SuggestionsItem = function SuggestionsItem(props) {
16
22
  var children = props.children,
17
- touchableOpacityProps = (0, _objectWithoutProperties2["default"])(props, _excluded);
18
- return _react["default"].createElement(_reactNative.TouchableOpacity, (0, _extends2["default"])({}, touchableOpacityProps, {
23
+ propsStyle = props.style,
24
+ pressableProps = (0, _objectWithoutProperties2["default"])(props, _excluded);
25
+ var style = function style(_ref) {
26
+ var pressed = _ref.pressed;
27
+ return [propsStyle, {
28
+ opacity: pressed ? 0.2 : 1
29
+ }];
30
+ };
31
+ return _react["default"].createElement(_reactNative.Pressable, (0, _extends2["default"])({}, pressableProps, {
32
+ style: style,
19
33
  __self: _this,
20
34
  __source: {
21
35
  fileName: _jsxFileName,
22
- lineNumber: 36,
23
- columnNumber: 10
36
+ lineNumber: 52,
37
+ columnNumber: 5
24
38
  }
25
39
  }), children);
26
40
  };
27
41
  SuggestionsItem.displayName = 'SuggestionsHeader{messageInput{suggestions}}';
28
42
  var AutoCompleteSuggestionListWithContext = function AutoCompleteSuggestionListWithContext(props) {
43
+ var _useState = (0, _react.useState)(0),
44
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
45
+ itemHeight = _useState2[0],
46
+ setItemHeight = _useState2[1];
29
47
  var active = props.active,
30
48
  AutoCompleteSuggestionHeader = props.AutoCompleteSuggestionHeader,
31
49
  AutoCompleteSuggestionItem = props.AutoCompleteSuggestionItem,
@@ -34,98 +52,68 @@ var AutoCompleteSuggestionListWithContext = function AutoCompleteSuggestionListW
34
52
  queryText = props.queryText,
35
53
  triggerType = props.triggerType;
36
54
  var _useTheme = (0, _ThemeContext.useTheme)(),
37
- _useTheme$theme$messa = _useTheme.theme.messageInput,
55
+ _useTheme$theme = _useTheme.theme,
56
+ white = _useTheme$theme.colors.white,
57
+ _useTheme$theme$messa = _useTheme$theme.messageInput,
38
58
  maxHeight = _useTheme$theme$messa.container.maxHeight,
39
59
  itemStyle = _useTheme$theme$messa.suggestions.item,
40
60
  flatlist = _useTheme$theme$messa.suggestionsListContainer.flatlist;
41
- var renderItem = function renderItem(_ref) {
42
- var index = _ref.index,
43
- item = _ref.item;
61
+ var flatlistHeight = (0, _react.useMemo)(function () {
62
+ var totalItemHeight;
63
+ if (triggerType === 'emoji') {
64
+ totalItemHeight = data.length < 7 ? data.length * itemHeight : itemHeight * 6;
65
+ } else {
66
+ totalItemHeight = data.length < 4 ? data.length * itemHeight : itemHeight * 3;
67
+ }
68
+ return triggerType === 'emoji' || triggerType === 'command' ? totalItemHeight + AUTO_COMPLETE_SUGGESTION_LIST_HEADER_HEIGHT : totalItemHeight;
69
+ }, [itemHeight, data.length]);
70
+ var renderItem = function renderItem(_ref2) {
71
+ var item = _ref2.item;
44
72
  switch (triggerType) {
45
- case 'mention':
46
- if ((0, _SuggestionsContext.isSuggestionUser)(item)) {
47
- return _react["default"].createElement(SuggestionsItem, {
48
- onPress: function onPress() {
49
- onSelect(item);
50
- },
51
- style: [{
52
- paddingBottom: index === data.length - 1 ? 8 : 0,
53
- paddingTop: index === 0 ? 8 : 0
54
- }, itemStyle],
55
- __self: _this,
56
- __source: {
57
- fileName: _jsxFileName,
58
- lineNumber: 71,
59
- columnNumber: 13
60
- }
61
- }, AutoCompleteSuggestionItem && _react["default"].createElement(AutoCompleteSuggestionItem, {
62
- itemProps: item,
63
- triggerType: triggerType,
64
- __self: _this,
65
- __source: {
66
- fileName: _jsxFileName,
67
- lineNumber: 84,
68
- columnNumber: 17
69
- }
70
- }));
71
- }
72
- return null;
73
73
  case 'command':
74
- if ((0, _SuggestionsContext.isSuggestionCommand)(item)) {
75
- return _react["default"].createElement(SuggestionsItem, {
76
- onPress: function onPress() {
77
- onSelect(item);
78
- },
79
- style: [itemStyle],
80
- __self: _this,
81
- __source: {
82
- fileName: _jsxFileName,
83
- lineNumber: 93,
84
- columnNumber: 13
85
- }
86
- }, AutoCompleteSuggestionItem && _react["default"].createElement(AutoCompleteSuggestionItem, {
87
- itemProps: item,
88
- triggerType: triggerType,
89
- __self: _this,
90
- __source: {
91
- fileName: _jsxFileName,
92
- lineNumber: 100,
93
- columnNumber: 17
94
- }
95
- }));
96
- }
97
- return null;
74
+ case 'mention':
98
75
  case 'emoji':
99
- if ((0, _SuggestionsContext.isSuggestionEmoji)(item)) {
100
- return _react["default"].createElement(SuggestionsItem, {
101
- onPress: function onPress() {
102
- onSelect(item);
103
- },
104
- style: [itemStyle],
105
- __self: _this,
106
- __source: {
107
- fileName: _jsxFileName,
108
- lineNumber: 109,
109
- columnNumber: 13
110
- }
111
- }, AutoCompleteSuggestionItem && _react["default"].createElement(AutoCompleteSuggestionItem, {
112
- itemProps: item,
113
- triggerType: triggerType,
114
- __self: _this,
115
- __source: {
116
- fileName: _jsxFileName,
117
- lineNumber: 116,
118
- columnNumber: 17
119
- }
120
- }));
121
- }
122
- return null;
76
+ return _react["default"].createElement(SuggestionsItem, {
77
+ onLayout: function onLayout(event) {
78
+ return setItemHeight(event.nativeEvent.layout.height);
79
+ },
80
+ onPress: function onPress() {
81
+ onSelect(item);
82
+ },
83
+ style: itemStyle,
84
+ __self: _this,
85
+ __source: {
86
+ fileName: _jsxFileName,
87
+ lineNumber: 106,
88
+ columnNumber: 11
89
+ }
90
+ }, AutoCompleteSuggestionItem && _react["default"].createElement(AutoCompleteSuggestionItem, {
91
+ itemProps: item,
92
+ triggerType: triggerType,
93
+ __self: _this,
94
+ __source: {
95
+ fileName: _jsxFileName,
96
+ lineNumber: 114,
97
+ columnNumber: 15
98
+ }
99
+ }));
123
100
  default:
124
101
  return null;
125
102
  }
126
103
  };
127
104
  if (!active || data.length === 0) return null;
128
- return _react["default"].createElement(_reactNative.FlatList, {
105
+ return _react["default"].createElement(_reactNative.View, {
106
+ style: [styles.container, {
107
+ backgroundColor: white,
108
+ height: flatlistHeight
109
+ }],
110
+ __self: _this,
111
+ __source: {
112
+ fileName: _jsxFileName,
113
+ lineNumber: 126,
114
+ columnNumber: 5
115
+ }
116
+ }, _react["default"].createElement(_native.FlatList, {
129
117
  data: data,
130
118
  keyboardShouldPersistTaps: "always",
131
119
  keyExtractor: function keyExtractor(item, index) {
@@ -137,8 +125,8 @@ var AutoCompleteSuggestionListWithContext = function AutoCompleteSuggestionListW
137
125
  __self: _this,
138
126
  __source: {
139
127
  fileName: _jsxFileName,
140
- lineNumber: 138,
141
- columnNumber: 11
128
+ lineNumber: 135,
129
+ columnNumber: 13
142
130
  }
143
131
  }) : null,
144
132
  renderItem: renderItem,
@@ -148,10 +136,10 @@ var AutoCompleteSuggestionListWithContext = function AutoCompleteSuggestionListW
148
136
  __self: _this,
149
137
  __source: {
150
138
  fileName: _jsxFileName,
151
- lineNumber: 130,
152
- columnNumber: 5
139
+ lineNumber: 127,
140
+ columnNumber: 7
153
141
  }
154
- });
142
+ }));
155
143
  };
156
144
  exports.AutoCompleteSuggestionListWithContext = AutoCompleteSuggestionListWithContext;
157
145
  var areEqual = function areEqual(prevProps, nextProps) {
@@ -185,11 +173,24 @@ var AutoCompleteSuggestionList = function AutoCompleteSuggestionList(props) {
185
173
  __self: _this,
186
174
  __source: {
187
175
  fileName: _jsxFileName,
188
- lineNumber: 202,
176
+ lineNumber: 200,
189
177
  columnNumber: 5
190
178
  }
191
179
  }));
192
180
  };
193
181
  exports.AutoCompleteSuggestionList = AutoCompleteSuggestionList;
182
+ var styles = _reactNative.StyleSheet.create({
183
+ container: {
184
+ borderRadius: 8,
185
+ elevation: 3,
186
+ marginHorizontal: 8,
187
+ marginVertical: 8,
188
+ shadowOffset: {
189
+ height: 1,
190
+ width: 0
191
+ },
192
+ shadowOpacity: 0.15
193
+ }
194
+ });
194
195
  AutoCompleteSuggestionList.displayName = 'AutoCompleteSuggestionList{messageInput{suggestions{List}}}';
195
196
  //# sourceMappingURL=AutoCompleteSuggestionList.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_SuggestionsContext","_ThemeContext","_excluded","_this","_jsxFileName","SuggestionsItem","props","children","touchableOpacityProps","_objectWithoutProperties2","createElement","TouchableOpacity","_extends2","__self","__source","fileName","lineNumber","columnNumber","displayName","AutoCompleteSuggestionListWithContext","active","AutoCompleteSuggestionHeader","AutoCompleteSuggestionItem","data","onSelect","queryText","triggerType","_useTheme","useTheme","_useTheme$theme$messa","theme","messageInput","maxHeight","container","itemStyle","suggestions","item","flatlist","suggestionsListContainer","renderItem","_ref","index","isSuggestionUser","onPress","style","paddingBottom","length","paddingTop","itemProps","isSuggestionCommand","isSuggestionEmoji","FlatList","keyboardShouldPersistTaps","keyExtractor","name","id","ListHeaderComponent","exports","areEqual","prevProps","nextProps","prevActive","prevData","prevQueryText","prevType","nextActive","nextData","nextQueryText","nextType","activeEqual","queryTextEqual","dataEqual","typeEqual","MemoizedAutoCompleteSuggestionList","React","memo","AutoCompleteSuggestionList","_useSuggestionsContex","useSuggestionsContext"],"sources":["AutoCompleteSuggestionList.tsx"],"sourcesContent":["import React from 'react';\nimport { FlatList, TouchableOpacity, TouchableOpacityProps } from 'react-native';\n\nimport type { AutoCompleteSuggestionHeaderProps } from './AutoCompleteSuggestionHeader';\nimport type { AutoCompleteSuggestionItemProps } from './AutoCompleteSuggestionItem';\n\nimport {\n isSuggestionCommand,\n isSuggestionEmoji,\n isSuggestionUser,\n Suggestion,\n SuggestionsContextValue,\n useSuggestionsContext,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\ntype AutoCompleteSuggestionListComponentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<SuggestionsContextValue, 'queryText' | 'triggerType'> & {\n active: boolean;\n data: Suggestion<StreamChatGenerics>[];\n onSelect: (item: Suggestion<StreamChatGenerics>) => void;\n};\n\nexport type AutoCompleteSuggestionListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n 'AutoCompleteSuggestionHeader' | 'AutoCompleteSuggestionItem'\n> &\n AutoCompleteSuggestionListComponentProps<StreamChatGenerics>;\n\nconst SuggestionsItem: React.FC<TouchableOpacityProps> = (props) => {\n const { children, ...touchableOpacityProps } = props;\n return <TouchableOpacity {...touchableOpacityProps}>{children}</TouchableOpacity>;\n};\n\nSuggestionsItem.displayName = 'SuggestionsHeader{messageInput{suggestions}}';\n\nexport const AutoCompleteSuggestionListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: AutoCompleteSuggestionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n active,\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n data,\n onSelect,\n queryText,\n triggerType,\n } = props;\n\n const {\n theme: {\n messageInput: {\n container: { maxHeight },\n suggestions: { item: itemStyle },\n suggestionsListContainer: { flatlist },\n },\n },\n } = useTheme();\n\n const renderItem = ({ index, item }: { index: number; item: Suggestion<StreamChatGenerics> }) => {\n switch (triggerType) {\n case 'mention':\n if (isSuggestionUser(item)) {\n return (\n <SuggestionsItem\n onPress={() => {\n onSelect(item);\n }}\n style={[\n {\n paddingBottom: index === data.length - 1 ? 8 : 0,\n paddingTop: index === 0 ? 8 : 0,\n },\n itemStyle,\n ]}\n >\n {AutoCompleteSuggestionItem && (\n <AutoCompleteSuggestionItem itemProps={item} triggerType={triggerType} />\n )}\n </SuggestionsItem>\n );\n }\n return null;\n case 'command':\n if (isSuggestionCommand(item)) {\n return (\n <SuggestionsItem\n onPress={() => {\n onSelect(item);\n }}\n style={[itemStyle]}\n >\n {AutoCompleteSuggestionItem && (\n <AutoCompleteSuggestionItem itemProps={item} triggerType={triggerType} />\n )}\n </SuggestionsItem>\n );\n }\n return null;\n case 'emoji':\n if (isSuggestionEmoji(item)) {\n return (\n <SuggestionsItem\n onPress={() => {\n onSelect(item);\n }}\n style={[itemStyle]}\n >\n {AutoCompleteSuggestionItem && (\n <AutoCompleteSuggestionItem itemProps={item} triggerType={triggerType} />\n )}\n </SuggestionsItem>\n );\n }\n return null;\n default:\n return null;\n }\n };\n\n if (!active || data.length === 0) return null;\n\n return (\n <FlatList\n data={data}\n keyboardShouldPersistTaps='always'\n keyExtractor={(item, index) =>\n `${item.name || (isSuggestionUser(item) ? item.id : '')}${index}`\n }\n ListHeaderComponent={\n AutoCompleteSuggestionHeader ? (\n <AutoCompleteSuggestionHeader queryText={queryText} triggerType={triggerType} />\n ) : null\n }\n renderItem={renderItem}\n style={[flatlist, { maxHeight }]}\n />\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: AutoCompleteSuggestionListPropsWithContext<StreamChatGenerics>,\n nextProps: AutoCompleteSuggestionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n active: prevActive,\n data: prevData,\n queryText: prevQueryText,\n triggerType: prevType,\n } = prevProps;\n const {\n active: nextActive,\n data: nextData,\n queryText: nextQueryText,\n triggerType: nextType,\n } = nextProps;\n\n const activeEqual = prevActive === nextActive;\n if (!activeEqual) return false;\n\n const queryTextEqual = prevQueryText === nextQueryText;\n if (!queryTextEqual) return false;\n\n const dataEqual = prevData === nextData;\n if (!dataEqual) return false;\n\n const typeEqual = prevType === nextType;\n if (!typeEqual) return false;\n\n return true;\n};\n\nconst MemoizedAutoCompleteSuggestionList = React.memo(\n AutoCompleteSuggestionListWithContext,\n areEqual,\n) as typeof AutoCompleteSuggestionListWithContext;\n\nexport type AutoCompleteSuggestionListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = AutoCompleteSuggestionListComponentProps<StreamChatGenerics> & {\n AutoCompleteSuggestionHeader?: React.ComponentType<AutoCompleteSuggestionHeaderProps>;\n AutoCompleteSuggestionItem?: React.ComponentType<\n AutoCompleteSuggestionItemProps<StreamChatGenerics>\n >;\n};\n\nexport const AutoCompleteSuggestionList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: AutoCompleteSuggestionListProps<StreamChatGenerics>,\n) => {\n const { AutoCompleteSuggestionHeader, AutoCompleteSuggestionItem } =\n useSuggestionsContext<StreamChatGenerics>();\n\n return (\n <MemoizedAutoCompleteSuggestionList\n {...{ AutoCompleteSuggestionHeader, AutoCompleteSuggestionItem }}\n {...props}\n />\n );\n};\n\nAutoCompleteSuggestionList.displayName =\n 'AutoCompleteSuggestionList{messageInput{suggestions{List}}}';\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_SuggestionsContext","_ThemeContext","_native","_excluded","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","AUTO_COMPLETE_SUGGESTION_LIST_HEADER_HEIGHT","SuggestionsItem","props","children","propsStyle","style","pressableProps","_objectWithoutProperties2","_ref","pressed","opacity","createElement","Pressable","_extends2","__self","__source","fileName","lineNumber","columnNumber","displayName","AutoCompleteSuggestionListWithContext","_useState","useState","_useState2","_slicedToArray2","itemHeight","setItemHeight","active","AutoCompleteSuggestionHeader","AutoCompleteSuggestionItem","data","onSelect","queryText","triggerType","_useTheme","useTheme","_useTheme$theme","theme","white","colors","_useTheme$theme$messa","messageInput","maxHeight","container","itemStyle","suggestions","item","flatlist","suggestionsListContainer","flatlistHeight","useMemo","totalItemHeight","length","renderItem","_ref2","onLayout","event","nativeEvent","layout","height","onPress","itemProps","View","styles","backgroundColor","FlatList","keyboardShouldPersistTaps","keyExtractor","index","name","isSuggestionUser","id","ListHeaderComponent","exports","areEqual","prevProps","nextProps","prevActive","prevData","prevQueryText","prevType","nextActive","nextData","nextQueryText","nextType","activeEqual","queryTextEqual","dataEqual","typeEqual","MemoizedAutoCompleteSuggestionList","React","memo","AutoCompleteSuggestionList","_useSuggestionsContex","useSuggestionsContext","StyleSheet","create","borderRadius","elevation","marginHorizontal","marginVertical","shadowOffset","width","shadowOpacity"],"sources":["AutoCompleteSuggestionList.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport {\n LayoutChangeEvent,\n Pressable,\n PressableProps,\n PressableStateCallbackType,\n StyleSheet,\n View,\n ViewStyle,\n} from 'react-native';\n\nimport type { AutoCompleteSuggestionHeaderProps } from './AutoCompleteSuggestionHeader';\nimport type { AutoCompleteSuggestionItemProps } from './AutoCompleteSuggestionItem';\n\nimport {\n isSuggestionUser,\n Suggestion,\n SuggestionsContextValue,\n useSuggestionsContext,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { FlatList } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\nconst AUTO_COMPLETE_SUGGESTION_LIST_HEADER_HEIGHT = 30;\n\ntype AutoCompleteSuggestionListComponentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<SuggestionsContextValue, 'queryText' | 'triggerType'> & {\n active: boolean;\n data: Suggestion<StreamChatGenerics>[];\n onSelect: (item: Suggestion<StreamChatGenerics>) => void;\n};\n\nexport type AutoCompleteSuggestionListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n 'AutoCompleteSuggestionHeader' | 'AutoCompleteSuggestionItem'\n> &\n AutoCompleteSuggestionListComponentProps<StreamChatGenerics>;\n\nconst SuggestionsItem: React.FC<PressableProps> = (props) => {\n const { children, style: propsStyle, ...pressableProps } = props;\n\n const style = ({ pressed }: PressableStateCallbackType) => [\n propsStyle as ViewStyle,\n { opacity: pressed ? 0.2 : 1 },\n ];\n\n return (\n <Pressable {...pressableProps} style={style}>\n {children}\n </Pressable>\n );\n};\n\nSuggestionsItem.displayName = 'SuggestionsHeader{messageInput{suggestions}}';\n\nexport const AutoCompleteSuggestionListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: AutoCompleteSuggestionListPropsWithContext<StreamChatGenerics>,\n) => {\n const [itemHeight, setItemHeight] = useState<number>(0);\n const {\n active,\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n data,\n onSelect,\n queryText,\n triggerType,\n } = props;\n\n const {\n theme: {\n colors: { white },\n messageInput: {\n container: { maxHeight },\n suggestions: { item: itemStyle },\n suggestionsListContainer: { flatlist },\n },\n },\n } = useTheme();\n\n const flatlistHeight = useMemo(() => {\n let totalItemHeight;\n if (triggerType === 'emoji') {\n totalItemHeight = data.length < 7 ? data.length * itemHeight : itemHeight * 6;\n } else {\n totalItemHeight = data.length < 4 ? data.length * itemHeight : itemHeight * 3;\n }\n\n return triggerType === 'emoji' || triggerType === 'command'\n ? totalItemHeight + AUTO_COMPLETE_SUGGESTION_LIST_HEADER_HEIGHT\n : totalItemHeight;\n }, [itemHeight, data.length]);\n\n const renderItem = ({ item }: { item: Suggestion<StreamChatGenerics> }) => {\n switch (triggerType) {\n case 'command':\n case 'mention':\n case 'emoji':\n return (\n <SuggestionsItem\n onLayout={(event: LayoutChangeEvent) => setItemHeight(event.nativeEvent.layout.height)}\n onPress={() => {\n onSelect(item);\n }}\n style={itemStyle}\n >\n {AutoCompleteSuggestionItem && (\n <AutoCompleteSuggestionItem itemProps={item} triggerType={triggerType} />\n )}\n </SuggestionsItem>\n );\n default:\n return null;\n }\n };\n\n if (!active || data.length === 0) return null;\n\n return (\n <View style={[styles.container, { backgroundColor: white, height: flatlistHeight }]}>\n <FlatList\n data={data}\n keyboardShouldPersistTaps='always'\n keyExtractor={(item, index) =>\n `${item.name || (isSuggestionUser(item) ? item.id : '')}${index}`\n }\n ListHeaderComponent={\n AutoCompleteSuggestionHeader ? (\n <AutoCompleteSuggestionHeader queryText={queryText} triggerType={triggerType} />\n ) : null\n }\n renderItem={renderItem}\n style={[flatlist, { maxHeight }]}\n />\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: AutoCompleteSuggestionListPropsWithContext<StreamChatGenerics>,\n nextProps: AutoCompleteSuggestionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n active: prevActive,\n data: prevData,\n queryText: prevQueryText,\n triggerType: prevType,\n } = prevProps;\n const {\n active: nextActive,\n data: nextData,\n queryText: nextQueryText,\n triggerType: nextType,\n } = nextProps;\n\n const activeEqual = prevActive === nextActive;\n if (!activeEqual) return false;\n\n const queryTextEqual = prevQueryText === nextQueryText;\n if (!queryTextEqual) return false;\n\n const dataEqual = prevData === nextData;\n if (!dataEqual) return false;\n\n const typeEqual = prevType === nextType;\n if (!typeEqual) return false;\n\n return true;\n};\n\nconst MemoizedAutoCompleteSuggestionList = React.memo(\n AutoCompleteSuggestionListWithContext,\n areEqual,\n) as typeof AutoCompleteSuggestionListWithContext;\n\nexport type AutoCompleteSuggestionListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = AutoCompleteSuggestionListComponentProps<StreamChatGenerics> & {\n AutoCompleteSuggestionHeader?: React.ComponentType<AutoCompleteSuggestionHeaderProps>;\n AutoCompleteSuggestionItem?: React.ComponentType<\n AutoCompleteSuggestionItemProps<StreamChatGenerics>\n >;\n};\n\nexport const AutoCompleteSuggestionList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: AutoCompleteSuggestionListProps<StreamChatGenerics>,\n) => {\n const { AutoCompleteSuggestionHeader, AutoCompleteSuggestionItem } =\n useSuggestionsContext<StreamChatGenerics>();\n\n return (\n <MemoizedAutoCompleteSuggestionList\n {...{ AutoCompleteSuggestionHeader, AutoCompleteSuggestionItem }}\n {...props}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 8,\n elevation: 3,\n marginHorizontal: 8,\n marginVertical: 8,\n shadowOffset: { height: 1, width: 0 },\n shadowOpacity: 0.15,\n },\n});\n\nAutoCompleteSuggestionList.displayName =\n 'AutoCompleteSuggestionList{messageInput{suggestions{List}}}';\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAaA,IAAAE,mBAAA,GAAAF,OAAA;AAMA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAAwC,IAAAK,SAAA;AAAA,IAAAC,KAAA;EAAAC,YAAA;AAAA,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAV,wBAAAc,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAE,OAAA,CAAAF,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,cAAAN,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAGxC,IAAMW,2CAA2C,GAAG,EAAE;AAkBtD,IAAMC,eAAyC,GAAG,SAA5CA,eAAyCA,CAAIC,KAAK,EAAK;EAC3D,IAAQC,QAAQ,GAA2CD,KAAK,CAAxDC,QAAQ;IAASC,UAAU,GAAwBF,KAAK,CAA9CG,KAAK;IAAiBC,cAAc,OAAAC,yBAAA,aAAKL,KAAK,EAAA3B,SAAA;EAEhE,IAAM8B,KAAK,GAAG,SAARA,KAAKA,CAAAG,IAAA;IAAA,IAAMC,OAAO,GAAAD,IAAA,CAAPC,OAAO;IAAA,OAAmC,CACzDL,UAAU,EACV;MAAEM,OAAO,EAAED,OAAO,GAAG,GAAG,GAAG;IAAE,CAAC,CAC/B;EAAA;EAED,OACEzC,MAAA,YAAA2C,aAAA,CAACxC,YAAA,CAAAyC,SAAS,MAAAC,SAAA,iBAAKP,cAAc;IAAED,KAAK,EAAEA,KAAM;IAAAS,MAAA,EAAAtC,KAAA;IAAAuC,QAAA;MAAAC,QAAA,EAAAvC,YAAA;MAAAwC,UAAA;MAAAC,YAAA;IAAA;EAAA,IACzCf,QACQ,CAAC;AAEhB,CAAC;AAEDF,eAAe,CAACkB,WAAW,GAAG,8CAA8C;AAErE,IAAMC,qCAAqC,GAAG,SAAxCA,qCAAqCA,CAGhDlB,KAAqE,EAClE;EACH,IAAAmB,SAAA,GAAoC,IAAAC,eAAQ,EAAS,CAAC,CAAC;IAAAC,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAAhDI,UAAU,GAAAF,UAAA;IAAEG,aAAa,GAAAH,UAAA;EAChC,IACEI,MAAM,GAOJzB,KAAK,CAPPyB,MAAM;IACNC,4BAA4B,GAM1B1B,KAAK,CANP0B,4BAA4B;IAC5BC,0BAA0B,GAKxB3B,KAAK,CALP2B,0BAA0B;IAC1BC,IAAI,GAIF5B,KAAK,CAJP4B,IAAI;IACJC,QAAQ,GAGN7B,KAAK,CAHP6B,QAAQ;IACRC,SAAS,GAEP9B,KAAK,CAFP8B,SAAS;IACTC,WAAW,GACT/B,KAAK,CADP+B,WAAW;EAGb,IAAAC,SAAA,GASI,IAAAC,sBAAQ,EAAC,CAAC;IAAAC,eAAA,GAAAF,SAAA,CARZG,KAAK;IACOC,KAAK,GAAAF,eAAA,CAAfG,MAAM,CAAID,KAAK;IAAAE,qBAAA,GAAAJ,eAAA,CACfK,YAAY;IACGC,SAAS,GAAAF,qBAAA,CAAtBG,SAAS,CAAID,SAAS;IACDE,SAAS,GAAAJ,qBAAA,CAA9BK,WAAW,CAAIC,IAAI;IACSC,QAAQ,GAAAP,qBAAA,CAApCQ,wBAAwB,CAAID,QAAQ;EAK1C,IAAME,cAAc,GAAG,IAAAC,cAAO,EAAC,YAAM;IACnC,IAAIC,eAAe;IACnB,IAAIlB,WAAW,KAAK,OAAO,EAAE;MAC3BkB,eAAe,GAAGrB,IAAI,CAACsB,MAAM,GAAG,CAAC,GAAGtB,IAAI,CAACsB,MAAM,GAAG3B,UAAU,GAAGA,UAAU,GAAG,CAAC;IAC/E,CAAC,MAAM;MACL0B,eAAe,GAAGrB,IAAI,CAACsB,MAAM,GAAG,CAAC,GAAGtB,IAAI,CAACsB,MAAM,GAAG3B,UAAU,GAAGA,UAAU,GAAG,CAAC;IAC/E;IAEA,OAAOQ,WAAW,KAAK,OAAO,IAAIA,WAAW,KAAK,SAAS,GACvDkB,eAAe,GAAGnD,2CAA2C,GAC7DmD,eAAe;EACrB,CAAC,EAAE,CAAC1B,UAAU,EAAEK,IAAI,CAACsB,MAAM,CAAC,CAAC;EAE7B,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAAC,KAAA,EAA2D;IAAA,IAArDR,IAAI,GAAAQ,KAAA,CAAJR,IAAI;IACxB,QAAQb,WAAW;MACjB,KAAK,SAAS;MACd,KAAK,SAAS;MACd,KAAK,OAAO;QACV,OACEjE,MAAA,YAAA2C,aAAA,CAACV,eAAe;UACdsD,QAAQ,EAAE,SAAAA,SAACC,KAAwB;YAAA,OAAK9B,aAAa,CAAC8B,KAAK,CAACC,WAAW,CAACC,MAAM,CAACC,MAAM,CAAC;UAAA,CAAC;UACvFC,OAAO,EAAE,SAAAA,QAAA,EAAM;YACb7B,QAAQ,CAACe,IAAI,CAAC;UAChB,CAAE;UACFzC,KAAK,EAAEuC,SAAU;UAAA9B,MAAA,EAAAtC,KAAA;UAAAuC,QAAA;YAAAC,QAAA,EAAAvC,YAAA;YAAAwC,UAAA;YAAAC,YAAA;UAAA;QAAA,GAEhBW,0BAA0B,IACzB7D,MAAA,YAAA2C,aAAA,CAACkB,0BAA0B;UAACgC,SAAS,EAAEf,IAAK;UAACb,WAAW,EAAEA,WAAY;UAAAnB,MAAA,EAAAtC,KAAA;UAAAuC,QAAA;YAAAC,QAAA,EAAAvC,YAAA;YAAAwC,UAAA;YAAAC,YAAA;UAAA;QAAA,CAAE,CAE3D,CAAC;MAEtB;QACE,OAAO,IAAI;IACf;EACF,CAAC;EAED,IAAI,CAACS,MAAM,IAAIG,IAAI,CAACsB,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;EAE7C,OACEpF,MAAA,YAAA2C,aAAA,CAACxC,YAAA,CAAA2F,IAAI;IAACzD,KAAK,EAAE,CAAC0D,MAAM,CAACpB,SAAS,EAAE;MAAEqB,eAAe,EAAE1B,KAAK;MAAEqB,MAAM,EAAEV;IAAe,CAAC,CAAE;IAAAnC,MAAA,EAAAtC,KAAA;IAAAuC,QAAA;MAAAC,QAAA,EAAAvC,YAAA;MAAAwC,UAAA;MAAAC,YAAA;IAAA;EAAA,GAClFlD,MAAA,YAAA2C,aAAA,CAACrC,OAAA,CAAA2F,QAAQ;IACPnC,IAAI,EAAEA,IAAK;IACXoC,yBAAyB,EAAC,QAAQ;IAClCC,YAAY,EAAE,SAAAA,aAACrB,IAAI,EAAEsB,KAAK;MAAA,aACrBtB,IAAI,CAACuB,IAAI,KAAK,IAAAC,oCAAgB,EAACxB,IAAI,CAAC,GAAGA,IAAI,CAACyB,EAAE,GAAG,EAAE,CAAC,IAAGH,KAAK;IAAA,CAChE;IACDI,mBAAmB,EACjB5C,4BAA4B,GAC1B5D,MAAA,YAAA2C,aAAA,CAACiB,4BAA4B;MAACI,SAAS,EAAEA,SAAU;MAACC,WAAW,EAAEA,WAAY;MAAAnB,MAAA,EAAAtC,KAAA;MAAAuC,QAAA;QAAAC,QAAA,EAAAvC,YAAA;QAAAwC,UAAA;QAAAC,YAAA;MAAA;IAAA,CAAE,CAAC,GAC9E,IACL;IACDmC,UAAU,EAAEA,UAAW;IACvBhD,KAAK,EAAE,CAAC0C,QAAQ,EAAE;MAAEL,SAAS,EAATA;IAAU,CAAC,CAAE;IAAA5B,MAAA,EAAAtC,KAAA;IAAAuC,QAAA;MAAAC,QAAA,EAAAvC,YAAA;MAAAwC,UAAA;MAAAC,YAAA;IAAA;EAAA,CAClC,CACG,CAAC;AAEX,CAAC;AAACuD,OAAA,CAAArD,qCAAA,GAAAA,qCAAA;AAEF,IAAMsD,QAAQ,GAAG,SAAXA,QAAQA,CACZC,SAAyE,EACzEC,SAAyE,EACtE;EACH,IACUC,UAAU,GAIhBF,SAAS,CAJXhD,MAAM;IACAmD,QAAQ,GAGZH,SAAS,CAHX7C,IAAI;IACOiD,aAAa,GAEtBJ,SAAS,CAFX3C,SAAS;IACIgD,QAAQ,GACnBL,SAAS,CADX1C,WAAW;EAEb,IACUgD,UAAU,GAIhBL,SAAS,CAJXjD,MAAM;IACAuD,QAAQ,GAGZN,SAAS,CAHX9C,IAAI;IACOqD,aAAa,GAEtBP,SAAS,CAFX5C,SAAS;IACIoD,QAAQ,GACnBR,SAAS,CADX3C,WAAW;EAGb,IAAMoD,WAAW,GAAGR,UAAU,KAAKI,UAAU;EAC7C,IAAI,CAACI,WAAW,EAAE,OAAO,KAAK;EAE9B,IAAMC,cAAc,GAAGP,aAAa,KAAKI,aAAa;EACtD,IAAI,CAACG,cAAc,EAAE,OAAO,KAAK;EAEjC,IAAMC,SAAS,GAAGT,QAAQ,KAAKI,QAAQ;EACvC,IAAI,CAACK,SAAS,EAAE,OAAO,KAAK;EAE5B,IAAMC,SAAS,GAAGR,QAAQ,KAAKI,QAAQ;EACvC,IAAI,CAACI,SAAS,EAAE,OAAO,KAAK;EAE5B,OAAO,IAAI;AACb,CAAC;AAED,IAAMC,kCAAkC,GAAGC,iBAAK,CAACC,IAAI,CACnDvE,qCAAqC,EACrCsD,QACF,CAAiD;AAW1C,IAAMkB,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAGrC1F,KAA0D,EACvD;EACH,IAAA2F,qBAAA,GACE,IAAAC,yCAAqB,EAAqB,CAAC;IADrClE,4BAA4B,GAAAiE,qBAAA,CAA5BjE,4BAA4B;IAAEC,0BAA0B,GAAAgE,qBAAA,CAA1BhE,0BAA0B;EAGhE,OACE7D,MAAA,YAAA2C,aAAA,CAAC8E,kCAAkC,MAAA5E,SAAA;IAC3Be,4BAA4B,EAA5BA,4BAA4B;IAAEC,0BAA0B,EAA1BA;EAA0B,GAC1D3B,KAAK;IAAAY,MAAA,EAAAtC,KAAA;IAAAuC,QAAA;MAAAC,QAAA,EAAAvC,YAAA;MAAAwC,UAAA;MAAAC,YAAA;IAAA;EAAA,EACV,CAAC;AAEN,CAAC;AAACuD,OAAA,CAAAmB,0BAAA,GAAAA,0BAAA;AAEF,IAAM7B,MAAM,GAAGgC,uBAAU,CAACC,MAAM,CAAC;EAC/BrD,SAAS,EAAE;IACTsD,YAAY,EAAE,CAAC;IACfC,SAAS,EAAE,CAAC;IACZC,gBAAgB,EAAE,CAAC;IACnBC,cAAc,EAAE,CAAC;IACjBC,YAAY,EAAE;MAAE1C,MAAM,EAAE,CAAC;MAAE2C,KAAK,EAAE;IAAE,CAAC;IACrCC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC;AAEFX,0BAA0B,CAACzE,WAAW,GACpC,6DAA6D"}
@@ -558,14 +558,17 @@ var ChannelWithContext = function ChannelWithContext(props) {
558
558
  (0, _react.useEffect)(function () {
559
559
  var handleEvent = function handleEvent(event) {
560
560
  if (shouldSyncChannel) {
561
- var _event$message;
562
- if (thread) {
563
- var updatedThreadMessages = thread.id && channel && channel.state.threads[thread.id] || threadMessages;
564
- setThreadMessages(updatedThreadMessages);
565
- }
566
- if (channel && thread && ((_event$message = event.message) == null ? void 0 : _event$message.id) === thread.id) {
567
- var updatedThread = channel.state.formatMessage(event.message);
568
- setThread(updatedThread);
561
+ var isTypingEvent = event.type === 'typing.start' || event.type === 'typing.stop';
562
+ if (!isTypingEvent) {
563
+ var _event$message;
564
+ if (thread != null && thread.id) {
565
+ var updatedThreadMessages = thread.id && channel && channel.state.threads[thread.id] || threadMessages;
566
+ setThreadMessages(updatedThreadMessages);
567
+ }
568
+ if (channel && thread != null && thread.id && ((_event$message = event.message) == null ? void 0 : _event$message.id) === thread.id) {
569
+ var updatedThread = channel.state.formatMessage(event.message);
570
+ setThread(updatedThread);
571
+ }
569
572
  }
570
573
  if (channel && event.type !== 'message.new' && event.type !== 'message.read' && event.type !== 'typing.start' && event.type !== 'typing.stop') {
571
574
  copyChannelState();
@@ -911,20 +914,19 @@ var ChannelWithContext = function ChannelWithContext(props) {
911
914
  while (1) switch (_context6.prev = _context6.next) {
912
915
  case 0:
913
916
  if (!(!(channel != null && channel.initialized) || !channel.state.isUpToDate)) {
914
- _context6.next = 5;
917
+ _context6.next = 7;
915
918
  break;
916
919
  }
917
920
  _context6.next = 3;
918
921
  return channel == null ? void 0 : channel.watch();
919
922
  case 3:
920
- _context6.next = 7;
921
- break;
922
- case 5:
923
- _context6.next = 7;
924
- return loadLatestMessagesRef.current(true);
925
- case 7:
926
923
  channel == null ? void 0 : channel.state.setIsUpToDate(true);
927
924
  setHasNoMoreRecentMessagesToLoad(true);
925
+ _context6.next = 9;
926
+ break;
927
+ case 7:
928
+ _context6.next = 9;
929
+ return channel.state.loadMessageIntoState('latest');
928
930
  case 9:
929
931
  case "end":
930
932
  return _context6.stop();
@@ -2002,12 +2004,12 @@ var ChannelWithContext = function ChannelWithContext(props) {
2002
2004
  return _ref26.apply(this, arguments);
2003
2005
  };
2004
2006
  }();
2005
- var openThread = function openThread(message) {
2007
+ var openThread = (0, _react.useCallback)(function (message) {
2006
2008
  var _channel$state2;
2007
2009
  var newThreadMessages = message != null && message.id ? (channel == null ? void 0 : (_channel$state2 = channel.state) == null ? void 0 : _channel$state2.threads[message.id]) || [] : [];
2008
2010
  setThread(message);
2009
2011
  setThreadMessages(newThreadMessages);
2010
- };
2012
+ }, [setThread, setThreadMessages]);
2011
2013
  var closeThread = (0, _react.useCallback)(function () {
2012
2014
  setThread(null);
2013
2015
  setThreadMessages([]);
@@ -2283,7 +2285,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2283
2285
  __self: _this,
2284
2286
  __source: {
2285
2287
  fileName: _jsxFileName,
2286
- lineNumber: 2284,
2288
+ lineNumber: 2290,
2287
2289
  columnNumber: 12
2288
2290
  }
2289
2291
  });
@@ -2297,7 +2299,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2297
2299
  __self: _this,
2298
2300
  __source: {
2299
2301
  fileName: _jsxFileName,
2300
- lineNumber: 2289,
2302
+ lineNumber: 2295,
2301
2303
  columnNumber: 7
2302
2304
  }
2303
2305
  }, t('Please select a channel first'));
@@ -2310,7 +2312,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2310
2312
  __self: _this,
2311
2313
  __source: {
2312
2314
  fileName: _jsxFileName,
2313
- lineNumber: 2296,
2315
+ lineNumber: 2302,
2314
2316
  columnNumber: 5
2315
2317
  }
2316
2318
  }), _react["default"].createElement(_ChannelContext.ChannelProvider, {
@@ -2318,7 +2320,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2318
2320
  __self: _this,
2319
2321
  __source: {
2320
2322
  fileName: _jsxFileName,
2321
- lineNumber: 2302,
2323
+ lineNumber: 2308,
2322
2324
  columnNumber: 7
2323
2325
  }
2324
2326
  }, _react["default"].createElement(_OwnCapabilitiesContext.OwnCapabilitiesProvider, {
@@ -2326,7 +2328,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2326
2328
  __self: _this,
2327
2329
  __source: {
2328
2330
  fileName: _jsxFileName,
2329
- lineNumber: 2303,
2331
+ lineNumber: 2309,
2330
2332
  columnNumber: 9
2331
2333
  }
2332
2334
  }, _react["default"].createElement(_TypingContext.TypingProvider, {
@@ -2334,7 +2336,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2334
2336
  __self: _this,
2335
2337
  __source: {
2336
2338
  fileName: _jsxFileName,
2337
- lineNumber: 2304,
2339
+ lineNumber: 2310,
2338
2340
  columnNumber: 11
2339
2341
  }
2340
2342
  }, _react["default"].createElement(_PaginatedMessageListContext.PaginatedMessageListProvider, {
@@ -2342,7 +2344,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2342
2344
  __self: _this,
2343
2345
  __source: {
2344
2346
  fileName: _jsxFileName,
2345
- lineNumber: 2305,
2347
+ lineNumber: 2311,
2346
2348
  columnNumber: 13
2347
2349
  }
2348
2350
  }, _react["default"].createElement(_MessagesContext.MessagesProvider, {
@@ -2350,7 +2352,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2350
2352
  __self: _this,
2351
2353
  __source: {
2352
2354
  fileName: _jsxFileName,
2353
- lineNumber: 2306,
2355
+ lineNumber: 2312,
2354
2356
  columnNumber: 15
2355
2357
  }
2356
2358
  }, _react["default"].createElement(_ThreadContext.ThreadProvider, {
@@ -2358,7 +2360,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2358
2360
  __self: _this,
2359
2361
  __source: {
2360
2362
  fileName: _jsxFileName,
2361
- lineNumber: 2307,
2363
+ lineNumber: 2313,
2362
2364
  columnNumber: 17
2363
2365
  }
2364
2366
  }, _react["default"].createElement(_SuggestionsContext.SuggestionsProvider, {
@@ -2366,7 +2368,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2366
2368
  __self: _this,
2367
2369
  __source: {
2368
2370
  fileName: _jsxFileName,
2369
- lineNumber: 2308,
2371
+ lineNumber: 2314,
2370
2372
  columnNumber: 19
2371
2373
  }
2372
2374
  }, _react["default"].createElement(_MessageInputContext.MessageInputProvider, {
@@ -2374,7 +2376,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
2374
2376
  __self: _this,
2375
2377
  __source: {
2376
2378
  fileName: _jsxFileName,
2377
- lineNumber: 2309,
2379
+ lineNumber: 2315,
2378
2380
  columnNumber: 21
2379
2381
  }
2380
2382
  }, _react["default"].createElement(_reactNative.View, {
@@ -2384,13 +2386,13 @@ var ChannelWithContext = function ChannelWithContext(props) {
2384
2386
  __self: _this,
2385
2387
  __source: {
2386
2388
  fileName: _jsxFileName,
2387
- lineNumber: 2310,
2389
+ lineNumber: 2316,
2388
2390
  columnNumber: 23
2389
2391
  }
2390
2392
  }, children))))))))));
2391
2393
  };
2392
2394
  var Channel = function Channel(props) {
2393
- var _props$thread, _props$thread2, _props$channel;
2395
+ var _props$thread, _props$thread2;
2394
2396
  var _useChatContext = (0, _ChatContext.useChatContext)(),
2395
2397
  client = _useChatContext.client,
2396
2398
  enableOfflineSupport = _useChatContext.enableOfflineSupport;
@@ -2413,7 +2415,6 @@ var Channel = function Channel(props) {
2413
2415
  watcherCount = _useChannelState.watcherCount,
2414
2416
  watchers = _useChannelState.watchers;
2415
2417
  return _react["default"].createElement(ChannelWithContext, (0, _extends2["default"])({
2416
- key: (_props$channel = props.channel) == null ? void 0 : _props$channel.cid,
2417
2418
  client: client,
2418
2419
  enableOfflineSupport: enableOfflineSupport,
2419
2420
  t: t
@@ -2436,7 +2437,7 @@ var Channel = function Channel(props) {
2436
2437
  __self: _this,
2437
2438
  __source: {
2438
2439
  fileName: _jsxFileName,
2439
- lineNumber: 2367,
2440
+ lineNumber: 2373,
2440
2441
  columnNumber: 5
2441
2442
  }
2442
2443
  }));