@cran/vue.use
Version:
Cranberry Vue Use Utilities
30 lines (29 loc) • 864 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useTimeline = void 0;
const runtime_dom_1 = require("@vue/runtime-dom");
function useTimeline(sequence, initial, { loop = false, }) {
const container = (0, runtime_dom_1.ref)(initial);
const length = sequence.length;
let index = 0;
let v = null;
function resume() {
if (loop || index < length) {
const [delay, value,] = sequence[(++index) % length];
v = setTimeout(function onNext() {
container.value = value;
resume();
}, delay);
}
}
function pause() {
if (v) {
clearTimeout(v);
--index;
v = null;
}
}
resume();
return Object.assign(container, { pause, resume, });
}
exports.useTimeline = useTimeline;