{"version":3,"file":"ngx-lottie.mjs","sources":["../../../../libs/ngx-lottie/src/lib/symbols.ts","../../../../libs/ngx-lottie/src/lib/animation-loader.ts","../../../../libs/ngx-lottie/src/lib/cacheable-animation-loader/cacheable-animation-loader.ts","../../../../libs/ngx-lottie/src/lib/providers.ts","../../../../libs/ngx-lottie/src/lib/base.directive.ts","../../../../libs/ngx-lottie/src/lib/lottie.directive.ts","../../../../libs/ngx-lottie/src/lib/lottie.component.ts","../../../../libs/ngx-lottie/src/lib/server.ts","../../../../libs/ngx-lottie/src/lib/transfer-state.ts","../../../../libs/ngx-lottie/src/ngx-lottie.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface BMEnterFrameEvent {\n  type: 'enterFrame';\n  currentTime: number;\n  totalTime: number;\n  duration: number;\n}\n\nexport interface BMCompleteLoopEvent {\n  type: 'loopComplete';\n  currentLoop: boolean | number;\n  totalLoops: number;\n  direction: number;\n}\n\nexport interface BMCompleteEvent {\n  type: 'complete';\n  direction: number;\n}\n\nexport interface BMSegmentStartEvent {\n  type: 'segmentStart';\n  firstFrame: number;\n  totalFrames: number;\n}\n\nexport interface BMDestroyEvent {\n  target: AnimationItem;\n  type: 'destroy';\n}\n\nexport interface BMRenderFrameErrorEvent {\n  type: 'renderFrameError';\n  nativeError: Error;\n  currentTime: number;\n}\n\nexport interface BMConfigErrorEvent {\n  type: 'configError';\n  nativeError: Error;\n}\n\nexport type LottieEvent =\n  | BMEnterFrameEvent\n  | BMCompleteLoopEvent\n  | BMCompleteEvent\n  | BMSegmentStartEvent\n  | BMDestroyEvent\n  | BMRenderFrameErrorEvent\n  | BMConfigErrorEvent\n  | void;\n\nexport type CamelizedAnimationEventName =\n  | 'complete'\n  | 'loopComplete'\n  | 'enterFrame'\n  | 'segmentStart'\n  | 'configReady'\n  | 'dataReady'\n  | 'domLoaded'\n  | 'destroy'\n  | 'error';\n\nexport type EventsMap = { [key in CamelizedAnimationEventName]: AnimationEventName };\n\nexport type AnimationFilename = string;\nexport type AnimationEventName = import('lottie-web').AnimationEventName;\nexport type AnimationItem = import('lottie-web').AnimationItem;\nexport type LottiePlayer = typeof import('lottie-web').default;\n\n/**\n * @example\n * import player from 'lottie-web';\n * const factory = () => player;\n */\ntype LottiePlayerFactory = () => LottiePlayer;\n\n/**\n * @example\n * const factory = () => import('lottie-web');\n */\ntype LottieLoader = () => Promise<typeof import('lottie-web')>;\n\nexport type LottiePlayerFactoryOrLoader = LottiePlayerFactory | LottieLoader;\n\nexport interface LottieOptions {\n  // Determines whether to load files on a separate worker. Note: workers cannot load\n  // animations from URLs (if `options.path` is defined).\n  useWebWorker?: boolean;\n  player: LottiePlayerFactoryOrLoader;\n}\n\nexport type RendererType = import('lottie-web').RendererType;\n\nexport type AnimationConfigWithData<R extends RendererType = 'svg'> =\n  import('lottie-web').AnimationConfigWithData<R>;\nexport type AnimationConfigWithPath<R extends RendererType = 'svg'> =\n  import('lottie-web').AnimationConfigWithPath<R>;\n\nexport type AnimationOptions<R extends RendererType = 'svg'> =\n  | Partial<AnimationConfigWithData<R>>\n  | Partial<AnimationConfigWithPath<R>>;\n\nexport const LOTTIE_OPTIONS = new InjectionToken<LottieOptions>('LottieOptions');\n","import { Injectable, NgZone, inject, ɵisPromise } from '@angular/core';\n\nimport { Observable, from, of } from 'rxjs';\nimport { map, mergeMap, shareReplay, tap } from 'rxjs/operators';\n\nimport {\n  LOTTIE_OPTIONS,\n  LottiePlayer,\n  AnimationItem,\n  AnimationOptions,\n  AnimationConfigWithData,\n  AnimationConfigWithPath,\n} from './symbols';\n\nfunction convertPlayerOrLoaderToObservable(): Observable<LottiePlayer> {\n  const ngZone = inject(NgZone);\n  const { player, useWebWorker } = inject(LOTTIE_OPTIONS);\n  const playerOrLoader = ngZone.runOutsideAngular(() => player());\n  // We need to use `isPromise` instead of checking whether\n  // `result instanceof Promise`. In zone.js patched environments, `global.Promise`\n  // is the `ZoneAwarePromise`. Some APIs, which are likely not patched by zone.js\n  // for certain reasons, might not work with `instanceof`. For instance, the dynamic\n  // import `() => import('./chunk.js')` returns a native promise (not a `ZoneAwarePromise`),\n  // causing this check to be falsy.\n  const player$ = ɵisPromise(playerOrLoader)\n    ? from(playerOrLoader).pipe(map(module => module.default || module))\n    : of(playerOrLoader);\n\n  return player$.pipe(\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    tap(player => (player as any).useWebWorker?.(useWebWorker)),\n    shareReplay({ bufferSize: 1, refCount: true }),\n  );\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AnimationLoader {\n  protected player$ = convertPlayerOrLoaderToObservable().pipe(\n    mergeMap(player => raf$(this.ngZone).pipe(map(() => player))),\n  );\n\n  private ngZone = inject(NgZone);\n\n  loadAnimation(\n    options: AnimationConfigWithData | AnimationConfigWithPath,\n  ): Observable<AnimationItem> {\n    return this.player$.pipe(map(player => this.createAnimationItem(player, options)));\n  }\n\n  resolveOptions(\n    options: AnimationOptions | null,\n    container: HTMLElement,\n  ): AnimationConfigWithData | AnimationConfigWithPath {\n    return Object.assign(\n      {\n        container,\n        renderer: 'svg',\n        loop: true,\n        autoplay: true,\n      },\n      options,\n    );\n  }\n\n  protected createAnimationItem(\n    player: LottiePlayer,\n    options: AnimationConfigWithData | AnimationConfigWithPath,\n  ): AnimationItem {\n    return this.ngZone.runOutsideAngular(() => player.loadAnimation(options));\n  }\n}\n\nfunction raf$(ngZone: NgZone) {\n  return new Observable<void>(subscriber => {\n    const requestId = ngZone.runOutsideAngular(() =>\n      requestAnimationFrame(() => {\n        subscriber.next();\n        subscriber.complete();\n      }),\n    );\n    return () => cancelAnimationFrame(requestId);\n  });\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { map } from 'rxjs/operators';\n\nimport { AnimationLoader } from '../animation-loader';\nimport { AnimationItem, AnimationConfigWithData, AnimationConfigWithPath } from '../symbols';\n\n@Injectable({ providedIn: 'root' })\nexport class CacheableAnimationLoader extends AnimationLoader implements OnDestroy {\n  private cache = new Map<string, string>();\n\n  ngOnDestroy(): void {\n    this.cache.clear();\n  }\n\n  loadAnimation(options: AnimationConfigWithData | AnimationConfigWithPath) {\n    return this.player$.pipe(\n      map(player => {\n        const animationItem = this.createAnimationItem(player, this.transformOptions(options));\n        this.awaitConfigAndCache(options, animationItem);\n        return animationItem;\n      }),\n    );\n  }\n\n  private awaitConfigAndCache(\n    options: AnimationConfigWithData | AnimationConfigWithPath,\n    animationItem: AnimationItem,\n  ): void {\n    if (this.isAnimationConfigWithPath(options)) {\n      // Don't wait for the `config_ready` event if it has been cached previously.\n      if (this.cache.has(options.path!)) {\n        return;\n      }\n\n      animationItem.addEventListener('config_ready', () => {\n        // See the comments below on why we're storing the animation data as a string.\n        this.cache.set(options.path!, JSON.stringify(animationItem['animationData']));\n      });\n    }\n  }\n\n  private transformOptions(\n    options: AnimationConfigWithData | AnimationConfigWithPath,\n  ): AnimationConfigWithData | AnimationConfigWithPath {\n    if (this.isAnimationConfigWithPath(options) && this.cache.has(options.path!)) {\n      return {\n        ...options,\n        path: undefined,\n        // Caretaker note: `lottie-web` cannot re-use the `animationData` object between animations, and we\n        // have to retrieve a new object each time an animation is created.\n        // https://github.com/airbnb/lottie-web#html\n        // See comments for the `animationData` property.\n        animationData: JSON.parse(this.cache.get(options.path!)!),\n      };\n    } else {\n      return options;\n    }\n  }\n\n  private isAnimationConfigWithPath(\n    options: Record<string, unknown>,\n  ): options is AnimationConfigWithPath {\n    return typeof options.path === 'string';\n  }\n}\n","import { Provider } from '@angular/core';\n\nimport { AnimationLoader } from './animation-loader';\nimport { LottieOptions, LOTTIE_OPTIONS } from './symbols';\nimport { CacheableAnimationLoader } from './cacheable-animation-loader/cacheable-animation-loader';\n\nexport function provideCacheableAnimationLoader(): Provider[] {\n  return [\n    {\n      provide: AnimationLoader,\n      useExisting: CacheableAnimationLoader,\n    },\n  ];\n}\n\nexport function provideLottieOptions(options: LottieOptions): Provider[] {\n  return [\n    {\n      provide: LOTTIE_OPTIONS,\n      useValue: options,\n    },\n  ];\n}\n","import {\n  Directive,\n  Output,\n  SimpleChanges,\n  NgZone,\n  inject,\n  input,\n  PLATFORM_ID,\n  OnDestroy,\n} from '@angular/core';\n\nimport { Subject, BehaviorSubject, Observable, defer } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\n\nimport {\n  AnimationOptions,\n  BMCompleteEvent,\n  BMCompleteLoopEvent,\n  BMEnterFrameEvent,\n  BMSegmentStartEvent,\n  BMDestroyEvent,\n  BMRenderFrameErrorEvent,\n  BMConfigErrorEvent,\n  AnimationItem,\n  AnimationEventName,\n} from './symbols';\nimport { AnimationLoader } from './animation-loader';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Directive({ selector: '[lottie]' })\nexport class BaseDirective implements OnDestroy {\n  options = input<AnimationOptions | null>(null);\n\n  containerClass = input<string | null>(null);\n\n  styles = input<Partial<CSSStyleDeclaration> | null>(null);\n\n  /**\n   * `animationCreated` is dispatched after calling `loadAnimation`.\n   */\n  @Output() readonly animationCreated = this.getAnimationItem();\n\n  /**\n   * `complete` is dispatched after completing the last frame.\n   */\n  @Output() readonly complete =\n    this.awaitAnimationItemAndStartListening<BMCompleteEvent>('complete');\n\n  /**\n   * `loopComplete` is dispatched after completing the frame loop.\n   */\n  @Output() readonly loopComplete =\n    this.awaitAnimationItemAndStartListening<BMCompleteLoopEvent>('loopComplete');\n\n  /**\n   * `enterFrame` is dispatched after entering the new frame.\n   */\n  @Output() readonly enterFrame =\n    this.awaitAnimationItemAndStartListening<BMEnterFrameEvent>('enterFrame');\n\n  /**\n   * `segmentStart` is dispatched when the new segment is adjusted.\n   */\n  @Output() readonly segmentStart =\n    this.awaitAnimationItemAndStartListening<BMSegmentStartEvent>('segmentStart');\n\n  /**\n   * Original event name is `config_ready`. `config_ready` is dispatched\n   * after the needed renderer is configured.\n   */\n  @Output() readonly configReady = this.awaitAnimationItemAndStartListening<void>('config_ready');\n\n  /**\n   * Original event name is `data_ready`. `data_ready` is dispatched\n   * when all parts of the animation have been loaded.\n   */\n  @Output() readonly dataReady = this.awaitAnimationItemAndStartListening<void>('data_ready');\n\n  /**\n   * Original event name is `DOMLoaded`. `DOMLoaded` is dispatched\n   * when elements have been added to the DOM.\n   */\n  @Output() readonly domLoaded = this.awaitAnimationItemAndStartListening<void>('DOMLoaded');\n\n  /**\n   * `destroy` will be dispatched when the component gets destroyed,\n   * it's handy for releasing resources.\n   */\n  @Output() readonly destroy = this.awaitAnimationItemAndStartListening<BMDestroyEvent>('destroy');\n\n  /**\n   * `error` will be dispatched if the Lottie player could not render\n   * some frame or parse config.\n   */\n  @Output() readonly error = this.awaitAnimationItemAndStartListening<\n    BMRenderFrameErrorEvent | BMConfigErrorEvent\n  >('error');\n\n  private ngZone = inject(NgZone);\n  private isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n  private animationLoader = inject(AnimationLoader);\n\n  private loadAnimation$ = new Subject<[SimpleChanges, HTMLElement]>();\n  private animationItem$ = new BehaviorSubject<AnimationItem | null>(null);\n\n  constructor() {\n    this.setupLoadAnimationListener();\n  }\n\n  ngOnDestroy(): void {\n    this.destroyAnimation();\n    this.loadAnimation$.complete();\n    this.animationItem$.complete();\n  }\n\n  protected loadAnimation(changes: SimpleChanges, container: HTMLElement): void {\n    this.ngZone.runOutsideAngular(() => this.loadAnimation$.next([changes, container]));\n  }\n\n  private getAnimationItem(): Observable<AnimationItem> {\n    return defer(() => this.animationItem$).pipe(\n      filter(\n        (animationItem: AnimationItem | null): animationItem is AnimationItem =>\n          animationItem !== null,\n      ),\n    );\n  }\n\n  private awaitAnimationItemAndStartListening<T>(name: AnimationEventName): Observable<T> {\n    return this.getAnimationItem().pipe(\n      switchMap(\n        animationItem =>\n          // `fromEvent` will try to call `removeEventListener` when `unsubscribe()` is invoked.\n          // The problem is that `ngOnDestroy()` is called before Angular unsubscribes from\n          // `@Output()` properties, thus `animationItem` will be `null` already, also `lottie-web`\n          // removes event listeners when calling `destroy()`.\n          new Observable<T>(observer => {\n            this.ngZone.runOutsideAngular(() => {\n              animationItem.addEventListener(name, event => {\n                this.ngZone.runOutsideAngular(() => {\n                  observer.next(event as T);\n                });\n              });\n            });\n          }),\n      ),\n    );\n  }\n\n  private setupLoadAnimationListener(): void {\n    const loadAnimation$ = this.loadAnimation$.pipe(\n      filter(([changes]) => this.isBrowser && changes.options !== undefined),\n    );\n\n    loadAnimation$\n      .pipe(\n        switchMap(([changes, container]) => {\n          this.destroyAnimation();\n          return this.animationLoader.loadAnimation(\n            this.animationLoader.resolveOptions(changes.options.currentValue, container),\n          );\n        }),\n      )\n      .subscribe(animationItem => {\n        this.ngZone.run(() => this.animationItem$.next(animationItem));\n      });\n  }\n\n  private destroyAnimation(): void {\n    const animationItem = this.animationItem$.getValue();\n    // The `ng-lottie` component or the `lottie` directive can be destroyed\n    // before the `animationItem` is set, thus it will fail with\n    // `Cannot read property 'destroy' of null`.\n    // Potentially it can happen if the directive gets destroyed before change\n    // detection is run.\n    if (animationItem === null) {\n      return;\n    }\n\n    // `destroy()` will remove all events listeners.\n    animationItem.destroy();\n    this.animationItem$.next(null);\n  }\n}\n","import { Directive, ElementRef, OnChanges, SimpleChanges, inject } from '@angular/core';\n\nimport { BaseDirective } from './base.directive';\n\n@Directive({ selector: '[lottie]', standalone: true })\nexport class LottieDirective extends BaseDirective implements OnChanges {\n  private host = inject(ElementRef);\n\n  ngOnChanges(changes: SimpleChanges): void {\n    super.loadAnimation(changes, this.host.nativeElement);\n  }\n}\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  Input,\n  ElementRef,\n  ViewChild,\n  OnChanges,\n  SimpleChanges,\n  input,\n} from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\nimport { BaseDirective } from './base.directive';\n\n@Component({\n  selector: 'ng-lottie',\n  template: `\n    <div\n      #container\n      [style.width]=\"width() || '100%'\"\n      [style.height]=\"height() || '100%'\"\n      [ngStyle]=\"styles()\"\n      [ngClass]=\"containerClass()\"\n    ></div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NgStyle, NgClass],\n})\nexport class LottieComponent extends BaseDirective implements OnChanges {\n  width = input<string | null>(null);\n  height = input<string | null>(null);\n\n  @ViewChild('container', { static: true }) container: ElementRef<HTMLElement> = null!;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    super.loadAnimation(changes, this.container.nativeElement);\n  }\n}\n","import { AnimationFilename } from './symbols';\n\nexport function transformAnimationFilenameToKey(animation: AnimationFilename): string {\n  const [animationName] = animation.split('.json');\n  return `animation-${animationName}`;\n}\n","import { Injectable, makeStateKey, TransferState } from '@angular/core';\n\nimport { AnimationFilename } from './symbols';\nimport { transformAnimationFilenameToKey } from './server';\n\n@Injectable({ providedIn: 'root' })\nexport class LottieTransferState {\n  constructor(private transferState: TransferState) {}\n\n  get<T>(animation: AnimationFilename): T | null {\n    const animationKey = transformAnimationFilenameToKey(animation);\n    const stateKey = makeStateKey<T>(animationKey);\n    return this.transferState.get(stateKey, null);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ɵisPromise"],"mappings":"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"}