UNPKG

balm-ui

Version:

A modular and customizable UI library based on Material Design and Vue 3

32 lines (26 loc) 712 B
import getType from '../utils/typeof'; const vDebounce = { name: 'debounce', mounted(el, { value }) { if (getType(value) === 'object') { const { callback, delay } = value; if (getType(callback) !== 'function') { console.warn(`[v-debounce]: The 'callback' must be a function`); } let timer; el.addEventListener('click', () => { if (timer) { clearTimeout(timer); } timer = setTimeout(() => { callback(); }, delay || 250); }); } else { throw new Error( `[v-debounce]: The 'value' must be an object ({ callback: Function, delay?: number })` ); } } }; export default vDebounce;