{"version":3,"file":"ngx-lottie-server.mjs","sources":["../../../../libs/ngx-lottie/server/src/utils.ts","../../../../libs/ngx-lottie/server/src/symbols.ts","../../../../libs/ngx-lottie/server/src/internals.ts","../../../../libs/ngx-lottie/server/src/lottie-server.module.ts","../../../../libs/ngx-lottie/server/src/ngx-lottie-server.ts"],"sourcesContent":["import { readFile } from 'fs';\n\nimport { AnimationData } from './symbols';\n\n/** A simple cache used to store the serialized animation data. */\nconst cache = new Map<string, AnimationData>();\n\nexport function readFileWithAnimationData(path: string): Promise<AnimationData> {\n  return cache.has(path)\n    ? Promise.resolve(cache.get(path)!)\n    : new Promise((resolve, reject) => {\n        readFile(path, (error, buffer) => {\n          if (error) {\n            reject(error);\n          } else {\n            const data = buffer.toString();\n            cache.set(path, data);\n            resolve(data);\n          }\n        });\n      });\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface LottieServerOptions {\n  preloadAnimations: {\n    folder: string;\n    animations: string[];\n  };\n}\n\nexport type PathToAnimation = string;\nexport type AnimationData = string;\n\nexport const LOTTIE_SERVER_OPTIONS = new InjectionToken<LottieServerOptions>('LottieServerOptions');\n","import { join } from 'node:path';\nimport { inject, makeStateKey, TransferState } from '@angular/core';\nimport { AnimationFilename, transformAnimationFilenameToKey } from 'ngx-lottie';\n\nimport { readFileWithAnimationData } from './utils';\nimport {\n  LottieServerOptions,\n  PathToAnimation,\n  AnimationData,\n  LOTTIE_SERVER_OPTIONS,\n} from './symbols';\n\n/** Will be provided through Terser global definitions when the app is build in production mode. */\ndeclare const ngDevMode: boolean;\n\nfunction readAndTransferAnimationData(\n  transferState: TransferState,\n  animations: AnimationFilename[],\n  pathsToAnimations: PathToAnimation[],\n): Promise<void>[] {\n  const sources: Promise<void>[] = [];\n\n  for (let i = 0, length = animations.length; i < length; i++) {\n    const path = pathsToAnimations[i];\n\n    const source = readFileWithAnimationData(path)\n      .then(animationData => {\n        transferAnimationData(transferState, animations[i], animationData);\n      })\n      .catch(error => {\n        if (typeof ngDevMode !== 'undefined' && ngDevMode) {\n          console.error(`Failed to read the following file ${path}. Error: `, error);\n        }\n\n        // This is empty since we don't have to do anything if the file was failed to read.\n      });\n\n    sources.push(source);\n  }\n\n  return sources;\n}\n\nfunction transferAnimationData(\n  state: TransferState,\n  animation: AnimationFilename,\n  animationData: AnimationData,\n): void {\n  animation = transformAnimationFilenameToKey(animation);\n  const key = makeStateKey(animation);\n  if (state.hasKey(key)) {\n    return;\n  }\n  state.set(key, JSON.parse(animationData));\n}\n\nexport async function appInitializer() {\n  const options = inject(LOTTIE_SERVER_OPTIONS);\n  const transferState = inject(TransferState);\n  const pathsToAnimations = resolveLottiePaths(options);\n  const sources = readAndTransferAnimationData(\n    transferState,\n    options.preloadAnimations.animations,\n    pathsToAnimations,\n  );\n\n  await Promise.all(sources);\n}\n\nexport function resolveLottiePaths({ preloadAnimations }: LottieServerOptions): PathToAnimation[] {\n  const { folder, animations } = preloadAnimations;\n  const path = join(process.cwd(), folder);\n  return animations.map(animation => join(path, animation));\n}\n","import {\n  NgModule,\n  ModuleWithProviders,\n  makeEnvironmentProviders,\n  provideAppInitializer,\n} from '@angular/core';\n\nimport { appInitializer } from './internals';\nimport { LOTTIE_SERVER_OPTIONS, LottieServerOptions } from './symbols';\n\n@NgModule()\nexport class LottieServerModule {\n  static forRoot(options: LottieServerOptions): ModuleWithProviders<LottieServerModule> {\n    return {\n      ngModule: LottieServerModule,\n      providers: [\n        {\n          provide: LOTTIE_SERVER_OPTIONS,\n          useValue: options,\n        },\n        provideAppInitializer(appInitializer),\n      ],\n    };\n  }\n}\n\nexport function provideLottieServerOptions(options: LottieServerOptions) {\n  return makeEnvironmentProviders([\n    {\n      provide: LOTTIE_SERVER_OPTIONS,\n      useValue: options,\n    },\n    provideAppInitializer(appInitializer),\n  ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}