animations.js 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395
  1. /**
  2. * @license Angular v8.1.0
  3. * (c) 2010-2019 Google LLC. https://angular.io/
  4. * License: MIT
  5. */
  6. /**
  7. * @fileoverview added by tsickle
  8. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  9. */
  10. /**
  11. * An injectable service that produces an animation sequence programmatically within an
  12. * Angular component or directive.
  13. * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.
  14. *
  15. * \@usageNotes
  16. *
  17. * To use this service, add it to your component or directive as a dependency.
  18. * The service is instantiated along with your component.
  19. *
  20. * Apps do not typically need to create their own animation players, but if you
  21. * do need to, follow these steps:
  22. *
  23. * 1. Use the `build()` method to create a programmatic animation using the
  24. * `animate()` function. The method returns an `AnimationFactory` instance.
  25. *
  26. * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.
  27. *
  28. * 3. Use the player object to control the animation programmatically.
  29. *
  30. * For example:
  31. *
  32. * ```ts
  33. * // import the service from BrowserAnimationsModule
  34. * import {AnimationBuilder} from '\@angular/animations';
  35. * // require the service as a dependency
  36. * class MyCmp {
  37. * constructor(private _builder: AnimationBuilder) {}
  38. *
  39. * makeAnimation(element: any) {
  40. * // first define a reusable animation
  41. * const myAnimation = this._builder.build([
  42. * style({ width: 0 }),
  43. * animate(1000, style({ width: '100px' }))
  44. * ]);
  45. *
  46. * // use the returned factory object to create a player
  47. * const player = myAnimation.create(element);
  48. *
  49. * player.play();
  50. * }
  51. * }
  52. * ```
  53. *
  54. * \@publicApi
  55. * @abstract
  56. */
  57. class AnimationBuilder {
  58. }
  59. /**
  60. * A factory object returned from the `AnimationBuilder`.`build()` method.
  61. *
  62. * \@publicApi
  63. * @abstract
  64. */
  65. class AnimationFactory {
  66. }
  67. /**
  68. * @fileoverview added by tsickle
  69. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  70. */
  71. /**
  72. * Specifies automatic styling.
  73. *
  74. * \@publicApi
  75. * @type {?}
  76. */
  77. const AUTO_STYLE = '*';
  78. /**
  79. * Creates a named animation trigger, containing a list of `state()`
  80. * and `transition()` entries to be evaluated when the expression
  81. * bound to the trigger changes.
  82. *
  83. * \@usageNotes
  84. * Define an animation trigger in the `animations` section of `\@Component` metadata.
  85. * In the template, reference the trigger by name and bind it to a trigger expression that
  86. * evaluates to a defined animation state, using the following format:
  87. *
  88. * `[\@triggerName]="expression"`
  89. *
  90. * Animation trigger bindings convert all values to strings, and then match the
  91. * previous and current values against any linked transitions.
  92. * Booleans can be specified as `1` or `true` and `0` or `false`.
  93. *
  94. * ### Usage Example
  95. *
  96. * The following example creates an animation trigger reference based on the provided
  97. * name value.
  98. * The provided animation value is expected to be an array consisting of state and
  99. * transition declarations.
  100. *
  101. * ```typescript
  102. * \@Component({
  103. * selector: "my-component",
  104. * templateUrl: "my-component-tpl.html",
  105. * animations: [
  106. * trigger("myAnimationTrigger", [
  107. * state(...),
  108. * state(...),
  109. * transition(...),
  110. * transition(...)
  111. * ])
  112. * ]
  113. * })
  114. * class MyComponent {
  115. * myStatusExp = "something";
  116. * }
  117. * ```
  118. *
  119. * The template associated with this component makes use of the defined trigger
  120. * by binding to an element within its template code.
  121. *
  122. * ```html
  123. * <!-- somewhere inside of my-component-tpl.html -->
  124. * <div [\@myAnimationTrigger]="myStatusExp">...</div>
  125. * ```
  126. *
  127. * ### Using an inline function
  128. * The `transition` animation method also supports reading an inline function which can decide
  129. * if its associated animation should be run.
  130. *
  131. * ```typescript
  132. * // this method is run each time the `myAnimationTrigger` trigger value changes.
  133. * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:
  134. * string]: any}): boolean {
  135. * // notice that `element` and `params` are also available here
  136. * return toState == 'yes-please-animate';
  137. * }
  138. * /
  139. * selector: 'my-component',
  140. * templateUrl: 'my-component-tpl.html',
  141. * animations: [
  142. * trigger('myAnimationTrigger', [
  143. * transition(myInlineMatcherFn, [
  144. * // the animation sequence code
  145. * ]),
  146. * ])
  147. * ]
  148. * })
  149. * class MyComponent {
  150. * myStatusExp = "yes-please-animate";
  151. * }
  152. * ```
  153. *
  154. * ### Disabling Animations
  155. * When true, the special animation control binding `\@.disabled` binding prevents
  156. * all animations from rendering.
  157. * Place the `\@.disabled` binding on an element to disable
  158. * animations on the element itself, as well as any inner animation triggers
  159. * within the element.
  160. *
  161. * The following example shows how to use this feature:
  162. *
  163. * ```typescript /
  164. * selector: 'my-component',
  165. * template: `
  166. * <div [\@.disabled]="isDisabled">
  167. * <div [\@childAnimation]="exp"></div>
  168. * </div>
  169. * `,
  170. * animations: [
  171. * trigger("childAnimation", [
  172. * // ...
  173. * ])
  174. * ]
  175. * })
  176. * class MyComponent {
  177. * isDisabled = true;
  178. * exp = '...';
  179. * }
  180. * ```
  181. *
  182. * When `\@.disabled` is true, it prevents the `\@childAnimation` trigger from animating,
  183. * along with any inner animations.
  184. *
  185. * ### Disable animations application-wide
  186. * When an area of the template is set to have animations disabled,
  187. * **all** inner components have their animations disabled as well.
  188. * This means that you can disable all animations for an app
  189. * by placing a host binding set on `\@.disabled` on the topmost Angular component.
  190. *
  191. * ```typescript
  192. * import {Component, HostBinding} from '\@angular/core';
  193. * /
  194. * selector: 'app-component',
  195. * templateUrl: 'app.component.html',
  196. * })
  197. * class AppComponent {
  198. * \@HostBinding('@.disabled')
  199. * public animationsDisabled = true;
  200. * }
  201. * ```
  202. *
  203. * ### Overriding disablement of inner animations
  204. * Despite inner animations being disabled, a parent animation can `query()`
  205. * for inner elements located in disabled areas of the template and still animate
  206. * them if needed. This is also the case for when a sub animation is
  207. * queried by a parent and then later animated using `animateChild()`.
  208. *
  209. * ### Detecting when an animation is disabled
  210. * If a region of the DOM (or the entire application) has its animations disabled, the animation
  211. * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides
  212. * an instance of an `AnimationEvent`. If animations are disabled,
  213. * the `.disabled` flag on the event is true.
  214. *
  215. * \@publicApi
  216. * @param {?} name An identifying string.
  217. * @param {?} definitions An animation definition object, containing an array of `state()`
  218. * and `transition()` declarations.
  219. *
  220. * @return {?} An object that encapsulates the trigger data.
  221. *
  222. */
  223. function trigger(name, definitions) {
  224. return { type: 7 /* Trigger */, name, definitions, options: {} };
  225. }
  226. /**
  227. * Defines an animation step that combines styling information with timing information.
  228. *
  229. * \@usageNotes
  230. * Call within an animation `sequence()`, `{\@link animations/group group()}`, or
  231. * `transition()` call to specify an animation step
  232. * that applies given style data to the parent animation for a given amount of time.
  233. *
  234. * ### Syntax Examples
  235. * **Timing examples**
  236. *
  237. * The following examples show various `timings` specifications.
  238. * - `animate(500)` : Duration is 500 milliseconds.
  239. * - `animate("1s")` : Duration is 1000 milliseconds.
  240. * - `animate("100ms 0.5s")` : Duration is 100 milliseconds, delay is 500 milliseconds.
  241. * - `animate("5s ease-in")` : Duration is 5000 milliseconds, easing in.
  242. * - `animate("5s 10ms cubic-bezier(.17,.67,.88,.1)")` : Duration is 5000 milliseconds, delay is 10
  243. * milliseconds, easing according to a bezier curve.
  244. *
  245. * **Style examples**
  246. *
  247. * The following example calls `style()` to set a single CSS style.
  248. * ```typescript
  249. * animate(500, style({ background: "red" }))
  250. * ```
  251. * The following example calls `keyframes()` to set a CSS style
  252. * to different values for successive keyframes.
  253. * ```typescript
  254. * animate(500, keyframes(
  255. * [
  256. * style({ background: "blue" })),
  257. * style({ background: "red" }))
  258. * ])
  259. * ```
  260. *
  261. * \@publicApi
  262. * @param {?} timings Sets `AnimateTimings` for the parent animation.
  263. * A string in the format "duration [delay] [easing]".
  264. * - Duration and delay are expressed as a number and optional time unit,
  265. * such as "1s" or "10ms" for one second and 10 milliseconds, respectively.
  266. * The default unit is milliseconds.
  267. * - The easing value controls how the animation accelerates and decelerates
  268. * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,
  269. * `ease-in-out`, or a `cubic-bezier()` function call.
  270. * If not supplied, no easing is applied.
  271. *
  272. * For example, the string "1s 100ms ease-out" specifies a duration of
  273. * 1000 milliseconds, and delay of 100 ms, and the "ease-out" easing style,
  274. * which decelerates near the end of the duration.
  275. * @param {?=} styles Sets AnimationStyles for the parent animation.
  276. * A function call to either `style()` or `keyframes()`
  277. * that returns a collection of CSS style entries to be applied to the parent animation.
  278. * When null, uses the styles from the destination state.
  279. * This is useful when describing an animation step that will complete an animation;
  280. * see "Animating to the final state" in `transitions()`.
  281. * @return {?} An object that encapsulates the animation step.
  282. *
  283. */
  284. function animate(timings, styles = null) {
  285. return { type: 4 /* Animate */, styles, timings };
  286. }
  287. /**
  288. * \@description Defines a list of animation steps to be run in parallel.
  289. *
  290. * \@usageNotes
  291. * Grouped animations are useful when a series of styles must be
  292. * animated at different starting times and closed off at different ending times.
  293. *
  294. * When called within a `sequence()` or a
  295. * `transition()` call, does not continue to the next
  296. * instruction until all of the inner animation steps have completed.
  297. *
  298. * \@publicApi
  299. * @param {?} steps An array of animation step objects.
  300. * - When steps are defined by `style()` or `animate()`
  301. * function calls, each call within the group is executed instantly.
  302. * - To specify offset styles to be applied at a later time, define steps with
  303. * `keyframes()`, or use `animate()` calls with a delay value.
  304. * For example:
  305. *
  306. * ```typescript
  307. * group([
  308. * animate("1s", style({ background: "black" })),
  309. * animate("2s", style({ color: "white" }))
  310. * ])
  311. * ```
  312. *
  313. * @param {?=} options An options object containing a delay and
  314. * developer-defined parameters that provide styling defaults and
  315. * can be overridden on invocation.
  316. *
  317. * @return {?} An object that encapsulates the group data.
  318. *
  319. */
  320. function group(steps, options = null) {
  321. return { type: 3 /* Group */, steps, options };
  322. }
  323. /**
  324. * Defines a list of animation steps to be run sequentially, one by one.
  325. *
  326. * \@usageNotes
  327. * When you pass an array of steps to a
  328. * `transition()` call, the steps run sequentially by default.
  329. * Compare this to the `{\@link animations/group group()}` call, which runs animation steps in parallel.
  330. *
  331. * When a sequence is used within a `{\@link animations/group group()}` or a `transition()` call,
  332. * execution continues to the next instruction only after each of the inner animation
  333. * steps have completed.
  334. *
  335. * \@publicApi
  336. *
  337. * @param {?} steps An array of animation step objects.
  338. * - Steps defined by `style()` calls apply the styling data immediately.
  339. * - Steps defined by `animate()` calls apply the styling data over time
  340. * as specified by the timing data.
  341. *
  342. * ```typescript
  343. * sequence([
  344. * style({ opacity: 0 })),
  345. * animate("1s", style({ opacity: 1 }))
  346. * ])
  347. * ```
  348. *
  349. * @param {?=} options An options object containing a delay and
  350. * developer-defined parameters that provide styling defaults and
  351. * can be overridden on invocation.
  352. *
  353. * @return {?} An object that encapsulates the sequence data.
  354. *
  355. */
  356. function sequence(steps, options = null) {
  357. return { type: 2 /* Sequence */, steps, options };
  358. }
  359. /**
  360. * Declares a key/value object containing CSS properties/styles that
  361. * can then be used for an animation `state`, within an animation `sequence`,
  362. * or as styling data for calls to `animate()` and `keyframes()`.
  363. *
  364. * \@usageNotes
  365. * The following examples create animation styles that collect a set of
  366. * CSS property values:
  367. *
  368. * ```typescript
  369. * // string values for CSS properties
  370. * style({ background: "red", color: "blue" })
  371. *
  372. * // numerical pixel values
  373. * style({ width: 100, height: 0 })
  374. * ```
  375. *
  376. * The following example uses auto-styling to allow a component to animate from
  377. * a height of 0 up to the height of the parent element:
  378. *
  379. * ```
  380. * style({ height: 0 }),
  381. * animate("1s", style({ height: "*" }))
  382. * ```
  383. *
  384. * \@publicApi
  385. *
  386. * @param {?} tokens A set of CSS styles or HTML styles associated with an animation state.
  387. * The value can be any of the following:
  388. * - A key-value style pair associating a CSS property with a value.
  389. * - An array of key-value style pairs.
  390. * - An asterisk (*), to use auto-styling, where styles are derived from the element
  391. * being animated and applied to the animation when it starts.
  392. *
  393. * Auto-styling can be used to define a state that depends on layout or other
  394. * environmental factors.
  395. *
  396. * @return {?} An object that encapsulates the style data.
  397. *
  398. */
  399. function style(tokens) {
  400. return { type: 6 /* Style */, styles: tokens, offset: null };
  401. }
  402. /**
  403. * Declares an animation state within a trigger attached to an element.
  404. *
  405. * \@usageNotes
  406. * Use the `trigger()` function to register states to an animation trigger.
  407. * Use the `transition()` function to animate between states.
  408. * When a state is active within a component, its associated styles persist on the element,
  409. * even when the animation ends.
  410. *
  411. * \@publicApi
  412. *
  413. * @param {?} name One or more names for the defined state in a comma-separated string.
  414. * The following reserved state names can be supplied to define a style for specific use
  415. * cases:
  416. *
  417. * - `void` You can associate styles with this name to be used when
  418. * the element is detached from the application. For example, when an `ngIf` evaluates
  419. * to false, the state of the associated element is void.
  420. * - `*` (asterisk) Indicates the default state. You can associate styles with this name
  421. * to be used as the fallback when the state that is being animated is not declared
  422. * within the trigger.
  423. *
  424. * @param {?} styles A set of CSS styles associated with this state, created using the
  425. * `style()` function.
  426. * This set of styles persists on the element once the state has been reached.
  427. * @param {?=} options Parameters that can be passed to the state when it is invoked.
  428. * 0 or more key-value pairs.
  429. * @return {?} An object that encapsulates the new state data.
  430. *
  431. */
  432. function state(name, styles, options) {
  433. return { type: 0 /* State */, name, styles, options };
  434. }
  435. /**
  436. * Defines a set of animation styles, associating each style with an optional `offset` value.
  437. *
  438. * \@usageNotes
  439. * Use with the `animate()` call. Instead of applying animations
  440. * from the current state
  441. * to the destination state, keyframes describe how each style entry is applied and at what point
  442. * within the animation arc.
  443. * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).
  444. *
  445. * ### Usage
  446. *
  447. * In the following example, the offset values describe
  448. * when each `backgroundColor` value is applied. The color is red at the start, and changes to
  449. * blue when 20% of the total time has elapsed.
  450. *
  451. * ```typescript
  452. * // the provided offset values
  453. * animate("5s", keyframes([
  454. * style({ backgroundColor: "red", offset: 0 }),
  455. * style({ backgroundColor: "blue", offset: 0.2 }),
  456. * style({ backgroundColor: "orange", offset: 0.3 }),
  457. * style({ backgroundColor: "black", offset: 1 })
  458. * ]))
  459. * ```
  460. *
  461. * If there are no `offset` values specified in the style entries, the offsets
  462. * are calculated automatically.
  463. *
  464. * ```typescript
  465. * animate("5s", keyframes([
  466. * style({ backgroundColor: "red" }) // offset = 0
  467. * style({ backgroundColor: "blue" }) // offset = 0.33
  468. * style({ backgroundColor: "orange" }) // offset = 0.66
  469. * style({ backgroundColor: "black" }) // offset = 1
  470. * ]))
  471. * ```
  472. * \@publicApi
  473. * @param {?} steps A set of animation styles with optional offset data.
  474. * The optional `offset` value for a style specifies a percentage of the total animation
  475. * time at which that style is applied.
  476. * @return {?} An object that encapsulates the keyframes data.
  477. *
  478. */
  479. function keyframes(steps) {
  480. return { type: 5 /* Keyframes */, steps };
  481. }
  482. /**
  483. * Declares an animation transition as a sequence of animation steps to run when a given
  484. * condition is satisfied. The condition is a Boolean expression or function that compares
  485. * the previous and current animation states, and returns true if this transition should occur.
  486. * When the state criteria of a defined transition are met, the associated animation is
  487. * triggered.
  488. *
  489. * \@usageNotes
  490. * The template associated with a component binds an animation trigger to an element.
  491. *
  492. * ```HTML
  493. * <!-- somewhere inside of my-component-tpl.html -->
  494. * <div [\@myAnimationTrigger]="myStatusExp">...</div>
  495. * ```
  496. *
  497. * All transitions are defined within an animation trigger,
  498. * along with named states that the transitions change to and from.
  499. *
  500. * ```typescript
  501. * trigger("myAnimationTrigger", [
  502. * // define states
  503. * state("on", style({ background: "green" })),
  504. * state("off", style({ background: "grey" })),
  505. * ...]
  506. * ```
  507. *
  508. * Note that when you call the `sequence()` function within a `{\@link animations/group group()}`
  509. * or a `transition()` call, execution does not continue to the next instruction
  510. * until each of the inner animation steps have completed.
  511. *
  512. * ### Syntax examples
  513. *
  514. * The following examples define transitions between the two defined states (and default states),
  515. * using various options:
  516. *
  517. * ```typescript
  518. * // Transition occurs when the state value
  519. * // bound to "myAnimationTrigger" changes from "on" to "off"
  520. * transition("on => off", animate(500))
  521. * // Run the same animation for both directions
  522. * transition("on <=> off", animate(500))
  523. * // Define multiple state-change pairs separated by commas
  524. * transition("on => off, off => void", animate(500))
  525. * ```
  526. *
  527. * ### Special values for state-change expressions
  528. *
  529. * - Catch-all state change for when an element is inserted into the page and the
  530. * destination state is unknown:
  531. *
  532. * ```typescript
  533. * transition("void => *", [
  534. * style({ opacity: 0 }),
  535. * animate(500)
  536. * ])
  537. * ```
  538. *
  539. * - Capture a state change between any states:
  540. *
  541. * `transition("* => *", animate("1s 0s"))`
  542. *
  543. * - Entry and exit transitions:
  544. *
  545. * ```typescript
  546. * transition(":enter", [
  547. * style({ opacity: 0 }),
  548. * animate(500, style({ opacity: 1 }))
  549. * ]),
  550. * transition(":leave", [
  551. * animate(500, style({ opacity: 0 }))
  552. * ])
  553. * ```
  554. *
  555. * - Use `:increment` and `:decrement` to initiate transitions:
  556. *
  557. * ```typescript
  558. * transition(":increment", group([
  559. * query(':enter', [
  560. * style({ left: '100%' }),
  561. * animate('0.5s ease-out', style('*'))
  562. * ]),
  563. * query(':leave', [
  564. * animate('0.5s ease-out', style({ left: '-100%' }))
  565. * ])
  566. * ]))
  567. *
  568. * transition(":decrement", group([
  569. * query(':enter', [
  570. * style({ left: '100%' }),
  571. * animate('0.5s ease-out', style('*'))
  572. * ]),
  573. * query(':leave', [
  574. * animate('0.5s ease-out', style({ left: '-100%' }))
  575. * ])
  576. * ]))
  577. * ```
  578. *
  579. * ### State-change functions
  580. *
  581. * Here is an example of a `fromState` specified as a state-change function that invokes an
  582. * animation when true:
  583. *
  584. * ```typescript
  585. * transition((fromState, toState) =>
  586. * {
  587. * return fromState == "off" && toState == "on";
  588. * },
  589. * animate("1s 0s"))
  590. * ```
  591. *
  592. * ### Animating to the final state
  593. *
  594. * If the final step in a transition is a call to `animate()` that uses a timing value
  595. * with no style data, that step is automatically considered the final animation arc,
  596. * for the element to reach the final state. Angular automatically adds or removes
  597. * CSS styles to ensure that the element is in the correct final state.
  598. *
  599. * The following example defines a transition that starts by hiding the element,
  600. * then makes sure that it animates properly to whatever state is currently active for trigger:
  601. *
  602. * ```typescript
  603. * transition("void => *", [
  604. * style({ opacity: 0 }),
  605. * animate(500)
  606. * ])
  607. * ```
  608. * ### Boolean value matching
  609. * If a trigger binding value is a Boolean, it can be matched using a transition expression
  610. * that compares true and false or 1 and 0. For example:
  611. *
  612. * ```
  613. * // in the template
  614. * <div [\@openClose]="open ? true : false">...</div>
  615. * // in the component metadata
  616. * trigger('openClose', [
  617. * state('true', style({ height: '*' })),
  618. * state('false', style({ height: '0px' })),
  619. * transition('false <=> true', animate(500))
  620. * ])
  621. * ```
  622. *
  623. * \@publicApi
  624. *
  625. * @param {?} stateChangeExpr A Boolean expression or function that compares the previous and current
  626. * animation states, and returns true if this transition should occur. Note that "true" and "false"
  627. * match 1 and 0, respectively. An expression is evaluated each time a state change occurs in the
  628. * animation trigger element.
  629. * The animation steps run when the expression evaluates to true.
  630. *
  631. * - A state-change string takes the form "state1 => state2", where each side is a defined animation
  632. * state, or an asterix (*) to refer to a dynamic start or end state.
  633. * - The expression string can contain multiple comma-separated statements;
  634. * for example "state1 => state2, state3 => state4".
  635. * - Special values `:enter` and `:leave` initiate a transition on the entry and exit states,
  636. * equivalent to "void => *" and "* => void".
  637. * - Special values `:increment` and `:decrement` initiate a transition when a numeric value has
  638. * increased or decreased in value.
  639. * - A function is executed each time a state change occurs in the animation trigger element.
  640. * The animation steps run when the function returns true.
  641. *
  642. * @param {?} steps One or more animation objects, as returned by the `animate()` or
  643. * `sequence()` function, that form a transformation from one state to another.
  644. * A sequence is used by default when you pass an array.
  645. * @param {?=} options An options object that can contain a delay value for the start of the animation,
  646. * and additional developer-defined parameters. Provided values for additional parameters are used
  647. * as defaults, and override values can be passed to the caller on invocation.
  648. * @return {?} An object that encapsulates the transition data.
  649. *
  650. */
  651. function transition(stateChangeExpr, steps, options = null) {
  652. return { type: 1 /* Transition */, expr: stateChangeExpr, animation: steps, options };
  653. }
  654. /**
  655. * Produces a reusable animation that can be invoked in another animation or sequence,
  656. * by calling the `useAnimation()` function.
  657. *
  658. * \@usageNotes
  659. * The following example defines a reusable animation, providing some default parameter
  660. * values.
  661. *
  662. * ```typescript
  663. * var fadeAnimation = animation([
  664. * style({ opacity: '{{ start }}' }),
  665. * animate('{{ time }}',
  666. * style({ opacity: '{{ end }}'}))
  667. * ],
  668. * { params: { time: '1000ms', start: 0, end: 1 }});
  669. * ```
  670. *
  671. * The following invokes the defined animation with a call to `useAnimation()`,
  672. * passing in override parameter values.
  673. *
  674. * ```js
  675. * useAnimation(fadeAnimation, {
  676. * params: {
  677. * time: '2s',
  678. * start: 1,
  679. * end: 0
  680. * }
  681. * })
  682. * ```
  683. *
  684. * If any of the passed-in parameter values are missing from this call,
  685. * the default values are used. If one or more parameter values are missing before a step is
  686. * animated, `useAnimation()` throws an error.
  687. *
  688. * \@publicApi
  689. * @param {?} steps One or more animation objects, as returned by the `animate()`
  690. * or `sequence()` function, that form a transformation from one state to another.
  691. * A sequence is used by default when you pass an array.
  692. * @param {?=} options An options object that can contain a delay value for the start of the
  693. * animation, and additional developer-defined parameters.
  694. * Provided values for additional parameters are used as defaults,
  695. * and override values can be passed to the caller on invocation.
  696. * @return {?} An object that encapsulates the animation data.
  697. *
  698. */
  699. function animation(steps, options = null) {
  700. return { type: 8 /* Reference */, animation: steps, options };
  701. }
  702. /**
  703. * Executes a queried inner animation element within an animation sequence.
  704. *
  705. * \@usageNotes
  706. * Each time an animation is triggered in Angular, the parent animation
  707. * has priority and any child animations are blocked. In order
  708. * for a child animation to run, the parent animation must query each of the elements
  709. * containing child animations, and run them using this function.
  710. *
  711. * Note that this feature is designed to be used with `query()` and it will only work
  712. * with animations that are assigned using the Angular animation library. CSS keyframes
  713. * and transitions are not handled by this API.
  714. *
  715. * \@publicApi
  716. * @param {?=} options An options object that can contain a delay value for the start of the
  717. * animation, and additional override values for developer-defined parameters.
  718. * @return {?} An object that encapsulates the child animation data.
  719. *
  720. */
  721. function animateChild(options = null) {
  722. return { type: 9 /* AnimateChild */, options };
  723. }
  724. /**
  725. * Starts a reusable animation that is created using the `animation()` function.
  726. *
  727. * \@publicApi
  728. * @param {?} animation The reusable animation to start.
  729. * @param {?=} options An options object that can contain a delay value for the start of
  730. * the animation, and additional override values for developer-defined parameters.
  731. * @return {?} An object that contains the animation parameters.
  732. *
  733. */
  734. function useAnimation(animation, options = null) {
  735. return { type: 10 /* AnimateRef */, animation, options };
  736. }
  737. /**
  738. * Finds one or more inner elements within the current element that is
  739. * being animated within a sequence. Use with `animate()`.
  740. *
  741. * \@usageNotes
  742. * Tokens can be merged into a combined query selector string. For example:
  743. *
  744. * ```typescript
  745. * query(':self, .record:enter, .record:leave, \@subTrigger', [...])
  746. * ```
  747. *
  748. * The `query()` function collects multiple elements and works internally by using
  749. * `element.querySelectorAll`. Use the `limit` field of an options object to limit
  750. * the total number of items to be collected. For example:
  751. *
  752. * ```js
  753. * query('div', [
  754. * animate(...),
  755. * animate(...)
  756. * ], { limit: 1 })
  757. * ```
  758. *
  759. * By default, throws an error when zero items are found. Set the
  760. * `optional` flag to ignore this error. For example:
  761. *
  762. * ```js
  763. * query('.some-element-that-may-not-be-there', [
  764. * animate(...),
  765. * animate(...)
  766. * ], { optional: true })
  767. * ```
  768. *
  769. * ### Usage Example
  770. *
  771. * The following example queries for inner elements and animates them
  772. * individually using `animate()`.
  773. *
  774. * ```typescript
  775. * \@Component({
  776. * selector: 'inner',
  777. * template: `
  778. * <div [\@queryAnimation]="exp">
  779. * <h1>Title</h1>
  780. * <div class="content">
  781. * Blah blah blah
  782. * </div>
  783. * </div>
  784. * `,
  785. * animations: [
  786. * trigger('queryAnimation', [
  787. * transition('* => goAnimate', [
  788. * // hide the inner elements
  789. * query('h1', style({ opacity: 0 })),
  790. * query('.content', style({ opacity: 0 })),
  791. *
  792. * // animate the inner elements in, one by one
  793. * query('h1', animate(1000, style({ opacity: 1 }))),
  794. * query('.content', animate(1000, style({ opacity: 1 }))),
  795. * ])
  796. * ])
  797. * ]
  798. * })
  799. * class Cmp {
  800. * exp = '';
  801. *
  802. * goAnimate() {
  803. * this.exp = 'goAnimate';
  804. * }
  805. * }
  806. * ```
  807. *
  808. * \@publicApi
  809. * @param {?} selector The element to query, or a set of elements that contain Angular-specific
  810. * characteristics, specified with one or more of the following tokens.
  811. * - `query(":enter")` or `query(":leave")` : Query for newly inserted/removed elements.
  812. * - `query(":animating")` : Query all currently animating elements.
  813. * - `query("\@triggerName")` : Query elements that contain an animation trigger.
  814. * - `query("\@*")` : Query all elements that contain an animation triggers.
  815. * - `query(":self")` : Include the current element into the animation sequence.
  816. *
  817. * @param {?} animation One or more animation steps to apply to the queried element or elements.
  818. * An array is treated as an animation sequence.
  819. * @param {?=} options An options object. Use the 'limit' field to limit the total number of
  820. * items to collect.
  821. * @return {?} An object that encapsulates the query data.
  822. *
  823. */
  824. function query(selector, animation, options = null) {
  825. return { type: 11 /* Query */, selector, animation, options };
  826. }
  827. /**
  828. * Use within an animation `query()` call to issue a timing gap after
  829. * each queried item is animated.
  830. *
  831. * \@usageNotes
  832. * In the following example, a container element wraps a list of items stamped out
  833. * by an `ngFor`. The container element contains an animation trigger that will later be set
  834. * to query for each of the inner items.
  835. *
  836. * Each time items are added, the opacity fade-in animation runs,
  837. * and each removed item is faded out.
  838. * When either of these animations occur, the stagger effect is
  839. * applied after each item's animation is started.
  840. *
  841. * ```html
  842. * <!-- list.component.html -->
  843. * <button (click)="toggle()">Show / Hide Items</button>
  844. * <hr />
  845. * <div [\@listAnimation]="items.length">
  846. * <div *ngFor="let item of items">
  847. * {{ item }}
  848. * </div>
  849. * </div>
  850. * ```
  851. *
  852. * Here is the component code:
  853. *
  854. * ```typescript
  855. * import {trigger, transition, style, animate, query, stagger} from '\@angular/animations';
  856. * \@Component({
  857. * templateUrl: 'list.component.html',
  858. * animations: [
  859. * trigger('listAnimation', [
  860. * ...
  861. * ])
  862. * ]
  863. * })
  864. * class ListComponent {
  865. * items = [];
  866. *
  867. * showItems() {
  868. * this.items = [0,1,2,3,4];
  869. * }
  870. *
  871. * hideItems() {
  872. * this.items = [];
  873. * }
  874. *
  875. * toggle() {
  876. * this.items.length ? this.hideItems() : this.showItems();
  877. * }
  878. * }
  879. * ```
  880. *
  881. * Here is the animation trigger code:
  882. *
  883. * ```typescript
  884. * trigger('listAnimation', [
  885. * transition('* => *', [ // each time the binding value changes
  886. * query(':leave', [
  887. * stagger(100, [
  888. * animate('0.5s', style({ opacity: 0 }))
  889. * ])
  890. * ]),
  891. * query(':enter', [
  892. * style({ opacity: 0 }),
  893. * stagger(100, [
  894. * animate('0.5s', style({ opacity: 1 }))
  895. * ])
  896. * ])
  897. * ])
  898. * ])
  899. * ```
  900. *
  901. * \@publicApi
  902. * @param {?} timings A delay value.
  903. * @param {?} animation One ore more animation steps.
  904. * @return {?} An object that encapsulates the stagger data.
  905. *
  906. */
  907. function stagger(timings, animation) {
  908. return { type: 12 /* Stagger */, timings, animation };
  909. }
  910. /**
  911. * @fileoverview added by tsickle
  912. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  913. */
  914. /**
  915. * @license
  916. * Copyright Google Inc. All Rights Reserved.
  917. *
  918. * Use of this source code is governed by an MIT-style license that can be
  919. * found in the LICENSE file at https://angular.io/license
  920. * @param {?} cb
  921. * @return {?}
  922. */
  923. function scheduleMicroTask(cb) {
  924. Promise.resolve(null).then(cb);
  925. }
  926. /**
  927. * @fileoverview added by tsickle
  928. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  929. */
  930. /**
  931. * An empty programmatic controller for reusable animations.
  932. * Used internally when animations are disabled, to avoid
  933. * checking for the null case when an animation player is expected.
  934. *
  935. * @see `animate()`
  936. * @see `AnimationPlayer`
  937. * @see `GroupPlayer`
  938. *
  939. * \@publicApi
  940. */
  941. class NoopAnimationPlayer {
  942. /**
  943. * @param {?=} duration
  944. * @param {?=} delay
  945. */
  946. constructor(duration = 0, delay = 0) {
  947. this._onDoneFns = [];
  948. this._onStartFns = [];
  949. this._onDestroyFns = [];
  950. this._started = false;
  951. this._destroyed = false;
  952. this._finished = false;
  953. this.parentPlayer = null;
  954. this.totalTime = duration + delay;
  955. }
  956. /**
  957. * @private
  958. * @return {?}
  959. */
  960. _onFinish() {
  961. if (!this._finished) {
  962. this._finished = true;
  963. this._onDoneFns.forEach((/**
  964. * @param {?} fn
  965. * @return {?}
  966. */
  967. fn => fn()));
  968. this._onDoneFns = [];
  969. }
  970. }
  971. /**
  972. * @param {?} fn
  973. * @return {?}
  974. */
  975. onStart(fn) { this._onStartFns.push(fn); }
  976. /**
  977. * @param {?} fn
  978. * @return {?}
  979. */
  980. onDone(fn) { this._onDoneFns.push(fn); }
  981. /**
  982. * @param {?} fn
  983. * @return {?}
  984. */
  985. onDestroy(fn) { this._onDestroyFns.push(fn); }
  986. /**
  987. * @return {?}
  988. */
  989. hasStarted() { return this._started; }
  990. /**
  991. * @return {?}
  992. */
  993. init() { }
  994. /**
  995. * @return {?}
  996. */
  997. play() {
  998. if (!this.hasStarted()) {
  999. this._onStart();
  1000. this.triggerMicrotask();
  1001. }
  1002. this._started = true;
  1003. }
  1004. /**
  1005. * \@internal
  1006. * @return {?}
  1007. */
  1008. triggerMicrotask() { scheduleMicroTask((/**
  1009. * @return {?}
  1010. */
  1011. () => this._onFinish())); }
  1012. /**
  1013. * @private
  1014. * @return {?}
  1015. */
  1016. _onStart() {
  1017. this._onStartFns.forEach((/**
  1018. * @param {?} fn
  1019. * @return {?}
  1020. */
  1021. fn => fn()));
  1022. this._onStartFns = [];
  1023. }
  1024. /**
  1025. * @return {?}
  1026. */
  1027. pause() { }
  1028. /**
  1029. * @return {?}
  1030. */
  1031. restart() { }
  1032. /**
  1033. * @return {?}
  1034. */
  1035. finish() { this._onFinish(); }
  1036. /**
  1037. * @return {?}
  1038. */
  1039. destroy() {
  1040. if (!this._destroyed) {
  1041. this._destroyed = true;
  1042. if (!this.hasStarted()) {
  1043. this._onStart();
  1044. }
  1045. this.finish();
  1046. this._onDestroyFns.forEach((/**
  1047. * @param {?} fn
  1048. * @return {?}
  1049. */
  1050. fn => fn()));
  1051. this._onDestroyFns = [];
  1052. }
  1053. }
  1054. /**
  1055. * @return {?}
  1056. */
  1057. reset() { }
  1058. /**
  1059. * @param {?} position
  1060. * @return {?}
  1061. */
  1062. setPosition(position) { }
  1063. /**
  1064. * @return {?}
  1065. */
  1066. getPosition() { return 0; }
  1067. /**
  1068. * \@internal
  1069. * @param {?} phaseName
  1070. * @return {?}
  1071. */
  1072. triggerCallback(phaseName) {
  1073. /** @type {?} */
  1074. const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;
  1075. methods.forEach((/**
  1076. * @param {?} fn
  1077. * @return {?}
  1078. */
  1079. fn => fn()));
  1080. methods.length = 0;
  1081. }
  1082. }
  1083. /**
  1084. * @fileoverview added by tsickle
  1085. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  1086. */
  1087. /**
  1088. * A programmatic controller for a group of reusable animations.
  1089. * Used internally to control animations.
  1090. *
  1091. * @see `AnimationPlayer`
  1092. * @see `{\@link animations/group group()}`
  1093. *
  1094. */
  1095. class AnimationGroupPlayer {
  1096. /**
  1097. * @param {?} _players
  1098. */
  1099. constructor(_players) {
  1100. this._onDoneFns = [];
  1101. this._onStartFns = [];
  1102. this._finished = false;
  1103. this._started = false;
  1104. this._destroyed = false;
  1105. this._onDestroyFns = [];
  1106. this.parentPlayer = null;
  1107. this.totalTime = 0;
  1108. this.players = _players;
  1109. /** @type {?} */
  1110. let doneCount = 0;
  1111. /** @type {?} */
  1112. let destroyCount = 0;
  1113. /** @type {?} */
  1114. let startCount = 0;
  1115. /** @type {?} */
  1116. const total = this.players.length;
  1117. if (total == 0) {
  1118. scheduleMicroTask((/**
  1119. * @return {?}
  1120. */
  1121. () => this._onFinish()));
  1122. }
  1123. else {
  1124. this.players.forEach((/**
  1125. * @param {?} player
  1126. * @return {?}
  1127. */
  1128. player => {
  1129. player.onDone((/**
  1130. * @return {?}
  1131. */
  1132. () => {
  1133. if (++doneCount == total) {
  1134. this._onFinish();
  1135. }
  1136. }));
  1137. player.onDestroy((/**
  1138. * @return {?}
  1139. */
  1140. () => {
  1141. if (++destroyCount == total) {
  1142. this._onDestroy();
  1143. }
  1144. }));
  1145. player.onStart((/**
  1146. * @return {?}
  1147. */
  1148. () => {
  1149. if (++startCount == total) {
  1150. this._onStart();
  1151. }
  1152. }));
  1153. }));
  1154. }
  1155. this.totalTime = this.players.reduce((/**
  1156. * @param {?} time
  1157. * @param {?} player
  1158. * @return {?}
  1159. */
  1160. (time, player) => Math.max(time, player.totalTime)), 0);
  1161. }
  1162. /**
  1163. * @private
  1164. * @return {?}
  1165. */
  1166. _onFinish() {
  1167. if (!this._finished) {
  1168. this._finished = true;
  1169. this._onDoneFns.forEach((/**
  1170. * @param {?} fn
  1171. * @return {?}
  1172. */
  1173. fn => fn()));
  1174. this._onDoneFns = [];
  1175. }
  1176. }
  1177. /**
  1178. * @return {?}
  1179. */
  1180. init() { this.players.forEach((/**
  1181. * @param {?} player
  1182. * @return {?}
  1183. */
  1184. player => player.init())); }
  1185. /**
  1186. * @param {?} fn
  1187. * @return {?}
  1188. */
  1189. onStart(fn) { this._onStartFns.push(fn); }
  1190. /**
  1191. * @private
  1192. * @return {?}
  1193. */
  1194. _onStart() {
  1195. if (!this.hasStarted()) {
  1196. this._started = true;
  1197. this._onStartFns.forEach((/**
  1198. * @param {?} fn
  1199. * @return {?}
  1200. */
  1201. fn => fn()));
  1202. this._onStartFns = [];
  1203. }
  1204. }
  1205. /**
  1206. * @param {?} fn
  1207. * @return {?}
  1208. */
  1209. onDone(fn) { this._onDoneFns.push(fn); }
  1210. /**
  1211. * @param {?} fn
  1212. * @return {?}
  1213. */
  1214. onDestroy(fn) { this._onDestroyFns.push(fn); }
  1215. /**
  1216. * @return {?}
  1217. */
  1218. hasStarted() { return this._started; }
  1219. /**
  1220. * @return {?}
  1221. */
  1222. play() {
  1223. if (!this.parentPlayer) {
  1224. this.init();
  1225. }
  1226. this._onStart();
  1227. this.players.forEach((/**
  1228. * @param {?} player
  1229. * @return {?}
  1230. */
  1231. player => player.play()));
  1232. }
  1233. /**
  1234. * @return {?}
  1235. */
  1236. pause() { this.players.forEach((/**
  1237. * @param {?} player
  1238. * @return {?}
  1239. */
  1240. player => player.pause())); }
  1241. /**
  1242. * @return {?}
  1243. */
  1244. restart() { this.players.forEach((/**
  1245. * @param {?} player
  1246. * @return {?}
  1247. */
  1248. player => player.restart())); }
  1249. /**
  1250. * @return {?}
  1251. */
  1252. finish() {
  1253. this._onFinish();
  1254. this.players.forEach((/**
  1255. * @param {?} player
  1256. * @return {?}
  1257. */
  1258. player => player.finish()));
  1259. }
  1260. /**
  1261. * @return {?}
  1262. */
  1263. destroy() { this._onDestroy(); }
  1264. /**
  1265. * @private
  1266. * @return {?}
  1267. */
  1268. _onDestroy() {
  1269. if (!this._destroyed) {
  1270. this._destroyed = true;
  1271. this._onFinish();
  1272. this.players.forEach((/**
  1273. * @param {?} player
  1274. * @return {?}
  1275. */
  1276. player => player.destroy()));
  1277. this._onDestroyFns.forEach((/**
  1278. * @param {?} fn
  1279. * @return {?}
  1280. */
  1281. fn => fn()));
  1282. this._onDestroyFns = [];
  1283. }
  1284. }
  1285. /**
  1286. * @return {?}
  1287. */
  1288. reset() {
  1289. this.players.forEach((/**
  1290. * @param {?} player
  1291. * @return {?}
  1292. */
  1293. player => player.reset()));
  1294. this._destroyed = false;
  1295. this._finished = false;
  1296. this._started = false;
  1297. }
  1298. /**
  1299. * @param {?} p
  1300. * @return {?}
  1301. */
  1302. setPosition(p) {
  1303. /** @type {?} */
  1304. const timeAtPosition = p * this.totalTime;
  1305. this.players.forEach((/**
  1306. * @param {?} player
  1307. * @return {?}
  1308. */
  1309. player => {
  1310. /** @type {?} */
  1311. const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;
  1312. player.setPosition(position);
  1313. }));
  1314. }
  1315. /**
  1316. * @return {?}
  1317. */
  1318. getPosition() {
  1319. /** @type {?} */
  1320. let min = 0;
  1321. this.players.forEach((/**
  1322. * @param {?} player
  1323. * @return {?}
  1324. */
  1325. player => {
  1326. /** @type {?} */
  1327. const p = player.getPosition();
  1328. min = Math.min(p, min);
  1329. }));
  1330. return min;
  1331. }
  1332. /**
  1333. * @return {?}
  1334. */
  1335. beforeDestroy() {
  1336. this.players.forEach((/**
  1337. * @param {?} player
  1338. * @return {?}
  1339. */
  1340. player => {
  1341. if (player.beforeDestroy) {
  1342. player.beforeDestroy();
  1343. }
  1344. }));
  1345. }
  1346. /**
  1347. * \@internal
  1348. * @param {?} phaseName
  1349. * @return {?}
  1350. */
  1351. triggerCallback(phaseName) {
  1352. /** @type {?} */
  1353. const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;
  1354. methods.forEach((/**
  1355. * @param {?} fn
  1356. * @return {?}
  1357. */
  1358. fn => fn()));
  1359. methods.length = 0;
  1360. }
  1361. }
  1362. /**
  1363. * @fileoverview added by tsickle
  1364. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  1365. */
  1366. /** @type {?} */
  1367. const ɵPRE_STYLE = '!';
  1368. /**
  1369. * @fileoverview added by tsickle
  1370. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  1371. */
  1372. /**
  1373. * @fileoverview added by tsickle
  1374. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  1375. */
  1376. /**
  1377. * @fileoverview added by tsickle
  1378. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  1379. */
  1380. /**
  1381. * Generated bundle index. Do not edit.
  1382. */
  1383. export { AnimationBuilder, AnimationFactory, AUTO_STYLE, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, NoopAnimationPlayer, AnimationGroupPlayer as ɵAnimationGroupPlayer, ɵPRE_STYLE };
  1384. //# sourceMappingURL=animations.js.map