UNPKG

@angular/animations

Version:

Angular - animations integration with web-animations

339 lines (333 loc) 8.45 kB
/** * @license Angular v21.0.8 * (c) 2010-2025 Google LLC. https://angular.dev/ * License: MIT */ var AnimationMetadataType; (function (AnimationMetadataType) { AnimationMetadataType[AnimationMetadataType["State"] = 0] = "State"; AnimationMetadataType[AnimationMetadataType["Transition"] = 1] = "Transition"; AnimationMetadataType[AnimationMetadataType["Sequence"] = 2] = "Sequence"; AnimationMetadataType[AnimationMetadataType["Group"] = 3] = "Group"; AnimationMetadataType[AnimationMetadataType["Animate"] = 4] = "Animate"; AnimationMetadataType[AnimationMetadataType["Keyframes"] = 5] = "Keyframes"; AnimationMetadataType[AnimationMetadataType["Style"] = 6] = "Style"; AnimationMetadataType[AnimationMetadataType["Trigger"] = 7] = "Trigger"; AnimationMetadataType[AnimationMetadataType["Reference"] = 8] = "Reference"; AnimationMetadataType[AnimationMetadataType["AnimateChild"] = 9] = "AnimateChild"; AnimationMetadataType[AnimationMetadataType["AnimateRef"] = 10] = "AnimateRef"; AnimationMetadataType[AnimationMetadataType["Query"] = 11] = "Query"; AnimationMetadataType[AnimationMetadataType["Stagger"] = 12] = "Stagger"; })(AnimationMetadataType || (AnimationMetadataType = {})); const AUTO_STYLE = '*'; function trigger(name, definitions) { return { type: AnimationMetadataType.Trigger, name, definitions, options: {} }; } function animate(timings, styles = null) { return { type: AnimationMetadataType.Animate, styles, timings }; } function group(steps, options = null) { return { type: AnimationMetadataType.Group, steps, options }; } function sequence(steps, options = null) { return { type: AnimationMetadataType.Sequence, steps, options }; } function style(tokens) { return { type: AnimationMetadataType.Style, styles: tokens, offset: null }; } function state(name, styles, options) { return { type: AnimationMetadataType.State, name, styles, options }; } function keyframes(steps) { return { type: AnimationMetadataType.Keyframes, steps }; } function transition(stateChangeExpr, steps, options = null) { return { type: AnimationMetadataType.Transition, expr: stateChangeExpr, animation: steps, options }; } function animation(steps, options = null) { return { type: AnimationMetadataType.Reference, animation: steps, options }; } function animateChild(options = null) { return { type: AnimationMetadataType.AnimateChild, options }; } function useAnimation(animation, options = null) { return { type: AnimationMetadataType.AnimateRef, animation, options }; } function query(selector, animation, options = null) { return { type: AnimationMetadataType.Query, selector, animation, options }; } function stagger(timings, animation) { return { type: AnimationMetadataType.Stagger, timings, animation }; } class NoopAnimationPlayer { _onDoneFns = []; _onStartFns = []; _onDestroyFns = []; _originalOnDoneFns = []; _originalOnStartFns = []; _started = false; _destroyed = false; _finished = false; _position = 0; parentPlayer = null; totalTime; constructor(duration = 0, delay = 0) { this.totalTime = duration + delay; } _onFinish() { if (!this._finished) { this._finished = true; this._onDoneFns.forEach(fn => fn()); this._onDoneFns = []; } } onStart(fn) { this._originalOnStartFns.push(fn); this._onStartFns.push(fn); } onDone(fn) { this._originalOnDoneFns.push(fn); this._onDoneFns.push(fn); } onDestroy(fn) { this._onDestroyFns.push(fn); } hasStarted() { return this._started; } init() {} play() { if (!this.hasStarted()) { this._onStart(); this.triggerMicrotask(); } this._started = true; } triggerMicrotask() { queueMicrotask(() => this._onFinish()); } _onStart() { this._onStartFns.forEach(fn => fn()); this._onStartFns = []; } pause() {} restart() {} finish() { this._onFinish(); } destroy() { if (!this._destroyed) { this._destroyed = true; if (!this.hasStarted()) { this._onStart(); } this.finish(); this._onDestroyFns.forEach(fn => fn()); this._onDestroyFns = []; } } reset() { this._started = false; this._finished = false; this._onStartFns = this._originalOnStartFns; this._onDoneFns = this._originalOnDoneFns; } setPosition(position) { this._position = this.totalTime ? position * this.totalTime : 1; } getPosition() { return this.totalTime ? this._position / this.totalTime : 1; } triggerCallback(phaseName) { const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns; methods.forEach(fn => fn()); methods.length = 0; } } class AnimationGroupPlayer { _onDoneFns = []; _onStartFns = []; _finished = false; _started = false; _destroyed = false; _onDestroyFns = []; parentPlayer = null; totalTime = 0; players; constructor(_players) { this.players = _players; let doneCount = 0; let destroyCount = 0; let startCount = 0; const total = this.players.length; if (total == 0) { queueMicrotask(() => this._onFinish()); } else { this.players.forEach(player => { player.onDone(() => { if (++doneCount == total) { this._onFinish(); } }); player.onDestroy(() => { if (++destroyCount == total) { this._onDestroy(); } }); player.onStart(() => { if (++startCount == total) { this._onStart(); } }); }); } this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0); } _onFinish() { if (!this._finished) { this._finished = true; this._onDoneFns.forEach(fn => fn()); this._onDoneFns = []; } } init() { this.players.forEach(player => player.init()); } onStart(fn) { this._onStartFns.push(fn); } _onStart() { if (!this.hasStarted()) { this._started = true; this._onStartFns.forEach(fn => fn()); this._onStartFns = []; } } onDone(fn) { this._onDoneFns.push(fn); } onDestroy(fn) { this._onDestroyFns.push(fn); } hasStarted() { return this._started; } play() { if (!this.parentPlayer) { this.init(); } this._onStart(); this.players.forEach(player => player.play()); } pause() { this.players.forEach(player => player.pause()); } restart() { this.players.forEach(player => player.restart()); } finish() { this._onFinish(); this.players.forEach(player => player.finish()); } destroy() { this._onDestroy(); } _onDestroy() { if (!this._destroyed) { this._destroyed = true; this._onFinish(); this.players.forEach(player => player.destroy()); this._onDestroyFns.forEach(fn => fn()); this._onDestroyFns = []; } } reset() { this.players.forEach(player => player.reset()); this._destroyed = false; this._finished = false; this._started = false; } setPosition(p) { const timeAtPosition = p * this.totalTime; this.players.forEach(player => { const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1; player.setPosition(position); }); } getPosition() { const longestPlayer = this.players.reduce((longestSoFar, player) => { const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime; return newPlayerIsLongest ? player : longestSoFar; }, null); return longestPlayer != null ? longestPlayer.getPosition() : 0; } beforeDestroy() { this.players.forEach(player => { if (player.beforeDestroy) { player.beforeDestroy(); } }); } triggerCallback(phaseName) { const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns; methods.forEach(fn => fn()); methods.length = 0; } } const ɵPRE_STYLE = '!'; export { AUTO_STYLE, AnimationGroupPlayer, AnimationMetadataType, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, ɵPRE_STYLE }; //# sourceMappingURL=_private_export-chunk.mjs.map