UNPKG

@fe6/water-pro

Version:

An enterprise-class UI design language and Vue-based implementation

72 lines (57 loc) 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useTimeoutFn = useTimeoutFn; exports.useTimeoutRef = useTimeoutRef; var _vue = require("vue"); var _shared = require("@fe6/shared"); var _vue2 = require("../vue"); var _warning = _interopRequireDefault(require("../warning")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** @format */ function useTimeoutFn(handle, wait) { var _native = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if (!(0, _shared.isFunction)(handle)) { (0, _warning.default)('handle 参数是必须是 Function 类型!'); } var _useTimeoutRef = useTimeoutRef(wait), readyRef = _useTimeoutRef.readyRef, stop = _useTimeoutRef.stop, start = _useTimeoutRef.start; if (_native) { handle(); } else { (0, _vue.watch)(readyRef, function (maturity) { maturity && handle(); }, { immediate: false }); } return { readyRef: readyRef, stop: stop, start: start }; } function useTimeoutRef(wait) { var readyRef = (0, _vue.ref)(false); var timer; function stop() { readyRef.value = false; timer && window.clearTimeout(timer); } function start() { stop(); timer = setTimeout(function () { readyRef.value = true; }, wait); } start(); (0, _vue2.tryOnUnmounted)(stop); return { readyRef: readyRef, stop: stop, start: start }; }