{"version":3,"file":"jsverse-transloco-preload-langs.mjs","sources":["../../../../libs/transloco-preload-langs/src/lib/preload-langs.service.ts","../../../../libs/transloco-preload-langs/src/lib/preload-langs.providers.ts","../../../../libs/transloco-preload-langs/src/jsverse-transloco-preload-langs.ts"],"sourcesContent":["import { Inject, Injectable, InjectionToken, OnDestroy } from '@angular/core';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { tap } from 'rxjs/operators';\nimport { forkJoin, Subscription } from 'rxjs';\n\nexport const TRANSLOCO_PRELOAD_LANGUAGES = /* @__PURE__ */ new InjectionToken<\n  string[]\n>(\n  typeof ngDevMode !== 'undefined' && ngDevMode\n    ? 'Languages to be preloaded'\n    : '',\n);\n\n@Injectable({ providedIn: 'root' })\nexport class TranslocoPreloadLangsService implements OnDestroy {\n  private readonly idleCallbackId: number | undefined;\n  private subscription: Subscription | null = null;\n\n  constructor(\n    service: TranslocoService,\n    @Inject(TRANSLOCO_PRELOAD_LANGUAGES) langs: string[],\n  ) {\n    if (!langs.length) return;\n\n    this.idleCallbackId = window.requestIdleCallback(() => {\n      const preloads = langs.map((currentLangOrScope) => {\n        const lang = service._completeScopeWithLang(currentLangOrScope);\n\n        let load$ = service.load(lang);\n\n        if (typeof ngDevMode !== 'undefined' && ngDevMode) {\n          load$ = load$.pipe(\n            tap(() => {\n              console.log(\n                `%c 👁 Preloaded ${lang}`,\n                'background: #fff; color: #607D8B;',\n              );\n            }),\n          );\n        }\n\n        return load$;\n      });\n      this.subscription = forkJoin(preloads).subscribe();\n    });\n  }\n\n  ngOnDestroy() {\n    if (this.idleCallbackId !== undefined) {\n      window.cancelIdleCallback(this.idleCallbackId);\n    }\n\n    this.subscription?.unsubscribe();\n    // Caretaker note: it's important to clean up references to subscriptions since they save the `next`\n    // callback within its `destination` property, preventing classes from being GC'd.\n    this.subscription = null;\n  }\n}\n","import { APP_INITIALIZER, makeEnvironmentProviders } from '@angular/core';\n\nimport {\n  TRANSLOCO_PRELOAD_LANGUAGES,\n  TranslocoPreloadLangsService,\n} from './preload-langs.service';\n\ninterface IdleDeadline {\n  didTimeout: false;\n  timeRemaining: () => number;\n}\n\nwindow.requestIdleCallback =\n  window.requestIdleCallback ??\n  function (cb: (deadLine: IdleDeadline) => void) {\n    const start = Date.now();\n\n    return setTimeout(function () {\n      cb({\n        didTimeout: false,\n        timeRemaining: function () {\n          return Math.max(0, 50 - (Date.now() - start));\n        },\n      });\n    }, 1);\n  };\n\nwindow.cancelIdleCallback =\n  window.cancelIdleCallback ??\n  function (id: number) {\n    clearTimeout(id);\n  };\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n\nexport function provideTranslocoPreloadLangs(langs: string[]) {\n  return makeEnvironmentProviders([\n    { provide: TRANSLOCO_PRELOAD_LANGUAGES, useValue: langs },\n    {\n      provide: APP_INITIALIZER,\n      useFactory: () => noop,\n      multi: true,\n      deps: [TranslocoPreloadLangsService],\n    },\n  ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}