useDelayReset.js 763 B

1234567891011121314151617181920212223242526
  1. import { onMounted, ref } from 'vue';
  2. /**
  3. * Similar with `useLock`, but this hook will always execute last value.
  4. * When set to `true`, it will keep `true` for a short time even if `false` is set.
  5. */
  6. export default function useDelayReset() {
  7. var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
  8. var bool = ref(false);
  9. var delay;
  10. var cancelLatest = function cancelLatest() {
  11. clearTimeout(delay);
  12. };
  13. onMounted(function () {
  14. cancelLatest();
  15. });
  16. var delaySetBool = function delaySetBool(value, callback) {
  17. cancelLatest();
  18. delay = setTimeout(function () {
  19. bool.value = value;
  20. if (callback) {
  21. callback();
  22. }
  23. }, timeout);
  24. };
  25. return [bool, delaySetBool, cancelLatest];
  26. }