UNPKG

@visactor/vgrammar-core

Version:

VGrammar is a visual grammar library

110 lines (105 loc) 5.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.ViewAnimate = void 0; const enums_1 = require("../graph/enums"); class ViewAnimate { constructor(view) { this._animations = [], this._additionalAnimateMarks = [], this.isEnabled = !0, this._onAnimationStart = event => { this._additionalAnimateMarks = this._additionalAnimateMarks.filter((mark => { var _a; return null === (_a = null == mark ? void 0 : mark.animate) || void 0 === _a ? void 0 : _a.isAnimating(); })), 0 === this._animations.length && 0 === this._additionalAnimateMarks.length && this._view.emit(enums_1.HOOK_EVENT.ALL_ANIMATION_START, {}), this._animations = this._animations.concat({ config: event.animationConfig, mark: event.mark }); }, this._onAnimationEnd = event => { this._additionalAnimateMarks = this._additionalAnimateMarks.filter((mark => { var _a; return null === (_a = null == mark ? void 0 : mark.animate) || void 0 === _a ? void 0 : _a.isAnimating(); })), this._animations = this._animations.filter((animation => animation.config !== event.animationConfig || animation.mark !== event.mark)), 0 === this._animations.length && 0 === this._additionalAnimateMarks.length && this._view.emit(enums_1.HOOK_EVENT.ALL_ANIMATION_END, {}); }, this._view = view, this._view.addEventListener(enums_1.HOOK_EVENT.ANIMATION_START, this._onAnimationStart), this._view.addEventListener(enums_1.HOOK_EVENT.ANIMATION_END, this._onAnimationEnd); } stop() { return this._view.traverseMarkTree((mark => { var _a, _b; mark.animate && (null === (_b = (_a = mark.animate).stop) || void 0 === _b || _b.call(_a)); })), this._additionalAnimateMarks.forEach((mark => { var _a, _b; mark.view && mark.animate && (null === (_b = (_a = mark.animate).stop) || void 0 === _b || _b.call(_a)); })), this._additionalAnimateMarks = [], this; } pause() { return this._view.traverseMarkTree((mark => { var _a, _b; mark.animate && (null === (_b = (_a = mark.animate).pause) || void 0 === _b || _b.call(_a)); })), this._additionalAnimateMarks.forEach((mark => { var _a, _b; mark.view && mark.animate && (null === (_b = (_a = mark.animate).pause) || void 0 === _b || _b.call(_a)); })), this; } resume() { return this._view.traverseMarkTree((mark => { var _a, _b; mark.animate && (null === (_b = (_a = mark.animate).resume) || void 0 === _b || _b.call(_a)); })), this._additionalAnimateMarks.forEach((mark => { var _a, _b; mark.view && mark.animate && (null === (_b = (_a = mark.animate).resume) || void 0 === _b || _b.call(_a)); })), this; } enable() { return this.isEnabled = !0, this._view.traverseMarkTree((mark => { var _a, _b; mark.animate && (null === (_b = (_a = mark.animate).enable) || void 0 === _b || _b.call(_a)); })), this; } disable() { return this.isEnabled = !1, this._view.traverseMarkTree((mark => { var _a, _b; mark.animate && (null === (_b = (_a = mark.animate).disable) || void 0 === _b || _b.call(_a)); })), this._additionalAnimateMarks.forEach((mark => { var _a, _b; mark.view && mark.animate && (null === (_b = (_a = mark.animate).stop) || void 0 === _b || _b.call(_a)); })), this._additionalAnimateMarks = [], this; } enableAnimationState(state) { return this._view.traverseMarkTree((mark => { var _a, _b; mark.animate && (null === (_b = (_a = mark.animate).enableAnimationState) || void 0 === _b || _b.call(_a, state)); })), this; } disableAnimationState(state) { return this._view.traverseMarkTree((mark => { var _a, _b; mark.animate && (null === (_b = (_a = mark.animate).disableAnimationState) || void 0 === _b || _b.call(_a, state)); })), this; } isAnimating() { return 0 !== this._animations.length || this._additionalAnimateMarks.some((mark => { var _a; return (null === (_a = null == mark ? void 0 : mark.animate) || void 0 === _a ? void 0 : _a.isAnimating()) || !1; })); } animate() { return this.isEnabled ? (this._view.traverseMarkTree((mark => { mark.isUpdated && mark.animate && mark.animate.animate(), mark.cleanExitElements(), mark.isUpdated = !1; }), null, !0), this) : this; } animateAddition(additionMark) { var _a; const animate = null === (_a = additionMark.animate) || void 0 === _a ? void 0 : _a.animate(); return animate && animate.isAnimating() && this._additionalAnimateMarks.push(additionMark), this; } release() { this._additionalAnimateMarks = [], this._animations = [], this._view.removeEventListener(enums_1.HOOK_EVENT.ALL_ANIMATION_START, this._onAnimationStart), this._view.removeEventListener(enums_1.HOOK_EVENT.ALL_ANIMATION_END, this._onAnimationEnd), this._view = null; } } exports.ViewAnimate = ViewAnimate; //# sourceMappingURL=animate.js.map