{"version":3,"file":"ngx-script-loader.mjs","sources":["../../../projects/ngx-script-loader/src/lib/script.service.ts","../../../projects/ngx-script-loader/src/lib/script.component.ts","../../../projects/ngx-script-loader/src/lib/script-loader.module.ts","../../../projects/ngx-script-loader/src/public_api.ts","../../../projects/ngx-script-loader/src/ngx-script-loader.ts"],"sourcesContent":["import { Injectable, Inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { take, shareReplay } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ScriptService {\n\n  constructor(@Inject(DOCUMENT) private _document: any) {}\n\n  private scriptsLoaders: {\n    [url: string]: Observable<Event>\n  } = {};\n\n  private _loadScript(url: string, attributes?: {[s: string]: string}, targetEl: HTMLElement | string = 'head' ): Observable<Event> {\n    return new Observable<Event>((observer) => {\n      const script: HTMLScriptElement = this._document.createElement('script');\n\n      if (attributes) {\n        for (const key in attributes) {\n          if (attributes.hasOwnProperty(key)) {\n            script.setAttribute(key, attributes[key]);\n          }\n        }\n      }\n\n      script.onload = (event: Event) => {\n        observer.next(event);\n        observer.complete();\n      };\n\n      script.onerror = err => {\n        observer.error(err);\n      };\n\n      script.src = url;\n\n      const targetElement: HTMLElement = typeof targetEl === 'string' ? this._document.querySelector(targetEl) : targetEl;\n      targetElement.appendChild(script);\n    });\n  }\n\n  /**\n   * Injects script from given url to target place in DOM\n   * This method loads script from same url once.\n   *\n   * @param url Url of the external script to be loaded\n   * @param attributes Attribute list to be added to the script element\n   * @param targetEl Target element for the placing script tag. It can be a selector or a element reference\n   */\n  loadScript(url: string, attributes?: {[s: string]: string}, targetEl: HTMLElement | string = 'head' ): Observable<Event> {\n    return this.scriptsLoaders[url] = this.scriptsLoaders[url] || this._loadScript(url, attributes, targetEl)\n      .pipe(\n        take(1),\n        shareReplay(1)\n      );\n  }\n\n  /**\n   * Injects script from given url to target place in DOM\n   * If you call this method for same url multiple times, it will inject same code to document multiple times.\n   *\n   * @param url Url of the external script to be loaded\n   * @param attributes Attribute list to be added to the script element\n   * @param targetEl Target element for the placing script tag. It can be a selector or a element reference\n   */\n  runScript(url: string, attributes?: {[s: string]: string}, targetEl: HTMLElement | string = 'head'): Observable<Event> {\n    return this._loadScript(url, attributes, targetEl);\n  }\n}\n","/* eslint-disable @angular-eslint/no-output-native */\nimport { Component, OnInit, Input, ElementRef, Output, EventEmitter } from '@angular/core';\nimport { ScriptService } from './script.service';\n\n@Component({\n  selector: 'ngx-script',\n  template: '',\n  styleUrls: []\n})\nexport class ScriptComponent implements OnInit {\n\n  @Input()\n  src: string;\n\n  @Input()\n  attributes: {[key: string]: string} = {};\n\n  @Output() load = new EventEmitter<Event>();\n\n  @Output() error = new EventEmitter<Event>();\n\n  constructor(private scriptService: ScriptService, private element: ElementRef) {}\n\n  ngOnInit() {\n    this.scriptService.loadScript(this.src, this.attributes, this.element.nativeElement)\n      .subscribe((event) => {\n        this.load.emit(event);\n      }, (error) => {\n        this.error.emit(error);\n      });\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScriptComponent } from './script.component';\n\n@NgModule({\n  declarations: [\n    ScriptComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    ScriptComponent\n  ]\n})\nexport class ScriptLoaderModule {}\n","/*\n * Public API Surface of ngx-script-loader\n */\n\nexport * from './lib/script.service';\nexport * from './lib/script.component';\nexport * from './lib/script-loader.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ScriptService"],"mappings":"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"}