@visactor/vgrammar-core
Version:
VGrammar is a visual grammar library
110 lines (105 loc) • 5.44 kB
JavaScript
"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