{
  "version": 3,
  "sources": ["src/app/lazy-load/lazy-load.service.ts"],
  "sourcesContent": ["import {\r\n  Injectable,\r\n  Inject,\r\n} from '@angular/core';\r\nimport { ReplaySubject, Observable } from 'rxjs';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class LazyLoadService {\r\n  private loadedLibraries: { [url: string]: ReplaySubject<boolean> } = {};\r\n\r\n  constructor(\r\n    @Inject(DOCUMENT) private readonly document: Document\r\n  ) {\r\n  }\r\n\r\n  loadScript(url: string, atIdleTime?: boolean, delay?: boolean): Observable<boolean> {\r\n    const doc = this.document;\r\n    if (this.loadedLibraries[url]) {\r\n      return this.loadedLibraries[url].asObservable();\r\n    }\r\n\r\n    this.loadedLibraries[url] = new ReplaySubject();\r\n\r\n\r\n    const script = doc.createElement('script');\r\n    script.type = 'text/javascript';\r\n    script.src = url;\r\n    script.setAttribute('defer','');\r\n\r\n    script.addEventListener('load', () => this.onLoad(url));\r\n    script.addEventListener('error', () => this.onError(url));\r\n\r\n    if (atIdleTime && 'requestIdleCallback' in window) {\r\n      window.requestIdleCallback(() => {\r\n        doc.head.insertBefore(script, doc.head.firstChild);\r\n      });\r\n    } else if(delay) {\r\n      doc.body.appendChild(script);\r\n      // setTimeout(() => doc.head.insertBefore(script, doc.head.firstChild), delay);    \r\n    } else {\r\n      doc.head.insertBefore(script, doc.head.firstChild);\r\n    }\r\n\r\n\r\n    return this.loadedLibraries[url].asObservable();\r\n  }\r\n\r\n  loadStyle(url: string, atIdleTime?: boolean): Observable<any> {\r\n    const doc = this.document;\r\n    if (this.loadedLibraries[url]) {\r\n      return this.loadedLibraries[url].asObservable();\r\n    }\r\n\r\n    this.loadedLibraries[url] = new ReplaySubject();\r\n\r\n    const style = doc.createElement('link');\r\n    style.type = 'text/css';\r\n    style.href = url;\r\n    style.rel = 'stylesheet';\r\n\r\n    style.addEventListener('load', () => this.onLoad(url));\r\n    style.addEventListener('error', () => this.onError(url));\r\n\r\n    if (atIdleTime && 'requestIdleCallback' in window) {\r\n      window.requestIdleCallback(() => {\r\n        doc.head.appendChild(style);\r\n      });\r\n    } else {\r\n      doc.head.appendChild(style);\r\n    }\r\n\r\n    return this.loadedLibraries[url].asObservable();\r\n  }\r\n\r\n  onLoad(url): void {\r\n    const ll = this.loadedLibraries;\r\n    ll[url].next(true);\r\n    ll[url].complete();\r\n  }\r\n\r\n  onError(url): void {\r\n    this.loadedLibraries[url].error(`error to load ${url}`);\r\n  }\r\n\r\n}\r\n"],
  "mappings": "gGAUA,IAAaA,GAAe,IAAA,CAAtB,IAAOA,EAAP,MAAOA,CAAe,CAG1BC,YACqCC,EAAkB,CAAlB,KAAAA,SAAAA,EAH7B,KAAAC,gBAA6D,CAAA,CAKrE,CAEAC,WAAWC,EAAaC,EAAsBC,EAAe,CAC3D,IAAMC,EAAM,KAAKN,SACjB,GAAI,KAAKC,gBAAgBE,CAAG,EAC1B,OAAO,KAAKF,gBAAgBE,CAAG,EAAEI,aAAY,EAG/C,KAAKN,gBAAgBE,CAAG,EAAI,IAAIK,EAGhC,IAAMC,EAASH,EAAII,cAAc,QAAQ,EACzCD,OAAAA,EAAOE,KAAO,kBACdF,EAAOG,IAAMT,EACbM,EAAOI,aAAa,QAAQ,EAAE,EAE9BJ,EAAOK,iBAAiB,OAAQ,IAAM,KAAKC,OAAOZ,CAAG,CAAC,EACtDM,EAAOK,iBAAiB,QAAS,IAAM,KAAKE,QAAQb,CAAG,CAAC,EAEpDC,GAAc,wBAAyBa,OACzCA,OAAOC,oBAAoB,IAAK,CAC9BZ,EAAIa,KAAKC,aAAaX,EAAQH,EAAIa,KAAKE,UAAU,CACnD,CAAC,EACOhB,EACRC,EAAIgB,KAAKC,YAAYd,CAAM,EAG3BH,EAAIa,KAAKC,aAAaX,EAAQH,EAAIa,KAAKE,UAAU,EAI5C,KAAKpB,gBAAgBE,CAAG,EAAEI,aAAY,CAC/C,CAEAiB,UAAUrB,EAAaC,EAAoB,CACzC,IAAME,EAAM,KAAKN,SACjB,GAAI,KAAKC,gBAAgBE,CAAG,EAC1B,OAAO,KAAKF,gBAAgBE,CAAG,EAAEI,aAAY,EAG/C,KAAKN,gBAAgBE,CAAG,EAAI,IAAIK,EAEhC,IAAMiB,EAAQnB,EAAII,cAAc,MAAM,EACtCe,OAAAA,EAAMd,KAAO,WACbc,EAAMC,KAAOvB,EACbsB,EAAME,IAAM,aAEZF,EAAMX,iBAAiB,OAAQ,IAAM,KAAKC,OAAOZ,CAAG,CAAC,EACrDsB,EAAMX,iBAAiB,QAAS,IAAM,KAAKE,QAAQb,CAAG,CAAC,EAEnDC,GAAc,wBAAyBa,OACzCA,OAAOC,oBAAoB,IAAK,CAC9BZ,EAAIa,KAAKI,YAAYE,CAAK,CAC5B,CAAC,EAEDnB,EAAIa,KAAKI,YAAYE,CAAK,EAGrB,KAAKxB,gBAAgBE,CAAG,EAAEI,aAAY,CAC/C,CAEAQ,OAAOZ,EAAG,CACR,IAAMyB,EAAK,KAAK3B,gBAChB2B,EAAGzB,CAAG,EAAE0B,KAAK,EAAI,EACjBD,EAAGzB,CAAG,EAAE2B,SAAQ,CAClB,CAEAd,QAAQb,EAAG,CACT,KAAKF,gBAAgBE,CAAG,EAAE4B,MAAM,iBAAiB5B,CAAG,EAAE,CACxD,yCA3EWL,GAAekC,EAIhBC,CAAQ,CAAA,CAAA,wBAJPnC,EAAeoC,QAAfpC,EAAeqC,UAAAC,WAFd,MAAM,CAAA,EAEd,IAAOtC,EAAPuC,SAAOvC,CAAe,GAAA",
  "names": ["LazyLoadService", "constructor", "document", "loadedLibraries", "loadScript", "url", "atIdleTime", "delay", "doc", "asObservable", "ReplaySubject", "script", "createElement", "type", "src", "setAttribute", "addEventListener", "onLoad", "onError", "window", "requestIdleCallback", "head", "insertBefore", "firstChild", "body", "appendChild", "loadStyle", "style", "href", "rel", "ll", "next", "complete", "error", "\u0275\u0275inject", "DOCUMENT", "factory", "\u0275fac", "providedIn", "_LazyLoadService"]
}