{"version":3,"file":"animations-async.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/animations/async/src/async_animation_renderer.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/animations/async/src/providers.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 */\n\nimport {\n  ɵAnimationEngine as AnimationEngine,\n  ɵAnimationRenderer as AnimationRenderer,\n  ɵAnimationRendererFactory as AnimationRendererFactory,\n} from '@angular/animations/browser';\nimport {\n  ɵAnimationRendererType as AnimationRendererType,\n  ɵChangeDetectionScheduler as ChangeDetectionScheduler,\n  inject,\n  Injectable,\n  InjectionToken,\n  Injector,\n  NgZone,\n  ɵNotificationSource as NotificationSource,\n  OnDestroy,\n  Renderer2,\n  RendererFactory2,\n  RendererStyleFlags2,\n  RendererType2,\n  ɵRuntimeError as RuntimeError,\n  type ListenerOptions,\n} from '@angular/core';\nimport {ɵRuntimeErrorCode as RuntimeErrorCode} from '../../../index';\n\nconst ANIMATION_PREFIX = '@';\n\n@Injectable()\nexport class AsyncAnimationRendererFactory implements OnDestroy, RendererFactory2 {\n  private _rendererFactoryPromise: Promise<AnimationRendererFactory> | null = null;\n  private scheduler: ChangeDetectionScheduler | null = null;\n  private readonly injector = inject(Injector);\n  private readonly loadingSchedulerFn = inject(ɵASYNC_ANIMATION_LOADING_SCHEDULER_FN, {\n    optional: true,\n  });\n  private _engine?: AnimationEngine;\n\n  /**\n   *\n   * @param moduleImpl allows to provide a mock implmentation (or will load the animation module)\n   */\n  constructor(\n    private doc: Document,\n    private delegate: RendererFactory2,\n    private zone: NgZone,\n    private animationType: 'animations' | 'noop',\n    private moduleImpl?: Promise<{\n      ɵcreateEngine: (type: 'animations' | 'noop', doc: Document) => AnimationEngine;\n      ɵAnimationRendererFactory: typeof AnimationRendererFactory;\n    }>,\n  ) {}\n\n  /** @docs-private */\n  ngOnDestroy(): void {\n    // When the root view is removed, the renderer defers the actual work to the\n    // `TransitionAnimationEngine` to do this, and the `TransitionAnimationEngine` doesn't actually\n    // remove the DOM node, but just calls `markElementAsRemoved()`. The actual DOM node is not\n    // removed until `TransitionAnimationEngine` \"flushes\".\n    // Note: we already flush on destroy within the `InjectableAnimationEngine`. The injectable\n    // engine is not provided when async animations are used.\n    this._engine?.flush();\n  }\n\n  /**\n   * @internal\n   */\n  private loadImpl(): Promise<AnimationRendererFactory> {\n    // Note on the `.then(m => m)` part below: Closure compiler optimizations in g3 require\n    // `.then` to be present for a dynamic import (or an import should be `await`ed) to detect\n    // the set of imported symbols.\n    const loadFn = () => this.moduleImpl ?? import('@angular/animations/browser').then((m) => m);\n\n    let moduleImplPromise: typeof this.moduleImpl;\n    if (this.loadingSchedulerFn) {\n      moduleImplPromise = this.loadingSchedulerFn(loadFn);\n    } else {\n      moduleImplPromise = loadFn();\n    }\n\n    return moduleImplPromise\n      .catch((e) => {\n        throw new RuntimeError(\n          RuntimeErrorCode.ANIMATION_RENDERER_ASYNC_LOADING_FAILURE,\n          (typeof ngDevMode === 'undefined' || ngDevMode) &&\n            'Async loading for animations package was ' +\n              'enabled, but loading failed. Angular falls back to using regular rendering. ' +\n              \"No animations will be displayed and their styles won't be applied.\",\n        );\n      })\n      .then(({ɵcreateEngine, ɵAnimationRendererFactory}) => {\n        // We can't create the renderer yet because we might need the hostElement and the type\n        // Both are provided in createRenderer().\n        this._engine = ɵcreateEngine(this.animationType, this.doc);\n        const rendererFactory = new ɵAnimationRendererFactory(\n          this.delegate,\n          this._engine,\n          this.zone,\n        );\n        this.delegate = rendererFactory;\n        return rendererFactory;\n      });\n  }\n\n  /**\n   * This method is delegating the renderer creation to the factories.\n   * It uses default factory while the animation factory isn't loaded\n   * and will rely on the animation factory once it is loaded.\n   *\n   * Calling this method will trigger as side effect the loading of the animation module\n   * if the renderered component uses animations.\n   */\n  createRenderer(hostElement: any, rendererType: RendererType2): Renderer2 {\n    const renderer = this.delegate.createRenderer(hostElement, rendererType);\n\n    if ((renderer as AnimationRenderer).ɵtype === AnimationRendererType.Regular) {\n      // The factory is already loaded, this is an animation renderer\n      return renderer;\n    }\n\n    // We need to prevent the DomRenderer to throw an error because of synthetic properties\n    if (typeof (renderer as any).throwOnSyntheticProps === 'boolean') {\n      (renderer as any).throwOnSyntheticProps = false;\n    }\n\n    // Using a dynamic renderer to switch the renderer implementation once the module is loaded.\n    const dynamicRenderer = new DynamicDelegationRenderer(renderer);\n\n    // Kick off the module loading if the component uses animations but the module hasn't been\n    // loaded yet.\n    if (rendererType?.data?.['animation'] && !this._rendererFactoryPromise) {\n      this._rendererFactoryPromise = this.loadImpl();\n    }\n\n    this._rendererFactoryPromise\n      ?.then((animationRendererFactory) => {\n        const animationRenderer = animationRendererFactory.createRenderer(\n          hostElement,\n          rendererType,\n        );\n        dynamicRenderer.use(animationRenderer);\n        this.scheduler ??= this.injector.get(ChangeDetectionScheduler, null, {optional: true});\n        this.scheduler?.notify(NotificationSource.AsyncAnimationsLoaded);\n      })\n      .catch((e) => {\n        // Permanently use regular renderer when loading fails.\n        dynamicRenderer.use(renderer);\n      });\n\n    return dynamicRenderer;\n  }\n\n  begin(): void {\n    this.delegate.begin?.();\n  }\n\n  end(): void {\n    this.delegate.end?.();\n  }\n\n  whenRenderingDone?(): Promise<any> {\n    return this.delegate.whenRenderingDone?.() ?? Promise.resolve();\n  }\n\n  /**\n   * Used during HMR to clear any cached data about a component.\n   * @param componentId ID of the component that is being replaced.\n   */\n  protected componentReplaced(componentId: string) {\n    // Flush the engine since the renderer destruction waits for animations to be done.\n    this._engine?.flush();\n    (this.delegate as {componentReplaced?: (id: string) => void}).componentReplaced?.(componentId);\n  }\n}\n\n/**\n * The class allows to dynamicly switch between different renderer implementations\n * by changing the delegate renderer.\n */\nexport class DynamicDelegationRenderer implements Renderer2 {\n  // List of callbacks that need to be replayed on the animation renderer once its loaded\n  private replay: ((renderer: Renderer2) => void)[] | null = [];\n  readonly ɵtype = AnimationRendererType.Delegated;\n\n  constructor(private delegate: Renderer2) {}\n\n  use(impl: Renderer2) {\n    this.delegate = impl;\n\n    if (this.replay !== null) {\n      // Replay queued actions using the animation renderer to apply\n      // all events and properties collected while loading was in progress.\n      for (const fn of this.replay) {\n        fn(impl);\n      }\n      // Set to `null` to indicate that the queue was processed\n      // and we no longer need to collect events and properties.\n      this.replay = null;\n    }\n  }\n\n  get data(): {[key: string]: any} {\n    return this.delegate.data;\n  }\n\n  destroy(): void {\n    this.replay = null;\n    this.delegate.destroy();\n  }\n\n  createElement(name: string, namespace?: string | null) {\n    return this.delegate.createElement(name, namespace);\n  }\n\n  createComment(value: string): void {\n    return this.delegate.createComment(value);\n  }\n\n  createText(value: string): any {\n    return this.delegate.createText(value);\n  }\n\n  get destroyNode(): ((node: any) => void) | null {\n    return this.delegate.destroyNode;\n  }\n\n  appendChild(parent: any, newChild: any): void {\n    this.delegate.appendChild(parent, newChild);\n  }\n\n  insertBefore(parent: any, newChild: any, refChild: any, isMove?: boolean | undefined): void {\n    this.delegate.insertBefore(parent, newChild, refChild, isMove);\n  }\n\n  removeChild(\n    parent: any,\n    oldChild: any,\n    isHostElement?: boolean | undefined,\n    requireSynchronousElementRemoval?: boolean,\n  ): void {\n    this.delegate.removeChild(parent, oldChild, isHostElement, requireSynchronousElementRemoval);\n  }\n\n  selectRootElement(selectorOrNode: any, preserveContent?: boolean | undefined): any {\n    return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n  }\n\n  parentNode(node: any): any {\n    return this.delegate.parentNode(node);\n  }\n\n  nextSibling(node: any): any {\n    return this.delegate.nextSibling(node);\n  }\n\n  setAttribute(el: any, name: string, value: string, namespace?: string | null | undefined): void {\n    this.delegate.setAttribute(el, name, value, namespace);\n  }\n\n  removeAttribute(el: any, name: string, namespace?: string | null | undefined): void {\n    this.delegate.removeAttribute(el, name, namespace);\n  }\n\n  addClass(el: any, name: string): void {\n    this.delegate.addClass(el, name);\n  }\n\n  removeClass(el: any, name: string): void {\n    this.delegate.removeClass(el, name);\n  }\n\n  setStyle(el: any, style: string, value: any, flags?: RendererStyleFlags2 | undefined): void {\n    this.delegate.setStyle(el, style, value, flags);\n  }\n\n  removeStyle(el: any, style: string, flags?: RendererStyleFlags2 | undefined): void {\n    this.delegate.removeStyle(el, style, flags);\n  }\n\n  setProperty(el: any, name: string, value: any): void {\n    // We need to keep track of animation properties set on default renderer\n    // So we can also set them also on the animation renderer\n    if (this.shouldReplay(name)) {\n      this.replay!.push((renderer: Renderer2) => renderer.setProperty(el, name, value));\n    }\n    this.delegate.setProperty(el, name, value);\n  }\n\n  setValue(node: any, value: string): void {\n    this.delegate.setValue(node, value);\n  }\n\n  listen(\n    target: any,\n    eventName: string,\n    callback: (event: any) => boolean | void,\n    options?: ListenerOptions,\n  ): () => void {\n    // We need to keep track of animation events registred by the default renderer\n    // So we can also register them against the animation renderer\n    if (this.shouldReplay(eventName)) {\n      this.replay!.push((renderer: Renderer2) =>\n        renderer.listen(target, eventName, callback, options),\n      );\n    }\n    return this.delegate.listen(target, eventName, callback, options);\n  }\n\n  private shouldReplay(propOrEventName: string): boolean {\n    //`null` indicates that we no longer need to collect events and properties\n    return this.replay !== null && propOrEventName.startsWith(ANIMATION_PREFIX);\n  }\n}\n\n/**\n * Provides a custom scheduler function for the async loading of the animation package.\n *\n * Private token for investigation purposes\n */\nexport const ɵASYNC_ANIMATION_LOADING_SCHEDULER_FN = new InjectionToken<<T>(loadFn: () => T) => T>(\n  typeof ngDevMode !== 'undefined' && ngDevMode ? 'async_animation_loading_scheduler_fn' : '',\n);\n","/**\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 */\n\nimport {DOCUMENT} from '@angular/common';\nimport {\n  ANIMATION_MODULE_TYPE,\n  EnvironmentProviders,\n  makeEnvironmentProviders,\n  NgZone,\n  RendererFactory2,\n  ɵperformanceMarkFeature as performanceMarkFeature,\n  inject,\n} from '@angular/core';\nimport {ɵDomRendererFactory2 as DomRendererFactory2} from '../../../index';\n\nimport {AsyncAnimationRendererFactory} from './async_animation_renderer';\n\n/**\n * Returns the set of dependency-injection providers\n * to enable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * When you use this function instead of the eager `provideAnimations()`, animations won't be\n * rendered until the renderer is loaded.\n *\n * @usageNotes\n *\n * The function is useful when you want to enable animations in an application\n * bootstrapped using the `bootstrapApplication` function. In this scenario there\n * is no need to import the `BrowserAnimationsModule` NgModule at all, just add\n * providers returned by this function to the `providers` list as show below.\n *\n * ```ts\n * bootstrapApplication(RootComponent, {\n *   providers: [\n *     provideAnimationsAsync()\n *   ]\n * });\n * ```\n *\n * @param type pass `'noop'` as argument to disable animations.\n *\n * @publicApi\n *\n * @deprecated 20.2 Use `animate.enter` or `animate.leave` instead. Intent to remove in v23\n */\nexport function provideAnimationsAsync(\n  type: 'animations' | 'noop' = 'animations',\n): EnvironmentProviders {\n  performanceMarkFeature('NgAsyncAnimations');\n\n  // Animations don't work on the server so we switch them over to no-op automatically.\n  if (typeof ngServerMode !== 'undefined' && ngServerMode) {\n    type = 'noop';\n  }\n\n  return makeEnvironmentProviders([\n    {\n      provide: RendererFactory2,\n      useFactory: () => {\n        return new AsyncAnimationRendererFactory(\n          inject(DOCUMENT),\n          inject(DomRendererFactory2),\n          inject(NgZone),\n          type,\n        );\n      },\n    },\n    {\n      provide: ANIMATION_MODULE_TYPE,\n      useValue: type === 'noop' ? 'NoopAnimations' : 'BrowserAnimations',\n    },\n  ]);\n}\n"],"names":["ANIMATION_PREFIX","AsyncAnimationRendererFactory","doc","delegate","zone","animationType","moduleImpl","_rendererFactoryPromise","scheduler","injector","inject","Injector","loadingSchedulerFn","ɵASYNC_ANIMATION_LOADING_SCHEDULER_FN","optional","_engine","constructor","ngOnDestroy","flush","loadImpl","loadFn","then","m","moduleImplPromise","catch","e","RuntimeError","ngDevMode","ɵcreateEngine","ɵAnimationRendererFactory","rendererFactory","createRenderer","hostElement","rendererType","renderer","ɵtype","throwOnSyntheticProps","dynamicRenderer","DynamicDelegationRenderer","data","animationRendererFactory","animationRenderer","use","get","ChangeDetectionScheduler","notify","begin","end","whenRenderingDone","Promise","resolve","componentReplaced","componentId","deps","target","i0","ɵɵFactoryTarget","Injectable","decorators","replay","impl","fn","destroy","createElement","name","namespace","createComment","value","createText","destroyNode","appendChild","parent","newChild","insertBefore","refChild","isMove","removeChild","oldChild","isHostElement","requireSynchronousElementRemoval","selectRootElement","selectorOrNode","preserveContent","parentNode","node","nextSibling","setAttribute","el","removeAttribute","addClass","removeClass","setStyle","style","flags","removeStyle","setProperty","shouldReplay","push","setValue","listen","eventName","callback","options","propOrEventName","startsWith","InjectionToken","provideAnimationsAsync","type","performanceMarkFeature","ngServerMode","makeEnvironmentProviders","provide","RendererFactory2","useFactory","DOCUMENT","DomRendererFactory2","NgZone","ANIMATION_MODULE_TYPE","useValue"],"mappings":"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"}