UNPKG

@cran/vue.use

Version:

Cranberry Vue Use Utilities

36 lines (35 loc) 1.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useRepeat = void 0; const runtime_dom_1 = require("@vue/runtime-dom"); const lifecycle_1 = require("../utility/lifecycle"); function useRepeat(setup, clear, handler, { paused = false, } = {}) { const active = (0, runtime_dom_1.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); } (0, lifecycle_1.tryOnUnmounted)(pause); (0, lifecycle_1.tryOnActivated)(resume); (0, lifecycle_1.tryOnDeactivated)(pause); return { active, resume, pause, }; } exports.useRepeat = useRepeat;