@grail-ui/svelte
Version:
[](https://www.npmjs.com/package/@grail-ui/svelte) [](https://bundlephobia.com/package/@grail-ui/svelte) [ • 607 B
JavaScript
import { writable } from 'svelte/store';
export default function typeahead({ debounceInterval = 200 } = {}) {
const { subscribe, set } = writable('');
let debounceTimeout;
let pressedLetters = [];
function reset() {
pressedLetters = [];
set('');
}
function _add(letter) {
pressedLetters.push(letter);
clearTimeout(debounceTimeout);
debounceTimeout = setTimeout(() => {
set(pressedLetters.join(''));
reset();
}, debounceInterval);
}
return {
subscribe,
add: _add,
reset,
};
}