useDelayReset.js 835 B

1234567891011121314151617181920212223242526272829303132
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = useDelayReset;
  6. var _vue = require("vue");
  7. /**
  8. * Similar with `useLock`, but this hook will always execute last value.
  9. * When set to `true`, it will keep `true` for a short time even if `false` is set.
  10. */
  11. function useDelayReset() {
  12. let timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
  13. const bool = (0, _vue.shallowRef)(false);
  14. let delay;
  15. const cancelLatest = () => {
  16. clearTimeout(delay);
  17. };
  18. (0, _vue.onMounted)(() => {
  19. cancelLatest();
  20. });
  21. const delaySetBool = (value, callback) => {
  22. cancelLatest();
  23. delay = setTimeout(() => {
  24. bool.value = value;
  25. if (callback) {
  26. callback();
  27. }
  28. }, timeout);
  29. };
  30. return [bool, delaySetBool, cancelLatest];
  31. }