UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

37 lines (33 loc) 1.54 kB
import { mixin } from "@visactor/vutils"; import { GrammarDetector } from "./grammar-dector"; import { BaseMark } from "../mark"; class SequentialAnimate { registerAnimationSplitStrategy(strategy) { this._grammarDetector || (this._grammarDetector = new GrammarDetector(this)), this._grammarDetector.registerStrategy(strategy); } getGrammarDetector() { return this.initGrammarDetector(), this._grammarDetector; } initGrammarDetector() { this._grammarDetector || (this._grammarDetector = new GrammarDetector(this)); } _runSequentialAnimations(graphics) { this.initGrammarDetector(); const animationConfig = this.getAnimationConfig(), detectionResult = this._grammarDetector.detect(graphics, this._graphicMap), planners = this._grammarDetector.createPlanners(detectionResult, animationConfig); this._executePlanners(planners, 0); } _executePlanners(planners, index) { if (index >= planners.length) return; const planner = planners[index]; planner.execute(this._product, (() => { this._executePlanners(planners, index + 1), "exit" === planner.state && planner.graphics.forEach((g => { g.isExiting && (this._graphicMap.delete(g.context.uniqueKey), g.parent && g.parent.removeChild(g), g.release && g.release()); })); })); } } export function registerSequentialAnimate() { mixin(BaseMark, SequentialAnimate); } //# sourceMappingURL=sequential-animate.js.map