@cran/vue.use
Version:
Cranberry Vue Use Utilities
36 lines (35 loc) • 1.01 kB
JavaScript
;
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;