Skip to content

Commit 76a19d2

Browse files
authored
fix(emoji-picker): debounced search input (CorentinTh#1181)
* fix(Emoji picker): fix lags Fix CorentinTh#1176 using debounced ref * chore: fix strange corepack message Fix corepack claiming strange thing : UsageError: This project is configured to use yarn because /home/runner/work/it-tools/it-tools/package.json has a "packageManager" field
1 parent b430bae commit 76a19d2

File tree

3 files changed

+25
-2
lines changed

3 files changed

+25
-2
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,5 +138,6 @@
138138
"vitest": "^0.34.0",
139139
"workbox-window": "^7.0.0",
140140
"zx": "^7.2.1"
141-
}
141+
},
142+
"packageManager": "[email protected]"
142143
}

src/composable/debouncedref.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import _ from 'lodash';
2+
3+
function useDebouncedRef<T>(initialValue: T, delay: number, immediate: boolean = false) {
4+
const state = ref(initialValue);
5+
const debouncedRef = customRef((track, trigger) => ({
6+
get() {
7+
track();
8+
return state.value;
9+
},
10+
set: _.debounce(
11+
(value) => {
12+
state.value = value;
13+
trigger();
14+
},
15+
delay,
16+
{ leading: immediate },
17+
),
18+
}));
19+
return debouncedRef;
20+
}
21+
export default useDebouncedRef;

src/tools/emoji-picker/emoji-picker.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import emojiKeywords from 'emojilib';
44
import _ from 'lodash';
55
import type { EmojiInfo } from './emoji.types';
66
import { useFuzzySearch } from '@/composable/fuzzySearch';
7+
import useDebouncedRef from '@/composable/debouncedref';
78
89
const escapeUnicode = ({ emoji }: { emoji: string }) => emoji.split('').map(unit => `\\u${unit.charCodeAt(0).toString(16).padStart(4, '0')}`).join('');
910
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 }[] = _
2324
.map((emojiInfos, group) => ({ group, emojiInfos }))
2425
.value();
2526
26-
const searchQuery = ref('');
27+
const searchQuery = useDebouncedRef('', 500);
2728
2829
const { searchResult } = useFuzzySearch({
2930
search: searchQuery,

0 commit comments

Comments
 (0)