Merge remote-tracking branch 'origin/main' into feat/file-hasher
This commit is contained in:
		
						commit
						41bbd2bcef
					
				
							
								
								
									
										21
									
								
								src/composable/debouncedref.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/composable/debouncedref.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | |||||||
|  | import _ from 'lodash'; | ||||||
|  | 
 | ||||||
|  | function useDebouncedRef<T>(initialValue: T, delay: number, immediate: boolean = false) { | ||||||
|  |   const state = ref(initialValue); | ||||||
|  |   const debouncedRef = customRef((track, trigger) => ({ | ||||||
|  |     get() { | ||||||
|  |       track(); | ||||||
|  |       return state.value; | ||||||
|  |     }, | ||||||
|  |     set: _.debounce( | ||||||
|  |       (value) => { | ||||||
|  |         state.value = value; | ||||||
|  |         trigger(); | ||||||
|  |       }, | ||||||
|  |       delay, | ||||||
|  |       { leading: immediate }, | ||||||
|  |     ), | ||||||
|  |   })); | ||||||
|  |   return debouncedRef; | ||||||
|  | } | ||||||
|  | export default useDebouncedRef; | ||||||
| @ -4,6 +4,7 @@ import emojiKeywords from 'emojilib'; | |||||||
| import _ from 'lodash'; | import _ from 'lodash'; | ||||||
| import type { EmojiInfo } from './emoji.types'; | import type { EmojiInfo } from './emoji.types'; | ||||||
| import { useFuzzySearch } from '@/composable/fuzzySearch'; | import { useFuzzySearch } from '@/composable/fuzzySearch'; | ||||||
|  | import useDebouncedRef from '@/composable/debouncedref'; | ||||||
| 
 | 
 | ||||||
| const escapeUnicode = ({ emoji }: { emoji: string }) => emoji.split('').map(unit => `\\u${unit.charCodeAt(0).toString(16).padStart(4, '0')}`).join(''); | const escapeUnicode = ({ emoji }: { emoji: string }) => emoji.split('').map(unit => `\\u${unit.charCodeAt(0).toString(16).padStart(4, '0')}`).join(''); | ||||||
| const getEmojiCodePoints = ({ emoji }: { emoji: string }) => emoji.codePointAt(0) ? `0x${emoji.codePointAt(0)?.toString(16)}` : undefined; | const getEmojiCodePoints = ({ emoji }: { emoji: string }) => emoji.codePointAt(0) ? `0x${emoji.codePointAt(0)?.toString(16)}` : undefined; | ||||||
| @ -23,7 +24,7 @@ const emojisGroups: { emojiInfos: EmojiInfo[]; group: string }[] = _ | |||||||
|   .map((emojiInfos, group) => ({ group, emojiInfos })) |   .map((emojiInfos, group) => ({ group, emojiInfos })) | ||||||
|   .value(); |   .value(); | ||||||
| 
 | 
 | ||||||
| const searchQuery = ref(''); | const searchQuery = useDebouncedRef('', 500); | ||||||
| 
 | 
 | ||||||
| const { searchResult } = useFuzzySearch({ | const { searchResult } = useFuzzySearch({ | ||||||
|   search: searchQuery, |   search: searchQuery, | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user