import { DOCUMENT } from "./chunk-OSQBUYO6.js"; import { ANIMATION_MODULE_TYPE, Inject, Injectable, RendererFactory2, RuntimeError, ViewEncapsulation$1, inject, setClassMetadata, ɵɵdefineInjectable, ɵɵinject } from "./chunk-FGESKT7O.js"; // node_modules/@angular/animations/fesm2022/animations.mjs var AUTO_STYLE = "*"; function trigger(name, definitions) { return { type: 7, name, definitions, options: {} }; } function animate(timings, styles = null) { return { type: 4, styles, timings }; } function group(steps, options = null) { return { type: 3, steps, options }; } function sequence(steps, options = null) { return { type: 2, steps, options }; } function style(tokens) { return { type: 6, styles: tokens, offset: null }; } function state(name, styles, options) { return { type: 0, name, styles, options }; } function keyframes(steps) { return { type: 5, steps }; } function transition(stateChangeExpr, steps, options = null) { return { type: 1, expr: stateChangeExpr, animation: steps, options }; } function animation(steps, options = null) { return { type: 8, animation: steps, options }; } function animateChild(options = null) { return { type: 9, options }; } function useAnimation(animation2, options = null) { return { type: 10, animation: animation2, options }; } function query(selector, animation2, options = null) { return { type: 11, selector, animation: animation2, options }; } function stagger(timings, animation2) { return { type: 12, timings, animation: animation2 }; } var _AnimationBuilder = class _AnimationBuilder { }; _AnimationBuilder.ɵfac = function AnimationBuilder_Factory(t) { return new (t || _AnimationBuilder)(); }; _AnimationBuilder.ɵprov = ɵɵdefineInjectable({ token: _AnimationBuilder, factory: () => (() => inject(BrowserAnimationBuilder))(), providedIn: "root" }); var AnimationBuilder = _AnimationBuilder; (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(AnimationBuilder, [{ type: Injectable, args: [{ providedIn: "root", useFactory: () => inject(BrowserAnimationBuilder) }] }], null, null); })(); var AnimationFactory = class { }; var _BrowserAnimationBuilder = class _BrowserAnimationBuilder extends AnimationBuilder { constructor(rootRenderer, doc) { super(); this.animationModuleType = inject(ANIMATION_MODULE_TYPE, { optional: true }); this._nextAnimationId = 0; const typeData = { id: "0", encapsulation: ViewEncapsulation$1.None, styles: [], data: { animation: [] } }; this._renderer = rootRenderer.createRenderer(doc.body, typeData); if (this.animationModuleType === null && !isAnimationRenderer(this._renderer)) { throw new RuntimeError(3600, (typeof ngDevMode === "undefined" || ngDevMode) && "Angular detected that the `AnimationBuilder` was injected, but animation support was not enabled. Please make sure that you enable animations in your application by calling `provideAnimations()` or `provideAnimationsAsync()` function."); } } build(animation2) { const id = this._nextAnimationId; this._nextAnimationId++; const entry = Array.isArray(animation2) ? sequence(animation2) : animation2; issueAnimationCommand(this._renderer, null, id, "register", [entry]); return new BrowserAnimationFactory(id, this._renderer); } }; _BrowserAnimationBuilder.ɵfac = function BrowserAnimationBuilder_Factory(t) { return new (t || _BrowserAnimationBuilder)(ɵɵinject(RendererFactory2), ɵɵinject(DOCUMENT)); }; _BrowserAnimationBuilder.ɵprov = ɵɵdefineInjectable({ token: _BrowserAnimationBuilder, factory: _BrowserAnimationBuilder.ɵfac, providedIn: "root" }); var BrowserAnimationBuilder = _BrowserAnimationBuilder; (() => { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(BrowserAnimationBuilder, [{ type: Injectable, args: [{ providedIn: "root" }] }], () => [{ type: RendererFactory2 }, { type: Document, decorators: [{ type: Inject, args: [DOCUMENT] }] }], null); })(); var BrowserAnimationFactory = class extends AnimationFactory { constructor(_id, _renderer) { super(); this._id = _id; this._renderer = _renderer; } create(element, options) { return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer); } }; var RendererAnimationPlayer = class { constructor(id, element, options, _renderer) { this.id = id; this.element = element; this._renderer = _renderer; this.parentPlayer = null; this._started = false; this.totalTime = 0; this._command("create", options); } _listen(eventName, callback) { return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback); } _command(command, ...args) { issueAnimationCommand(this._renderer, this.element, this.id, command, args); } onDone(fn) { this._listen("done", fn); } onStart(fn) { this._listen("start", fn); } onDestroy(fn) { this._listen("destroy", fn); } init() { this._command("init"); } hasStarted() { return this._started; } play() { this._command("play"); this._started = true; } pause() { this._command("pause"); } restart() { this._command("restart"); } finish() { this._command("finish"); } destroy() { this._command("destroy"); } reset() { this._command("reset"); this._started = false; } setPosition(p) { this._command("setPosition", p); } getPosition() { return unwrapAnimationRenderer(this._renderer)?.engine?.players[this.id]?.getPosition() ?? 0; } }; function issueAnimationCommand(renderer, element, id, command, args) { renderer.setProperty(element, `@@${id}:${command}`, args); } function unwrapAnimationRenderer(renderer) { const type = renderer.ɵtype; if (type === 0) { return renderer; } else if (type === 1) { return renderer.animationRenderer; } return null; } function isAnimationRenderer(renderer) { const type = renderer.ɵtype; return type === 0 || type === 1; } var NoopAnimationPlayer = class { constructor(duration = 0, delay = 0) { this._onDoneFns = []; this._onStartFns = []; this._onDestroyFns = []; this._originalOnDoneFns = []; this._originalOnStartFns = []; this._started = false; this._destroyed = false; this._finished = false; this._position = 0; this.parentPlayer = null; 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; } /** @internal */ 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; } /** @internal */ triggerCallback(phaseName) { const methods = phaseName == "start" ? this._onStartFns : this._onDoneFns; methods.forEach((fn) => fn()); methods.length = 0; } }; var AnimationGroupPlayer = class { constructor(_players) { this._onDoneFns = []; this._onStartFns = []; this._finished = false; this._started = false; this._destroyed = false; this._onDestroyFns = []; this.parentPlayer = null; this.totalTime = 0; 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(); } }); } /** @internal */ triggerCallback(phaseName) { const methods = phaseName == "start" ? this._onStartFns : this._onDoneFns; methods.forEach((fn) => fn()); methods.length = 0; } }; var ɵPRE_STYLE = "!"; export { AUTO_STYLE, trigger, animate, group, sequence, style, state, keyframes, transition, animation, animateChild, useAnimation, query, stagger, AnimationBuilder, AnimationFactory, BrowserAnimationBuilder, NoopAnimationPlayer, AnimationGroupPlayer, ɵPRE_STYLE }; /*! Bundled license information: @angular/animations/fesm2022/animations.mjs: (** * @license Angular v17.0.7 * (c) 2010-2022 Google LLC. https://angular.io/ * License: MIT *) */ //# sourceMappingURL=chunk-KI2JSLP6.js.map