| /** |
| * @license Angular v11.2.14 |
| * (c) 2010-2021 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 |