vest
Version:
Declarative Form Validations Framework
52 lines (47 loc) • 1.71 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vest = require('vest');
var vestUtils = require('vest-utils');
var vestjsRuntime = require('vestjs-runtime');
const isolateType = 'Debounce';
function debounce(callback, delay = 0) {
let timeout = null;
const f = () => (payload) => new Promise((resolve, reject) => {
timeout = setTimeout(() => {
let res = false;
try {
res = callback(payload);
}
catch (e) {
return reject(e);
}
if (res === false) {
return reject();
}
return vestUtils.isPromise(res) ? res.then(resolve, reject) : resolve(res);
}, delay);
});
const i = vestjsRuntime.Isolate.create(isolateType, f, {
clearTimeout: () => {
if (timeout) {
clearTimeout(timeout);
}
},
});
return i.output;
}
class IsolateDebounceReconciler {
static match(currentNode, historyNode) {
return (vestjsRuntime.IsolateSelectors.isIsolateType(currentNode, isolateType) &&
vestjsRuntime.IsolateSelectors.isIsolateType(historyNode, isolateType));
}
static reconcile(current, history) {
var _a, _b;
(_b = (_a = history === null || history === void 0 ? void 0 : history.data) === null || _a === void 0 ? void 0 : _a.clearTimeout) === null || _b === void 0 ? void 0 : _b.call(_a);
return current;
}
}
vest.registerReconciler(IsolateDebounceReconciler);
exports.IsolateDebounceReconciler = IsolateDebounceReconciler;
exports.default = debounce;
//# sourceMappingURL=debounce.development.js.map