animations.mjs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548
  1. /**
  2. * @license Angular v16.2.9
  3. * (c) 2010-2022 Google LLC. https://angular.io/
  4. * License: MIT
  5. */
  6. import * as i0 from '@angular/core';
  7. import { ViewEncapsulation, Injectable, Inject, RendererFactory2, NgZone, ANIMATION_MODULE_TYPE, NgModule } from '@angular/core';
  8. export { ANIMATION_MODULE_TYPE } from '@angular/core';
  9. import { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';
  10. import { AnimationBuilder, sequence, AnimationFactory } from '@angular/animations';
  11. import * as i1 from '@angular/animations/browser';
  12. import { ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, ɵAnimationStyleNormalizer, AnimationDriver, ɵWebAnimationsDriver, ɵNoopAnimationDriver } from '@angular/animations/browser';
  13. import { DOCUMENT } from '@angular/common';
  14. class BrowserAnimationBuilder extends AnimationBuilder {
  15. constructor(rootRenderer, doc) {
  16. super();
  17. this._nextAnimationId = 0;
  18. const typeData = { id: '0', encapsulation: ViewEncapsulation.None, styles: [], data: { animation: [] } };
  19. this._renderer = rootRenderer.createRenderer(doc.body, typeData);
  20. }
  21. build(animation) {
  22. const id = this._nextAnimationId.toString();
  23. this._nextAnimationId++;
  24. const entry = Array.isArray(animation) ? sequence(animation) : animation;
  25. issueAnimationCommand(this._renderer, null, id, 'register', [entry]);
  26. return new BrowserAnimationFactory(id, this._renderer);
  27. }
  28. static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
  29. static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: BrowserAnimationBuilder }); }
  30. }
  31. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: BrowserAnimationBuilder, decorators: [{
  32. type: Injectable
  33. }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: undefined, decorators: [{
  34. type: Inject,
  35. args: [DOCUMENT]
  36. }] }]; } });
  37. class BrowserAnimationFactory extends AnimationFactory {
  38. constructor(_id, _renderer) {
  39. super();
  40. this._id = _id;
  41. this._renderer = _renderer;
  42. }
  43. create(element, options) {
  44. return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);
  45. }
  46. }
  47. class RendererAnimationPlayer {
  48. constructor(id, element, options, _renderer) {
  49. this.id = id;
  50. this.element = element;
  51. this._renderer = _renderer;
  52. this.parentPlayer = null;
  53. this._started = false;
  54. this.totalTime = 0;
  55. this._command('create', options);
  56. }
  57. _listen(eventName, callback) {
  58. return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);
  59. }
  60. _command(command, ...args) {
  61. return issueAnimationCommand(this._renderer, this.element, this.id, command, args);
  62. }
  63. onDone(fn) {
  64. this._listen('done', fn);
  65. }
  66. onStart(fn) {
  67. this._listen('start', fn);
  68. }
  69. onDestroy(fn) {
  70. this._listen('destroy', fn);
  71. }
  72. init() {
  73. this._command('init');
  74. }
  75. hasStarted() {
  76. return this._started;
  77. }
  78. play() {
  79. this._command('play');
  80. this._started = true;
  81. }
  82. pause() {
  83. this._command('pause');
  84. }
  85. restart() {
  86. this._command('restart');
  87. }
  88. finish() {
  89. this._command('finish');
  90. }
  91. destroy() {
  92. this._command('destroy');
  93. }
  94. reset() {
  95. this._command('reset');
  96. this._started = false;
  97. }
  98. setPosition(p) {
  99. this._command('setPosition', p);
  100. }
  101. getPosition() {
  102. return this._renderer.engine.players[+this.id]?.getPosition() ?? 0;
  103. }
  104. }
  105. function issueAnimationCommand(renderer, element, id, command, args) {
  106. return renderer.setProperty(element, `@@${id}:${command}`, args);
  107. }
  108. const ANIMATION_PREFIX = '@';
  109. const DISABLE_ANIMATIONS_FLAG = '@.disabled';
  110. class AnimationRendererFactory {
  111. constructor(delegate, engine, _zone) {
  112. this.delegate = delegate;
  113. this.engine = engine;
  114. this._zone = _zone;
  115. this._currentId = 0;
  116. this._microtaskId = 1;
  117. this._animationCallbacksBuffer = [];
  118. this._rendererCache = new Map();
  119. this._cdRecurDepth = 0;
  120. engine.onRemovalComplete = (element, delegate) => {
  121. // Note: if a component element has a leave animation, and a host leave animation,
  122. // the view engine will call `removeChild` for the parent
  123. // component renderer as well as for the child component renderer.
  124. // Therefore, we need to check if we already removed the element.
  125. const parentNode = delegate?.parentNode(element);
  126. if (parentNode) {
  127. delegate.removeChild(parentNode, element);
  128. }
  129. };
  130. }
  131. createRenderer(hostElement, type) {
  132. const EMPTY_NAMESPACE_ID = '';
  133. // cache the delegates to find out which cached delegate can
  134. // be used by which cached renderer
  135. const delegate = this.delegate.createRenderer(hostElement, type);
  136. if (!hostElement || !type || !type.data || !type.data['animation']) {
  137. let renderer = this._rendererCache.get(delegate);
  138. if (!renderer) {
  139. // Ensure that the renderer is removed from the cache on destroy
  140. // since it may contain references to detached DOM nodes.
  141. const onRendererDestroy = () => this._rendererCache.delete(delegate);
  142. renderer =
  143. new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine, onRendererDestroy);
  144. // only cache this result when the base renderer is used
  145. this._rendererCache.set(delegate, renderer);
  146. }
  147. return renderer;
  148. }
  149. const componentId = type.id;
  150. const namespaceId = type.id + '-' + this._currentId;
  151. this._currentId++;
  152. this.engine.register(namespaceId, hostElement);
  153. const registerTrigger = (trigger) => {
  154. if (Array.isArray(trigger)) {
  155. trigger.forEach(registerTrigger);
  156. }
  157. else {
  158. this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);
  159. }
  160. };
  161. const animationTriggers = type.data['animation'];
  162. animationTriggers.forEach(registerTrigger);
  163. return new AnimationRenderer(this, namespaceId, delegate, this.engine);
  164. }
  165. begin() {
  166. this._cdRecurDepth++;
  167. if (this.delegate.begin) {
  168. this.delegate.begin();
  169. }
  170. }
  171. _scheduleCountTask() {
  172. queueMicrotask(() => {
  173. this._microtaskId++;
  174. });
  175. }
  176. /** @internal */
  177. scheduleListenerCallback(count, fn, data) {
  178. if (count >= 0 && count < this._microtaskId) {
  179. this._zone.run(() => fn(data));
  180. return;
  181. }
  182. if (this._animationCallbacksBuffer.length == 0) {
  183. queueMicrotask(() => {
  184. this._zone.run(() => {
  185. this._animationCallbacksBuffer.forEach(tuple => {
  186. const [fn, data] = tuple;
  187. fn(data);
  188. });
  189. this._animationCallbacksBuffer = [];
  190. });
  191. });
  192. }
  193. this._animationCallbacksBuffer.push([fn, data]);
  194. }
  195. end() {
  196. this._cdRecurDepth--;
  197. // this is to prevent animations from running twice when an inner
  198. // component does CD when a parent component instead has inserted it
  199. if (this._cdRecurDepth == 0) {
  200. this._zone.runOutsideAngular(() => {
  201. this._scheduleCountTask();
  202. this.engine.flush(this._microtaskId);
  203. });
  204. }
  205. if (this.delegate.end) {
  206. this.delegate.end();
  207. }
  208. }
  209. whenRenderingDone() {
  210. return this.engine.whenRenderingDone();
  211. }
  212. static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AnimationRendererFactory, deps: [{ token: i0.RendererFactory2 }, { token: i1.ɵAnimationEngine }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
  213. static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AnimationRendererFactory }); }
  214. }
  215. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AnimationRendererFactory, decorators: [{
  216. type: Injectable
  217. }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: i1.ɵAnimationEngine }, { type: i0.NgZone }]; } });
  218. class BaseAnimationRenderer {
  219. constructor(namespaceId, delegate, engine, _onDestroy) {
  220. this.namespaceId = namespaceId;
  221. this.delegate = delegate;
  222. this.engine = engine;
  223. this._onDestroy = _onDestroy;
  224. }
  225. get data() {
  226. return this.delegate.data;
  227. }
  228. destroyNode(node) {
  229. this.delegate.destroyNode?.(node);
  230. }
  231. destroy() {
  232. this.engine.destroy(this.namespaceId, this.delegate);
  233. this.engine.afterFlushAnimationsDone(() => {
  234. // Call the renderer destroy method after the animations has finished as otherwise
  235. // styles will be removed too early which will cause an unstyled animation.
  236. queueMicrotask(() => {
  237. this.delegate.destroy();
  238. });
  239. });
  240. this._onDestroy?.();
  241. }
  242. createElement(name, namespace) {
  243. return this.delegate.createElement(name, namespace);
  244. }
  245. createComment(value) {
  246. return this.delegate.createComment(value);
  247. }
  248. createText(value) {
  249. return this.delegate.createText(value);
  250. }
  251. appendChild(parent, newChild) {
  252. this.delegate.appendChild(parent, newChild);
  253. this.engine.onInsert(this.namespaceId, newChild, parent, false);
  254. }
  255. insertBefore(parent, newChild, refChild, isMove = true) {
  256. this.delegate.insertBefore(parent, newChild, refChild);
  257. // If `isMove` true than we should animate this insert.
  258. this.engine.onInsert(this.namespaceId, newChild, parent, isMove);
  259. }
  260. removeChild(parent, oldChild, isHostElement) {
  261. this.engine.onRemove(this.namespaceId, oldChild, this.delegate);
  262. }
  263. selectRootElement(selectorOrNode, preserveContent) {
  264. return this.delegate.selectRootElement(selectorOrNode, preserveContent);
  265. }
  266. parentNode(node) {
  267. return this.delegate.parentNode(node);
  268. }
  269. nextSibling(node) {
  270. return this.delegate.nextSibling(node);
  271. }
  272. setAttribute(el, name, value, namespace) {
  273. this.delegate.setAttribute(el, name, value, namespace);
  274. }
  275. removeAttribute(el, name, namespace) {
  276. this.delegate.removeAttribute(el, name, namespace);
  277. }
  278. addClass(el, name) {
  279. this.delegate.addClass(el, name);
  280. }
  281. removeClass(el, name) {
  282. this.delegate.removeClass(el, name);
  283. }
  284. setStyle(el, style, value, flags) {
  285. this.delegate.setStyle(el, style, value, flags);
  286. }
  287. removeStyle(el, style, flags) {
  288. this.delegate.removeStyle(el, style, flags);
  289. }
  290. setProperty(el, name, value) {
  291. if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {
  292. this.disableAnimations(el, !!value);
  293. }
  294. else {
  295. this.delegate.setProperty(el, name, value);
  296. }
  297. }
  298. setValue(node, value) {
  299. this.delegate.setValue(node, value);
  300. }
  301. listen(target, eventName, callback) {
  302. return this.delegate.listen(target, eventName, callback);
  303. }
  304. disableAnimations(element, value) {
  305. this.engine.disableAnimations(element, value);
  306. }
  307. }
  308. class AnimationRenderer extends BaseAnimationRenderer {
  309. constructor(factory, namespaceId, delegate, engine, onDestroy) {
  310. super(namespaceId, delegate, engine, onDestroy);
  311. this.factory = factory;
  312. this.namespaceId = namespaceId;
  313. }
  314. setProperty(el, name, value) {
  315. if (name.charAt(0) == ANIMATION_PREFIX) {
  316. if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {
  317. value = value === undefined ? true : !!value;
  318. this.disableAnimations(el, value);
  319. }
  320. else {
  321. this.engine.process(this.namespaceId, el, name.slice(1), value);
  322. }
  323. }
  324. else {
  325. this.delegate.setProperty(el, name, value);
  326. }
  327. }
  328. listen(target, eventName, callback) {
  329. if (eventName.charAt(0) == ANIMATION_PREFIX) {
  330. const element = resolveElementFromTarget(target);
  331. let name = eventName.slice(1);
  332. let phase = '';
  333. // @listener.phase is for trigger animation callbacks
  334. // @@listener is for animation builder callbacks
  335. if (name.charAt(0) != ANIMATION_PREFIX) {
  336. [name, phase] = parseTriggerCallbackName(name);
  337. }
  338. return this.engine.listen(this.namespaceId, element, name, phase, event => {
  339. const countId = event['_data'] || -1;
  340. this.factory.scheduleListenerCallback(countId, callback, event);
  341. });
  342. }
  343. return this.delegate.listen(target, eventName, callback);
  344. }
  345. }
  346. function resolveElementFromTarget(target) {
  347. switch (target) {
  348. case 'body':
  349. return document.body;
  350. case 'document':
  351. return document;
  352. case 'window':
  353. return window;
  354. default:
  355. return target;
  356. }
  357. }
  358. function parseTriggerCallbackName(triggerName) {
  359. const dotIndex = triggerName.indexOf('.');
  360. const trigger = triggerName.substring(0, dotIndex);
  361. const phase = triggerName.slice(dotIndex + 1);
  362. return [trigger, phase];
  363. }
  364. class InjectableAnimationEngine extends ɵAnimationEngine {
  365. // The `ApplicationRef` is injected here explicitly to force the dependency ordering.
  366. // Since the `ApplicationRef` should be created earlier before the `AnimationEngine`, they
  367. // both have `ngOnDestroy` hooks and `flush()` must be called after all views are destroyed.
  368. constructor(doc, driver, normalizer, appRef) {
  369. super(doc.body, driver, normalizer);
  370. }
  371. ngOnDestroy() {
  372. this.flush();
  373. }
  374. static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
  375. static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InjectableAnimationEngine }); }
  376. }
  377. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: InjectableAnimationEngine, decorators: [{
  378. type: Injectable
  379. }], ctorParameters: function () { return [{ type: undefined, decorators: [{
  380. type: Inject,
  381. args: [DOCUMENT]
  382. }] }, { type: i1.AnimationDriver }, { type: i1.ɵAnimationStyleNormalizer }, { type: i0.ApplicationRef }]; } });
  383. function instantiateDefaultStyleNormalizer() {
  384. return new ɵWebAnimationsStyleNormalizer();
  385. }
  386. function instantiateRendererFactory(renderer, engine, zone) {
  387. return new AnimationRendererFactory(renderer, engine, zone);
  388. }
  389. const SHARED_ANIMATION_PROVIDERS = [
  390. { provide: AnimationBuilder, useClass: BrowserAnimationBuilder },
  391. { provide: ɵAnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer },
  392. { provide: ɵAnimationEngine, useClass: InjectableAnimationEngine }, {
  393. provide: RendererFactory2,
  394. useFactory: instantiateRendererFactory,
  395. deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]
  396. }
  397. ];
  398. /**
  399. * Separate providers from the actual module so that we can do a local modification in Google3 to
  400. * include them in the BrowserModule.
  401. */
  402. const BROWSER_ANIMATIONS_PROVIDERS = [
  403. { provide: AnimationDriver, useFactory: () => new ɵWebAnimationsDriver() },
  404. { provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations' }, ...SHARED_ANIMATION_PROVIDERS
  405. ];
  406. /**
  407. * Separate providers from the actual module so that we can do a local modification in Google3 to
  408. * include them in the BrowserTestingModule.
  409. */
  410. const BROWSER_NOOP_ANIMATIONS_PROVIDERS = [
  411. { provide: AnimationDriver, useClass: ɵNoopAnimationDriver },
  412. { provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations' }, ...SHARED_ANIMATION_PROVIDERS
  413. ];
  414. /**
  415. * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)
  416. * for use with animations. See [Animations](guide/animations).
  417. * @publicApi
  418. */
  419. class BrowserAnimationsModule {
  420. /**
  421. * Configures the module based on the specified object.
  422. *
  423. * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.
  424. * @see {@link BrowserAnimationsModuleConfig}
  425. *
  426. * @usageNotes
  427. * When registering the `BrowserAnimationsModule`, you can use the `withConfig`
  428. * function as follows:
  429. * ```
  430. * @NgModule({
  431. * imports: [BrowserAnimationsModule.withConfig(config)]
  432. * })
  433. * class MyNgModule {}
  434. * ```
  435. */
  436. static withConfig(config) {
  437. return {
  438. ngModule: BrowserAnimationsModule,
  439. providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS :
  440. BROWSER_ANIMATIONS_PROVIDERS
  441. };
  442. }
  443. static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
  444. static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.9", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] }); }
  445. static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] }); }
  446. }
  447. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: BrowserAnimationsModule, decorators: [{
  448. type: NgModule,
  449. args: [{
  450. exports: [BrowserModule],
  451. providers: BROWSER_ANIMATIONS_PROVIDERS,
  452. }]
  453. }] });
  454. /**
  455. * Returns the set of [dependency-injection providers](guide/glossary#provider)
  456. * to enable animations in an application. See [animations guide](guide/animations)
  457. * to learn more about animations in Angular.
  458. *
  459. * @usageNotes
  460. *
  461. * The function is useful when you want to enable animations in an application
  462. * bootstrapped using the `bootstrapApplication` function. In this scenario there
  463. * is no need to import the `BrowserAnimationsModule` NgModule at all, just add
  464. * providers returned by this function to the `providers` list as show below.
  465. *
  466. * ```typescript
  467. * bootstrapApplication(RootComponent, {
  468. * providers: [
  469. * provideAnimations()
  470. * ]
  471. * });
  472. * ```
  473. *
  474. * @publicApi
  475. */
  476. function provideAnimations() {
  477. // Return a copy to prevent changes to the original array in case any in-place
  478. // alterations are performed to the `provideAnimations` call results in app code.
  479. return [...BROWSER_ANIMATIONS_PROVIDERS];
  480. }
  481. /**
  482. * A null player that must be imported to allow disabling of animations.
  483. * @publicApi
  484. */
  485. class NoopAnimationsModule {
  486. static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
  487. static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.9", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] }); }
  488. static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] }); }
  489. }
  490. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: NoopAnimationsModule, decorators: [{
  491. type: NgModule,
  492. args: [{
  493. exports: [BrowserModule],
  494. providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,
  495. }]
  496. }] });
  497. /**
  498. * Returns the set of [dependency-injection providers](guide/glossary#provider)
  499. * to disable animations in an application. See [animations guide](guide/animations)
  500. * to learn more about animations in Angular.
  501. *
  502. * @usageNotes
  503. *
  504. * The function is useful when you want to bootstrap an application using
  505. * the `bootstrapApplication` function, but you need to disable animations
  506. * (for example, when running tests).
  507. *
  508. * ```typescript
  509. * bootstrapApplication(RootComponent, {
  510. * providers: [
  511. * provideNoopAnimations()
  512. * ]
  513. * });
  514. * ```
  515. *
  516. * @publicApi
  517. */
  518. function provideNoopAnimations() {
  519. // Return a copy to prevent changes to the original array in case any in-place
  520. // alterations are performed to the `provideNoopAnimations` call results in app code.
  521. return [...BROWSER_NOOP_ANIMATIONS_PROVIDERS];
  522. }
  523. /**
  524. * @module
  525. * @description
  526. * Entry point for all animation APIs of the animation browser package.
  527. */
  528. /**
  529. * @module
  530. * @description
  531. * Entry point for all public APIs of this package.
  532. */
  533. // This file is not used to build this module. It is only used during editing
  534. /**
  535. * Generated bundle index. Do not edit.
  536. */
  537. export { BrowserAnimationsModule, NoopAnimationsModule, provideAnimations, provideNoopAnimations, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, BrowserAnimationFactory as ɵBrowserAnimationFactory, InjectableAnimationEngine as ɵInjectableAnimationEngine };
  538. //# sourceMappingURL=animations.mjs.map