UNPKG

vue-typical

Version:

Vue Animated typing in ~400 bytes 🐡 of JavaScript.

44 lines (43 loc) 1.08 kB
import { h, onMounted, ref, defineComponent } from 'vue'; import typing from './typing'; const loopedTyping = typing; export default defineComponent({ name: 'Typical', props: { steps: { type: Array, required: true, }, wrapper: { type: String, default: 'div', }, loop: { type: Number, default: 1, }, }, render() { return h(this.wrapper, { ref: 'myRef', }); }, setup: ({ steps, loop }) => { const myRef = ref(null); onMounted(() => { const dom = myRef.value; if (loop === Infinity) { typing(dom, ...steps, loopedTyping); } else if (typeof loop === 'number' && loop > 0) { typing(dom, ...Array(loop).fill(steps).flat()); } else { typing(dom, ...steps); } }); return { myRef, }; }, });