UNPKG

@schema-render/core-react

Version:

Through a set of simple JSON Schema, efficiently build a set of forms.

70 lines (69 loc) 2.87 kB
/** * Fork from https://github.com/alibaba/hooks/blob/master/packages/hooks/src/useDebounceFn/index.ts */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); var _react = require("react"); var _tinyLodash = require("../utils/tinyLodash"); var _useLatest = /*#__PURE__*/ _interop_require_default(require("./useLatest")); var _useUnmount = /*#__PURE__*/ _interop_require_default(require("./useUnmount")); function _array_like_to_array(arr, len) { if (len == null || len > arr.length) len = arr.length; for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i]; return arr2; } function _array_without_holes(arr) { if (Array.isArray(arr)) return _array_like_to_array(arr); } function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _iterable_to_array(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _non_iterable_spread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _to_consumable_array(arr) { return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread(); } function _unsupported_iterable_to_array(o, minLen) { if (!o) return; if (typeof o === "string") return _array_like_to_array(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen); } function useDebounceFn(fn, options) { var fnRef = (0, _useLatest.default)(fn); var _options_wait; var wait = (_options_wait = options === null || options === void 0 ? void 0 : options.wait) !== null && _options_wait !== void 0 ? _options_wait : 1000; var debounced = (0, _react.useMemo)(function() { return (0, _tinyLodash.debounce)(function() { for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){ args[_key] = arguments[_key]; } var _fnRef; return (_fnRef = fnRef).current.apply(_fnRef, _to_consumable_array(args)); }, wait); }, // eslint-disable-next-line react-hooks/exhaustive-deps []); (0, _useUnmount.default)(function() { return debounced.cancel(); }); return { run: debounced, cancel: debounced.cancel }; } var _default = useDebounceFn;