import {nextTick} from "vue"; import sleep from "./sleep"; class TutorialDriver { private readonly name: string; private readonly len: number; private idSet: Set = new Set(); private readonly hook: () => void; private flag = true; constructor(name: string, len: number, hook: () => void) { this.name = name; this.len = len; this.hook = hook; } setId(name: string, splicing: boolean = true) { const id = splicing ? `#${this.name}-${name}` : name this.idSet.add(id) if (this.idSet.size === this.len && this.flag) { this.flag = false nextTick().then(() => { sleep(200).then(() => { this.hook && this.hook() }) }) } return id; } getSize(): number { return this.idSet.size } getId(name: string) { return `#${this.name}-${name}` } } export default TutorialDriver