37 lines
802 B
JavaScript
37 lines
802 B
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = void 0;
|
|
var _default = (callback, buffer) => {
|
|
let called = false;
|
|
let timeout = null;
|
|
function cancelTrigger() {
|
|
clearTimeout(timeout);
|
|
}
|
|
function trigger(force) {
|
|
if (!called || force === true) {
|
|
if (callback() === false) {
|
|
// Not delay since callback cancelled self
|
|
return;
|
|
}
|
|
called = true;
|
|
cancelTrigger();
|
|
timeout = setTimeout(() => {
|
|
called = false;
|
|
}, buffer.value);
|
|
} else {
|
|
cancelTrigger();
|
|
timeout = setTimeout(() => {
|
|
called = false;
|
|
trigger();
|
|
}, buffer.value);
|
|
}
|
|
}
|
|
return [trigger, () => {
|
|
called = false;
|
|
cancelTrigger();
|
|
}];
|
|
};
|
|
exports.default = _default; |