{"version":3,"file":"browser-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/animations/browser/testing/src/mock_animation_driver.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\nimport {\n  AnimationPlayer,\n  AUTO_STYLE,\n  NoopAnimationPlayer,\n  ɵStyleDataMap,\n} from '../../../src/animations';\nimport {\n  AnimationDriver,\n  ɵallowPreviousPlayerStylesMerge as allowPreviousPlayerStylesMerge,\n  ɵcamelCaseToDashCase,\n  ɵcontainsElement as containsElement,\n  ɵgetParentElement as getParentElement,\n  ɵinvokeQuery as invokeQuery,\n  ɵnormalizeKeyframes as normalizeKeyframes,\n  ɵvalidateStyleProperty as validateStyleProperty,\n  ɵvalidateWebAnimatableStyleProperty,\n} from '../../../browser';\n\n/**\n * @publicApi\n *\n * @deprecated 20.2 Use `animate.enter` or `animate.leave` instead. Intent to remove in v23\n */\nexport class MockAnimationDriver implements AnimationDriver {\n  static log: AnimationPlayer[] = [];\n\n  validateStyleProperty(prop: string): boolean {\n    return validateStyleProperty(prop);\n  }\n\n  validateAnimatableStyleProperty(prop: string): boolean {\n    const cssProp = ɵcamelCaseToDashCase(prop);\n    return ɵvalidateWebAnimatableStyleProperty(cssProp);\n  }\n\n  containsElement(elm1: any, elm2: any): boolean {\n    return containsElement(elm1, elm2);\n  }\n\n  getParentElement(element: unknown): unknown {\n    return getParentElement(element);\n  }\n\n  query(element: any, selector: string, multi: boolean): any[] {\n    return invokeQuery(element, selector, multi);\n  }\n\n  computeStyle(element: any, prop: string, defaultValue?: string): string {\n    return defaultValue || '';\n  }\n\n  animate(\n    element: any,\n    keyframes: Array<ɵStyleDataMap>,\n    duration: number,\n    delay: number,\n    easing: string,\n    previousPlayers: any[] = [],\n  ): MockAnimationPlayer {\n    const player = new MockAnimationPlayer(\n      element,\n      keyframes,\n      duration,\n      delay,\n      easing,\n      previousPlayers,\n    );\n    MockAnimationDriver.log.push(<AnimationPlayer>player);\n    return player;\n  }\n}\n\n/**\n * @publicApi\n *\n * @deprecated 20.2 Use `animate.enter` or `animate.leave` instead. Intent to remove in v23\n */\nexport class MockAnimationPlayer extends NoopAnimationPlayer {\n  private __finished = false;\n  private __started = false;\n  public previousStyles: ɵStyleDataMap = new Map();\n  private _onInitFns: (() => any)[] = [];\n  public currentSnapshot: ɵStyleDataMap = new Map();\n  private _keyframes: Array<ɵStyleDataMap> = [];\n\n  constructor(\n    public element: any,\n    public keyframes: Array<ɵStyleDataMap>,\n    public duration: number,\n    public delay: number,\n    public easing: string,\n    public previousPlayers: any[],\n  ) {\n    super(duration, delay);\n\n    this._keyframes = normalizeKeyframes(keyframes);\n\n    if (allowPreviousPlayerStylesMerge(duration, delay)) {\n      previousPlayers.forEach((player) => {\n        if (player instanceof MockAnimationPlayer) {\n          const styles = player.currentSnapshot;\n          styles.forEach((val, prop) => this.previousStyles.set(prop, val));\n        }\n      });\n    }\n  }\n\n  /** @internal */\n  onInit(fn: () => any) {\n    this._onInitFns.push(fn);\n  }\n\n  /** @internal */\n  override init() {\n    super.init();\n    this._onInitFns.forEach((fn) => fn());\n    this._onInitFns = [];\n  }\n\n  override reset() {\n    super.reset();\n    this.__started = false;\n  }\n\n  override finish(): void {\n    super.finish();\n    this.__finished = true;\n  }\n\n  override destroy(): void {\n    super.destroy();\n    this.__finished = true;\n  }\n\n  /** @internal */\n  triggerMicrotask() {}\n\n  override play(): void {\n    super.play();\n    this.__started = true;\n  }\n\n  override hasStarted() {\n    return this.__started;\n  }\n\n  beforeDestroy() {\n    const captures: ɵStyleDataMap = new Map();\n\n    this.previousStyles.forEach((val, prop) => captures.set(prop, val));\n\n    if (this.hasStarted()) {\n      // when assembling the captured styles, it's important that\n      // we build the keyframe styles in the following order:\n      // {other styles within keyframes, ... previousStyles }\n      this._keyframes.forEach((kf) => {\n        for (let [prop, val] of kf) {\n          if (prop !== 'offset') {\n            captures.set(prop, this.__finished ? val : AUTO_STYLE);\n          }\n        }\n      });\n    }\n\n    this.currentSnapshot = captures;\n  }\n}\n"],"names":["ɵcamelCaseToDashCase","ɵvalidateWebAnimatableStyleProperty"],"mappings":"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"}