text: /**
   * @license Angular v10.2.4
   * (c) 2010-2020 Google LLC. https://angular.io/
   * License: MIT
   */
  
  import { NoopAnimationPlayer, AUTO_STYLE } from '@angular/animations';
  import { ɵvalidateStyleProperty, ɵmatchesElement, ɵcontainsElement, ɵinvokeQuery, ɵallowPreviousPlayerStylesMerge } from '@angular/animations/browser';
  
  /**
   * @license
   * Copyright Google LLC All Rights Reserved.
   *
   * Use of this source code is governed by an MIT-style license that can be
   * found in the LICENSE file at https://angular.io/license
   */
  /**
   * @publicApi
   */
  class MockAnimationDriver {
      validateStyleProperty(prop) {
          return ɵvalidateStyleProperty(prop);
      }
      matchesElement(element, selector) {
          return ɵmatchesElement(element, selector);
      }
      containsElement(elm1, elm2) {
          return ɵcontainsElement(elm1, elm2);
      }
      query(element, selector, multi) {
          return ɵinvokeQuery(element, selector, multi);
      }
      computeStyle(element, prop, defaultValue) {
          return defaultValue || '';
      }
      animate(element, keyframes, duration, delay, easing, previousPlayers = []) {
          const player = new MockAnimationPlayer(element, keyframes, duration, delay, easing, previousPlayers);
          MockAnimationDriver.log.push(player);
          return player;
      }
  }
  MockAnimationDriver.log = [];
  /**
   * @publicApi
   */
  class MockAnimationPlayer extends NoopAnimationPlayer {
      constructor(element, keyframes, duration, delay, easing, previousPlayers) {
          super(duration, delay);
          this.element = element;
          this.keyframes = keyframes;
          this.duration = duration;
          this.delay = delay;
          this.easing = easing;
          this.previousPlayers = previousPlayers;
          this.__finished = false;
          this.__started = false;
          this.previousStyles = {};
          this._onInitFns = [];
          this.currentSnapshot = {};
          if (ɵallowPreviousPlayerStylesMerge(duration, delay)) {
              previousPlayers.forEach(player => {
                  if (player instanceof MockAnimationPlayer) {
                      const styles = player.currentSnapshot;
                      Object.keys(styles).forEach(prop => this.previousStyles[prop] = styles[prop]);
                  }
              });
          }
      }
      /* @internal */
      onInit(fn) {
          this._onInitFns.push(fn);
      }
      /* @internal */
      init() {
          super.init();
          this._onInitFns.forEach(fn => fn());
          this._onInitFns = [];
      }
      finish() {
          super.finish();
          this.__finished = true;
      }
      destroy() {
          super.destroy();
          this.__finished = true;
      }
      /* @internal */
      triggerMicrotask() { }
      play() {
          super.play();
          this.__started = true;
      }
      hasStarted() {
          return this.__started;
      }
      beforeDestroy() {
          const captures = {};
          Object.keys(this.previousStyles).forEach(prop => {
              captures[prop] = this.previousStyles[prop];
          });
          if (this.hasStarted()) {
              // when assembling the captured styles, it's important that
              // we build the keyframe styles in the following order:
              // {other styles within keyframes, ... previousStyles }
              this.keyframes.forEach(kf => {
                  Object.keys(kf).forEach(prop => {
                      if (prop != 'offset') {
                          captures[prop] = this.__finished ? kf[prop] : AUTO_STYLE;
                      }
                  });
              });
          }
          this.currentSnapshot = captures;
      }
  }
  
  /**
   * @license
   * Copyright Google LLC All Rights Reserved.
   *
   * Use of this source code is governed by an MIT-style license that can be
   * found in the LICENSE file at https://angular.io/license
   */
  
  /**
   * @license
   * Copyright Google LLC All Rights Reserved.
   *
   * Use of this source code is governed by an MIT-style license that can be
   * found in the LICENSE file at https://angular.io/license
   */
  
  /**
   * @license
   * Copyright Google LLC All Rights Reserved.
   *
   * Use of this source code is governed by an MIT-style license that can be
   * found in the LICENSE file at https://angular.io/license
   */
  
  /**
   * Generated bundle index. Do not edit.
   */
  
  export { MockAnimationDriver, MockAnimationPlayer };
  //# sourceMappingURL=testing.js.map
  