UNPKG

@cran/vue.use

Version:

Cranberry Vue Use Utilities

32 lines (31 loc) 841 B
import { ref } from "@vue/runtime-dom"; import { tryOnActivated, tryOnDeactivated, tryOnUnmounted } from "../utility/lifecycle"; export function useRepeat(setup, clear, handler, { paused = false, } = {}) { const active = ref(!paused); let frame = null; function loop(...args) { if (active.value) { handler(...args); frame = setup(loop); } } function resume() { if (!active.value) { active.value = true; frame = setup(loop); } } function pause() { active.value = false; if (null !== frame) { clear(frame); } } if (active.value) { frame = setup(loop); } tryOnUnmounted(pause); tryOnActivated(resume); tryOnDeactivated(pause); return { active, resume, pause, }; }