UNPKG

vest

Version:

Declarative Form Validations Framework

52 lines (47 loc) 1.71 kB
'use strict'; 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