UNPKG

@aplus-frontend/antdv

Version:

Vue basic component library maintained based on ant-design-vue

74 lines (73 loc) 2.35 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.debounceFilter = debounceFilter; exports.default = debouncedWatch; exports.watchWithFilter = watchWithFilter; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _vue = require("vue"); // copy from https://github.dev/vueuse/vueuse var __rest = void 0 && (void 0).__rest || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; const bypassFilter = invoke => { return invoke(); }; /** * Create an EventFilter that debounce the events * * @param ms */ function debounceFilter(ms) { let timer; const filter = invoke => { const duration = (0, _vue.unref)(ms); if (timer) clearTimeout(timer); if (duration <= 0) return invoke(); timer = setTimeout(invoke, duration); }; return filter; } /** * @internal */ function createFilterWrapper(filter, fn) { function wrapper() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } filter(() => fn.apply(this, args), { fn, thisArg: this, args }); } return wrapper; } // implementation function watchWithFilter(source, cb) { let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; const { eventFilter = bypassFilter } = options, watchOptions = __rest(options, ["eventFilter"]); return (0, _vue.watch)(source, createFilterWrapper(eventFilter, cb), watchOptions); } // implementation function debouncedWatch(source, cb) { let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; const { debounce = 0 } = options, watchOptions = __rest(options, ["debounce"]); return watchWithFilter(source, cb, (0, _extends2.default)((0, _extends2.default)({}, watchOptions), { eventFilter: debounceFilter(debounce) })); }