1- import React , {
2- CSSProperties ,
3- MouseEventHandler ,
4- useCallback ,
5- useEffect ,
6- useMemo ,
7- useState ,
8- } from 'react' ;
1+ /* eslint-disable react-hooks/exhaustive-deps */
2+ import type { CSSProperties } from 'react' ;
3+ import React , { useCallback , useEffect , useMemo , useState } from 'react' ;
94import clsx from 'clsx' ;
105
116import { useComponentContext } from '../../context/ComponentContext' ;
127
138import { Item } from './Item' ;
149import { escapeRegExp } from '../Message/renderText' ;
15- import type { DefaultStreamChatGenerics } from '../../types' ;
10+
1611import type { CustomTrigger , UnknownType } from '../../types/types' ;
17- import {
12+ import type {
1813 SuggestionEmoji ,
1914 SuggestionItem ,
2015 SuggestionListProps ,
2116 SuggestionUser ,
2217} from '../ChatAutoComplete' ;
2318
2419export const List = <
25- StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics ,
2620 V extends CustomTrigger = CustomTrigger ,
2721 EmojiData extends UnknownType = UnknownType ,
2822> ( {
@@ -40,9 +34,8 @@ export const List = <
4034 SuggestionItem : PropSuggestionItem ,
4135 value : propValue ,
4236 values,
43- } : SuggestionListProps < StreamChatGenerics , V > ) => {
44- const { AutocompleteSuggestionItem } =
45- useComponentContext < StreamChatGenerics > ( 'SuggestionList' ) ;
37+ } : SuggestionListProps < V > ) => {
38+ const { AutocompleteSuggestionItem } = useComponentContext ( 'SuggestionList' ) ;
4639 const SuggestionItem = PropSuggestionItem || AutocompleteSuggestionItem || Item ;
4740
4841 const [ selectedItemIndex , setSelectedItemIndex ] = useState < number | undefined > (
@@ -51,10 +44,12 @@ export const List = <
5144
5245 const itemsRef : HTMLElement [ ] = [ ] ;
5346
54- const isSelected = ( item : SuggestionItem < StreamChatGenerics , EmojiData > ) =>
47+ const isSelected = ( item : SuggestionItem < EmojiData > ) =>
48+ // @ts -expect-error tmp
5549 selectedItemIndex === values . findIndex ( ( value ) => getId ( value ) === getId ( item ) ) ;
5650
57- const getId = ( item : SuggestionItem < StreamChatGenerics , EmojiData > ) => {
51+ const getId = ( item : SuggestionItem < EmojiData > ) => {
52+ // @ts -expect-error tmp
5853 const textToReplace = getTextToReplace ( item ) ;
5954 if ( textToReplace . key ) {
6055 return textToReplace . key ;
@@ -68,29 +63,23 @@ export const List = <
6863 } ;
6964
7065 const findItemIndex = useCallback (
71- ( item : SuggestionItem < StreamChatGenerics , V > ) =>
66+ ( item : SuggestionItem < V > ) =>
7267 values . findIndex ( ( value ) =>
73- value . id
74- ? value . id === ( item as SuggestionUser < StreamChatGenerics > ) . id
75- : value . name === item . name ,
68+ value . id ? value . id === ( item as SuggestionUser ) . id : value . name === item . name ,
7669 ) ,
7770 [ values ] ,
7871 ) ;
7972
80- const modifyText = (
81- value : SuggestionListProps < StreamChatGenerics , V > [ 'values' ] [ number ] ,
82- ) => {
73+ const modifyText = ( value : SuggestionListProps < V > [ 'values' ] [ number ] ) => {
8374 if ( ! value ) return ;
84-
75+ // @ts -expect-error tmp
8576 onSelect ( getTextToReplace ( value ) ) ;
77+ // @ts -expect-error tmp
8678 if ( getSelectedItem ) getSelectedItem ( value ) ;
8779 } ;
8880
8981 const handleClick = useCallback (
90- (
91- e : React . MouseEvent < Element , MouseEvent > ,
92- item : SuggestionItem < StreamChatGenerics , V > ,
93- ) => {
82+ ( e : React . MouseEvent < Element , MouseEvent > , item : SuggestionItem < V > ) => {
9483 e ?. preventDefault ( ) ;
9584
9685 const index = findItemIndex ( item ) ;
@@ -101,7 +90,7 @@ export const List = <
10190 ) ;
10291
10392 const selectItem = useCallback (
104- ( item : SuggestionItem < StreamChatGenerics , V > ) => {
93+ ( item : SuggestionItem < V > ) => {
10594 const index = findItemIndex ( item ) ;
10695 setSelectedItemIndex ( index ) ;
10796 } ,
@@ -137,7 +126,6 @@ export const List = <
137126
138127 return null ;
139128 } ,
140- // eslint-disable-next-line react-hooks/exhaustive-deps
141129 [ selectedItemIndex , values ] ,
142130 ) ;
143131
@@ -147,12 +135,13 @@ export const List = <
147135 } , [ handleKeyDown ] ) ;
148136
149137 useEffect ( ( ) => {
138+ // @ts -expect-error tmp
150139 if ( values ?. length ) selectItem ( values [ 0 ] ) ;
151140 } , [ selectItem , values ] ) ;
152141
153142 const restructureItem = useCallback (
154- ( item : SuggestionItem < StreamChatGenerics , V > ) => {
155- const matched = item . name || ( item as SuggestionUser < StreamChatGenerics > ) . id ;
143+ ( item : SuggestionItem < V > ) => {
144+ const matched = item . name || ( item as SuggestionUser ) . id ;
156145
157146 const textBeforeCursor = ( propValue || '' ) . slice ( 0 , selectionEnd ) ;
158147 const triggerIndex = textBeforeCursor . lastIndexOf ( currentTrigger ) ;
@@ -168,6 +157,7 @@ export const List = <
168157 ) ;
169158
170159 const restructuredValues = useMemo (
160+ // @ts -expect-error tmp
171161 ( ) => values . map ( restructureItem ) ,
172162 [ values , restructureItem ] ,
173163 ) ;
@@ -177,7 +167,7 @@ export const List = <
177167 { restructuredValues . map ( ( item , i ) => (
178168 < SuggestionItem
179169 className = { itemClassName }
180- // @ts -ignore
170+ // @ts -expect-error tmp
181171 component = { component }
182172 item = { item }
183173 key = { getId ( item ) . toString ( ) }
0 commit comments