UNPKG

@cran/vue.use

Version:

Cranberry Vue Use Utilities

26 lines (25 loc) 699 B
import { ref } from "@vue/runtime-dom"; export function useTimeline(sequence, initial, { loop = false, }) { const container = 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, }); }