{"version":3,"file":"ngx-img-fallback.mjs","sources":["../../src/app/modules/ngx-img-fallback/ngx-img-fallback.directive.ts","../../src/app/modules/ngx-img-fallback/ngx-img-fallback.module.ts","../../src/app/modules/ngx-img-fallback/index.ts","../../public_api.ts","../../ngx-img-fallback.ts"],"sourcesContent":["/**\n * Created by vadimdez on 28/01/2018.\n */\nimport { Directive, ElementRef, Input, Output, EventEmitter, OnDestroy, Renderer2 } from '@angular/core';\n\n@Directive({\n  selector: '[src-fallback]'\n})\nexport class ImgFallbackDirective implements OnDestroy {\n\n  @Input('src-fallback') imgSrc!: string;\n  @Output('loaded') loaded = new EventEmitter<boolean>();\n  private nativeElement: HTMLElement;\n  private isApplied: boolean = false;\n  private ERROR_EVENT_TYPE: string = 'error';\n  private LOAD_EVENT_TYPE: string = 'load';\n  private cancelOnError!: Function;\n  private cancelOnLoad!: Function;\n\n  constructor(private el: ElementRef, private renderer: Renderer2) {\n    this.nativeElement = el.nativeElement;\n\n    this.onError = this.onError.bind(this);\n    this.onLoad = this.onLoad.bind(this);\n    this.addEvents();\n  }\n\n  ngOnDestroy() {\n    this.removeErrorEvent();\n    this.removeOnLoadEvent();\n  }\n\n  private onError() {\n    if (this.nativeElement.getAttribute('src') !== this.imgSrc) {\n      this.isApplied = true;\n      this.renderer.setAttribute(this.nativeElement, 'src', this.imgSrc);\n    } else {\n      this.removeOnLoadEvent();\n    }\n  }\n\n  private onLoad() {\n    this.loaded.emit(this.isApplied);\n  }\n\n  private removeErrorEvent() {\n    if (this.cancelOnError) {\n      this.cancelOnError();\n    }\n  }\n\n  private removeOnLoadEvent() {\n    if (this.cancelOnLoad) {\n      this.cancelOnLoad();\n    }\n  }\n\n  private addEvents() {\n    this.cancelOnError = this.renderer.listen(this.nativeElement, this.ERROR_EVENT_TYPE, this.onError);\n    this.cancelOnLoad = this.renderer.listen(this.nativeElement, this.LOAD_EVENT_TYPE, this.onLoad);\n  }\n}\n","/**\n * Created by vadimdez on 27/11/2016.\n */\nimport { NgModule } from '@angular/core';\n\nimport { ImgFallbackDirective } from './ngx-img-fallback.directive';\n\n@NgModule({\n  declarations: [ImgFallbackDirective],\n  exports: [ImgFallbackDirective]\n})\nexport class ImgFallbackModule { }\n","/**\n * Created by Vadym Yatsyuk on 28.01.18\n */\n\nexport * from './ngx-img-fallback.module';\nexport * from './ngx-img-fallback.directive';","/**\n * Created by Vadym Yatsyuk on 28.01.18\n */\nexport * from './src/app/modules/ngx-img-fallback/index';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}