mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-06-28 15:27:43 +00:00
4.3.1
* Fixed: Unable to see in-line chat action context menus in theater mode. * Changed: Add a new socket server to the list to take pressure off the others. * API Added: `debounce` method in `FrankerFaceZ.utilities.object`. * API Added: `<autocomplete>` Vue component for implementing text fields with auto-completion. * API Changed: Update localized Vue strings immediately when the i18n debug transformation changes. * API Changed: `<icon-picker />` now has a closed and open state. It doesn't always show the drawer of icons. * API Changed: Include the `vue-clickaway` mixin in everything.
This commit is contained in:
parent
aa25bff498
commit
21ee6fcfb7
23 changed files with 667 additions and 100 deletions
|
@ -73,6 +73,52 @@ export function timeout(promise, delay) {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return a wrapper for a function that will only execute the function
|
||||
* a period of time after it has stopped being called.
|
||||
* @param {Function} fn The function to wrap.
|
||||
* @param {Integer} delay The time to wait, in milliseconds
|
||||
* @param {Boolean} immediate If immediate is true, trigger the function immediately rather than eventually.
|
||||
* @returns {Function} wrapped function
|
||||
*/
|
||||
export function debounce(fn, delay, immediate) {
|
||||
let timer;
|
||||
if ( immediate ) {
|
||||
const later = () => timer = null;
|
||||
if ( immediate === 2 )
|
||||
// Special Mode! Run immediately OR later.
|
||||
return function(...args) {
|
||||
if ( timer ) {
|
||||
clearTimeout(timer);
|
||||
timer = setTimeout(() => {
|
||||
timer = null;
|
||||
fn.apply(this, args); // eslint-disable-line no-invalid-this
|
||||
}, delay);
|
||||
} else {
|
||||
fn.apply(this, args); // eslint-disable-line no-invalid-this
|
||||
timer = setTimeout(later, delay);
|
||||
}
|
||||
}
|
||||
|
||||
return function(...args) {
|
||||
if ( ! timer )
|
||||
fn.apply(this, args); // eslint-disable-line no-invalid-this
|
||||
else
|
||||
clearTimeout(timer);
|
||||
|
||||
timer = setTimeout(later, delay);
|
||||
}
|
||||
}
|
||||
|
||||
return function(...args) {
|
||||
if ( timer )
|
||||
clearTimeout(timer);
|
||||
|
||||
timer = setTimeout(fn.bind(this, ...args), delay); // eslint-disable-line no-invalid-this
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Make sure that a given asynchronous function is only called once
|
||||
* at a time.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue