ng-wsl-library 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,8 +20,8 @@ export class WslImageDirective {
20
20
  this.el.nativeElement.removeEventListener('error', this.errorListener);
21
21
  }
22
22
  }
23
- setupImageWithFallback() {
24
- const primaryUrl = this.langPathPipe.transform(this.src, this.lang, this.domain);
23
+ async setupImageWithFallback() {
24
+ const primaryUrl = await this.langPathPipe.transform(this.src, this.lang, this.domain);
25
25
  this.renderer.setAttribute(this.el.nativeElement, 'src', primaryUrl);
26
26
  this.errorListener = () => {
27
27
  if (!this.hasAttemptedFallback) {
@@ -67,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
67
67
  }], hideOnError: [{
68
68
  type: Input
69
69
  }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3NsLWltYWdlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXdzbC1saWJyYXJ5L3NyYy9saWIvZGlyZWN0aXZlcy93c2wtaW1hZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxHQUlOLE1BQU0sZUFBZSxDQUFDOzs7QUFPdkIsTUFBTSxPQUFPLGlCQUFpQjtJQVc1QixZQUNVLEVBQWdDLEVBQ2hDLFFBQW1CLEVBQ25CLFlBQTZCO1FBRjdCLE9BQUUsR0FBRixFQUFFLENBQThCO1FBQ2hDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBUjlCLGdCQUFXLEdBQVksSUFBSSxDQUFDLENBQUMsOENBQThDO1FBRzVFLHlCQUFvQixHQUFHLEtBQUssQ0FBQztJQU1sQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN4RTtJQUNILENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQzVDLElBQUksQ0FBQyxHQUFHLEVBQ1IsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsTUFBTSxDQUNaLENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztnQkFFakMsTUFBTSxXQUFXLEdBQ2YsSUFBSSxDQUFDLGNBQWMsS0FBSyxTQUFTO29CQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7b0JBQzlDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUUzQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDdkU7aUJBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNsRTtRQUNILENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVPLFFBQVEsQ0FBQyxJQUFZLEVBQUUsTUFBc0I7UUFDbkQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxPQUFPLEdBQUcsV0FBVyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7OzhHQWxFVSxpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO2lCQUMxQjt1SkFFVSxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV3NsTGFuZ1BhdGhQaXBlIH0gZnJvbSAnLi4vcGlwZXMvd3NsLWxhbmctcGF0aC93c2wtbGFuZy1wYXRoLnBpcGUnO1xuaW1wb3J0IHsgV3NsTGFuZ1BhdGhPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy93c2wtbGFuZy1wYXRoLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW1nW3dzbEltYWdlXScsXG59KVxuZXhwb3J0IGNsYXNzIFdzbEltYWdlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBzcmMhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhbmc/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRvbWFpbj86IHN0cmluZyB8IG51bGw7XG4gIEBJbnB1dCgpIGZhbGxiYWNrRG9tYWluPzogc3RyaW5nIHwgbnVsbDtcbiAgQElucHV0KCkgd3NsT3B0aW9ucz86IFdzbExhbmdQYXRoT3B0aW9ucztcbiAgQElucHV0KCkgaGlkZU9uRXJyb3I6IGJvb2xlYW4gPSB0cnVlOyAvLyBIaWRlIGltYWdlIGFmdGVyIGFsbCBmYWxsYmFjayBhdHRlbXB0cyBmYWlsXG5cbiAgcHJpdmF0ZSBlcnJvckxpc3RlbmVyPzogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBoYXNBdHRlbXB0ZWRGYWxsYmFjayA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgbGFuZ1BhdGhQaXBlOiBXc2xMYW5nUGF0aFBpcGVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zcmMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHVwSW1hZ2VXaXRoRmFsbGJhY2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVycm9yTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIHRoaXMuZXJyb3JMaXN0ZW5lcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEltYWdlV2l0aEZhbGxiYWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IHByaW1hcnlVcmwgPSB0aGlzLmxhbmdQYXRoUGlwZS50cmFuc2Zvcm0oXG4gICAgICB0aGlzLnNyYyxcbiAgICAgIHRoaXMubGFuZyxcbiAgICAgIHRoaXMuZG9tYWluXG4gICAgKTtcblxuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3NyYycsIHByaW1hcnlVcmwpO1xuXG4gICAgdGhpcy5lcnJvckxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmhhc0F0dGVtcHRlZEZhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuaGFzQXR0ZW1wdGVkRmFsbGJhY2sgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGZhbGxiYWNrVXJsID1cbiAgICAgICAgICB0aGlzLmZhbGxiYWNrRG9tYWluICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gdGhpcy5idWlsZFVybCh0aGlzLnNyYywgdGhpcy5mYWxsYmFja0RvbWFpbilcbiAgICAgICAgICAgIDogdGhpcy5idWlsZFVybCh0aGlzLnNyYywgdGhpcy5kb21haW4pO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3NyYycsIGZhbGxiYWNrVXJsKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5oaWRlT25FcnJvcikge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdzcmMnLCAnJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHRoaXMuZXJyb3JMaXN0ZW5lcik7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVXJsKHBhdGg6IHN0cmluZywgZG9tYWluPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKCFkb21haW4pIHtcbiAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICBjb25zdCBjbGVhbkRvbWFpbiA9IGRvbWFpbi5yZXBsYWNlKC9cXC8kLywgJycpO1xuICAgIGNvbnN0IGNsZWFuUGF0aCA9IHBhdGgucmVwbGFjZSgvXlxcLy8sICcnKTtcbiAgICByZXR1cm4gYCR7Y2xlYW5Eb21haW59LyR7Y2xlYW5QYXRofWA7XG4gIH1cbn1cbiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3NsLWltYWdlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXdzbC1saWJyYXJ5L3NyYy9saWIvZGlyZWN0aXZlcy93c2wtaW1hZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxHQUlOLE1BQU0sZUFBZSxDQUFDOzs7QUFPdkIsTUFBTSxPQUFPLGlCQUFpQjtJQVc1QixZQUNVLEVBQWdDLEVBQ2hDLFFBQW1CLEVBQ25CLFlBQTZCO1FBRjdCLE9BQUUsR0FBRixFQUFFLENBQThCO1FBQ2hDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBUjlCLGdCQUFXLEdBQVksSUFBSSxDQUFDLENBQUMsOENBQThDO1FBRzVFLHlCQUFvQixHQUFHLEtBQUssQ0FBQztJQU1sQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN4RTtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsc0JBQXNCO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQ2xELElBQUksQ0FBQyxHQUFHLEVBQ1IsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsTUFBTSxDQUNaLENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztnQkFFakMsTUFBTSxXQUFXLEdBQ2YsSUFBSSxDQUFDLGNBQWMsS0FBSyxTQUFTO29CQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7b0JBQzlDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUUzQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFDdkU7aUJBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNsRTtRQUNILENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVPLFFBQVEsQ0FBQyxJQUFZLEVBQUUsTUFBc0I7UUFDbkQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxPQUFPLEdBQUcsV0FBVyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7OzhHQWxFVSxpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO2lCQUMxQjt1SkFFVSxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV3NsTGFuZ1BhdGhQaXBlIH0gZnJvbSAnLi4vcGlwZXMvd3NsLWxhbmctcGF0aC93c2wtbGFuZy1wYXRoLnBpcGUnO1xuaW1wb3J0IHsgV3NsTGFuZ1BhdGhPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy93c2wtbGFuZy1wYXRoLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW1nW3dzbEltYWdlXScsXG59KVxuZXhwb3J0IGNsYXNzIFdzbEltYWdlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBzcmMhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhbmc/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRvbWFpbj86IHN0cmluZyB8IG51bGw7XG4gIEBJbnB1dCgpIGZhbGxiYWNrRG9tYWluPzogc3RyaW5nIHwgbnVsbDtcbiAgQElucHV0KCkgd3NsT3B0aW9ucz86IFdzbExhbmdQYXRoT3B0aW9ucztcbiAgQElucHV0KCkgaGlkZU9uRXJyb3I6IGJvb2xlYW4gPSB0cnVlOyAvLyBIaWRlIGltYWdlIGFmdGVyIGFsbCBmYWxsYmFjayBhdHRlbXB0cyBmYWlsXG5cbiAgcHJpdmF0ZSBlcnJvckxpc3RlbmVyPzogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBoYXNBdHRlbXB0ZWRGYWxsYmFjayA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgbGFuZ1BhdGhQaXBlOiBXc2xMYW5nUGF0aFBpcGVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zcmMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHVwSW1hZ2VXaXRoRmFsbGJhY2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVycm9yTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIHRoaXMuZXJyb3JMaXN0ZW5lcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXR1cEltYWdlV2l0aEZhbGxiYWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByaW1hcnlVcmwgPSBhd2FpdCB0aGlzLmxhbmdQYXRoUGlwZS50cmFuc2Zvcm0oXG4gICAgICB0aGlzLnNyYyxcbiAgICAgIHRoaXMubGFuZyxcbiAgICAgIHRoaXMuZG9tYWluXG4gICAgKTtcblxuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3NyYycsIHByaW1hcnlVcmwpO1xuXG4gICAgdGhpcy5lcnJvckxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmhhc0F0dGVtcHRlZEZhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuaGFzQXR0ZW1wdGVkRmFsbGJhY2sgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGZhbGxiYWNrVXJsID1cbiAgICAgICAgICB0aGlzLmZhbGxiYWNrRG9tYWluICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gdGhpcy5idWlsZFVybCh0aGlzLnNyYywgdGhpcy5mYWxsYmFja0RvbWFpbilcbiAgICAgICAgICAgIDogdGhpcy5idWlsZFVybCh0aGlzLnNyYywgdGhpcy5kb21haW4pO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3NyYycsIGZhbGxiYWNrVXJsKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5oaWRlT25FcnJvcikge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdzcmMnLCAnJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHRoaXMuZXJyb3JMaXN0ZW5lcik7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVXJsKHBhdGg6IHN0cmluZywgZG9tYWluPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKCFkb21haW4pIHtcbiAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICBjb25zdCBjbGVhbkRvbWFpbiA9IGRvbWFpbi5yZXBsYWNlKC9cXC8kLywgJycpO1xuICAgIGNvbnN0IGNsZWFuUGF0aCA9IHBhdGgucmVwbGFjZSgvXlxcLy8sICcnKTtcbiAgICByZXR1cm4gYCR7Y2xlYW5Eb21haW59LyR7Y2xlYW5QYXRofWA7XG4gIH1cbn1cbiJdfQ==
@@ -4,12 +4,12 @@ import * as i1 from "../../services/config/wsl-config.service";
4
4
  export class WslLangPathPipe {
5
5
  constructor(configService) {
6
6
  this.configService = configService;
7
+ this.cache = new Map();
7
8
  }
8
- transform(url, langOrOptionsParam, domainParam, optionsParam) {
9
- if (!url) {
9
+ async transform(url, langOrOptionsParam, domainParam, optionsParam) {
10
+ if (!url)
10
11
  return '';
11
- }
12
- // Smart parameter detection - check if second parameter is options object
12
+ // --- Parameter detection ---
13
13
  let language;
14
14
  let domain;
15
15
  let options;
@@ -19,27 +19,15 @@ export class WslLangPathPipe {
19
19
  options = { format: 'path', ...langOrOptionsParam };
20
20
  }
21
21
  else {
22
- // Normal parameter order: pipe:'en':domain:options
23
22
  language = langOrOptionsParam;
24
23
  domain = domainParam;
25
24
  options = { format: 'path', ...optionsParam };
26
25
  }
27
26
  const resolvedLanguage = language || this.configService.language || 'en';
28
- let resolvedDomain = '';
29
- if (domain !== undefined) {
30
- if (domain === '') {
31
- resolvedDomain = '';
32
- }
33
- else if (domain === null) {
34
- resolvedDomain = '';
35
- }
36
- else {
37
- resolvedDomain = domain;
38
- }
39
- }
40
- else {
41
- resolvedDomain = this.configService.get('domain', '');
42
- }
27
+ const resolvedDomain = domain !== undefined && domain !== null
28
+ ? domain
29
+ : this.configService.get('domain', '');
30
+ // --- Build URLs ---
43
31
  const langSuffixUrl = this.addLanguageSuffix(url, resolvedLanguage);
44
32
  const primaryUrl = resolvedDomain
45
33
  ? this.joinUrlParts(resolvedDomain, langSuffixUrl)
@@ -47,13 +35,15 @@ export class WslLangPathPipe {
47
35
  const fallbackUrl = resolvedDomain
48
36
  ? this.joinUrlParts(resolvedDomain, url)
49
37
  : url;
50
- return this.formatOutput(primaryUrl, fallbackUrl, options);
38
+ // --- Validate primary image ---
39
+ const isValid = await this.imageExists(primaryUrl);
40
+ const finalUrl = isValid ? primaryUrl : fallbackUrl;
41
+ return this.formatOutput(finalUrl, options);
51
42
  }
52
43
  addLanguageSuffix(url, language) {
53
44
  const lastDotIndex = url.lastIndexOf('.');
54
- if (lastDotIndex === -1) {
45
+ if (lastDotIndex === -1)
55
46
  return `${url}_${language}`;
56
- }
57
47
  const basePath = url.substring(0, lastDotIndex);
58
48
  const extension = url.substring(lastDotIndex);
59
49
  return `${basePath}_${language}${extension}`;
@@ -63,37 +53,27 @@ export class WslLangPathPipe {
63
53
  const cleanPath = path.replace(/^\//, '');
64
54
  return `${cleanDomain}/${cleanPath}`;
65
55
  }
66
- formatOutput(primaryUrl, fallbackUrl, options) {
56
+ formatOutput(url, options) {
67
57
  switch (options.format) {
68
58
  case 'url':
69
- return `url(${primaryUrl})`;
70
59
  case 'url-with-fallback':
71
- return `url(${primaryUrl}), url(${fallbackUrl})`;
60
+ return `url(${url})`;
72
61
  case 'path':
73
62
  default:
74
- return primaryUrl;
63
+ return url;
75
64
  }
76
65
  }
77
- getUrls(url, language, domain) {
78
- if (!url) {
79
- return { primary: '', fallback: '' };
80
- }
81
- const lang = language || this.configService.language || 'en';
82
- let resolvedDomain = '';
83
- if (domain !== undefined) {
84
- resolvedDomain = domain || '';
85
- }
86
- else {
87
- resolvedDomain = this.configService.get('domain', '');
88
- }
89
- const langSuffixUrl = this.addLanguageSuffix(url, lang);
90
- const primaryUrl = resolvedDomain
91
- ? this.joinUrlParts(resolvedDomain, langSuffixUrl)
92
- : langSuffixUrl;
93
- const fallbackUrl = resolvedDomain
94
- ? this.joinUrlParts(resolvedDomain, url)
95
- : url;
96
- return { primary: primaryUrl, fallback: fallbackUrl };
66
+ async imageExists(src) {
67
+ if (this.cache.has(src))
68
+ return this.cache.get(src);
69
+ const result = await new Promise((resolve) => {
70
+ const img = new Image();
71
+ img.onload = () => resolve(true);
72
+ img.onerror = () => resolve(false);
73
+ img.src = src;
74
+ });
75
+ this.cache.set(src, result);
76
+ return result;
97
77
  }
98
78
  }
99
79
  WslLangPathPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WslLangPathPipe, deps: [{ token: i1.WslConfigService }], target: i0.ɵɵFactoryTarget.Pipe });
@@ -110,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
110
90
  name: 'wslLangPath',
111
91
  }]
112
92
  }], ctorParameters: function () { return [{ type: i1.WslConfigService }]; } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3NsLWxhbmctcGF0aC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctd3NsLWxpYnJhcnkvc3JjL2xpYi9waXBlcy93c2wtbGFuZy1wYXRoL3dzbC1sYW5nLXBhdGgucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQVVoRSxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixhQUErQjtRQUEvQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7SUFBRyxDQUFDO0lBYXZELFNBQVMsQ0FDUCxHQUFXLEVBQ1gsa0JBQWdELEVBQ2hELFdBQTJCLEVBQzNCLFlBQWlDO1FBRWpDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsMEVBQTBFO1FBQzFFLElBQUksUUFBNEIsQ0FBQztRQUNqQyxJQUFJLE1BQWlDLENBQUM7UUFDdEMsSUFBSSxPQUEyQixDQUFDO1FBRWhDLElBQUksT0FBTyxrQkFBa0IsS0FBSyxRQUFRLElBQUksa0JBQWtCLEtBQUssSUFBSSxFQUFFO1lBQ3pFLFFBQVEsR0FBRyxTQUFTLENBQUM7WUFDckIsTUFBTSxHQUFHLFNBQVMsQ0FBQztZQUNuQixPQUFPLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztTQUNyRDthQUFNO1lBQ0wsbURBQW1EO1lBQ25ELFFBQVEsR0FBRyxrQkFBd0MsQ0FBQztZQUNwRCxNQUFNLEdBQUcsV0FBVyxDQUFDO1lBQ3JCLE9BQU8sR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxZQUFZLEVBQUUsQ0FBQztTQUMvQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQztRQUV6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O1lBQ0wsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFTLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUMvRDtRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEQsTUFBTSxVQUFVLEdBQUcsY0FBYztZQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDO1lBQ2xELENBQUMsQ0FBQyxhQUFhLENBQUM7UUFFbEIsTUFBTSxXQUFXLEdBQUcsY0FBYztZQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFFUixPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDeEQsQ0FBQzs7NEdBcElVLGVBQWU7MEdBQWYsZUFBZTtnSEFBZixlQUFlLGNBTGQsTUFBTTsyRkFLUCxlQUFlO2tCQU4zQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7a0JBQ0EsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsYUFBYTtpQkFDcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXc2xDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlnL3dzbC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBXc2xMYW5nUGF0aE9wdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3dzbC1sYW5nLXBhdGgtb3B0aW9ucy5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5AUGlwZSh7XG4gIG5hbWU6ICd3c2xMYW5nUGF0aCcsXG59KVxuZXhwb3J0IGNsYXNzIFdzbExhbmdQYXRoUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IFdzbENvbmZpZ1NlcnZpY2UpIHt9XG5cbiAgLy8gTWV0aG9kIG92ZXJsb2Fkc1xuICB0cmFuc2Zvcm0odXJsOiBzdHJpbmcpOiBzdHJpbmc7XG4gIHRyYW5zZm9ybSh1cmw6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZztcbiAgdHJhbnNmb3JtKHVybDogc3RyaW5nLCBsYW5ndWFnZTogc3RyaW5nLCBkb21haW46IHN0cmluZyB8IG51bGwpOiBzdHJpbmc7XG4gIHRyYW5zZm9ybShcbiAgICB1cmw6IHN0cmluZyxcbiAgICBsYW5ndWFnZTogc3RyaW5nLFxuICAgIGRvbWFpbjogc3RyaW5nIHwgbnVsbCxcbiAgICBvcHRpb25zOiBXc2xMYW5nUGF0aE9wdGlvbnNcbiAgKTogc3RyaW5nO1xuICB0cmFuc2Zvcm0odXJsOiBzdHJpbmcsIG9wdGlvbnM6IFdzbExhbmdQYXRoT3B0aW9ucyk6IHN0cmluZztcbiAgdHJhbnNmb3JtKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGxhbmdPck9wdGlvbnNQYXJhbT86IHN0cmluZyB8IFdzbExhbmdQYXRoT3B0aW9ucyxcbiAgICBkb21haW5QYXJhbT86IHN0cmluZyB8IG51bGwsXG4gICAgb3B0aW9uc1BhcmFtPzogV3NsTGFuZ1BhdGhPcHRpb25zXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvLyBTbWFydCBwYXJhbWV0ZXIgZGV0ZWN0aW9uIC0gY2hlY2sgaWYgc2Vjb25kIHBhcmFtZXRlciBpcyBvcHRpb25zIG9iamVjdFxuICAgIGxldCBsYW5ndWFnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGxldCBkb21haW46IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgbGV0IG9wdGlvbnM6IFdzbExhbmdQYXRoT3B0aW9ucztcblxuICAgIGlmICh0eXBlb2YgbGFuZ09yT3B0aW9uc1BhcmFtID09PSAnb2JqZWN0JyAmJiBsYW5nT3JPcHRpb25zUGFyYW0gIT09IG51bGwpIHtcbiAgICAgIGxhbmd1YWdlID0gdW5kZWZpbmVkO1xuICAgICAgZG9tYWluID0gdW5kZWZpbmVkO1xuICAgICAgb3B0aW9ucyA9IHsgZm9ybWF0OiAncGF0aCcsIC4uLmxhbmdPck9wdGlvbnNQYXJhbSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOb3JtYWwgcGFyYW1ldGVyIG9yZGVyOiBwaXBlOidlbic6ZG9tYWluOm9wdGlvbnNcbiAgICAgIGxhbmd1YWdlID0gbGFuZ09yT3B0aW9uc1BhcmFtIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGRvbWFpbiA9IGRvbWFpblBhcmFtO1xuICAgICAgb3B0aW9ucyA9IHsgZm9ybWF0OiAncGF0aCcsIC4uLm9wdGlvbnNQYXJhbSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc29sdmVkTGFuZ3VhZ2UgPSBsYW5ndWFnZSB8fCB0aGlzLmNvbmZpZ1NlcnZpY2UubGFuZ3VhZ2UgfHwgJ2VuJztcblxuICAgIGxldCByZXNvbHZlZERvbWFpbiA9ICcnO1xuICAgIGlmIChkb21haW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRvbWFpbiA9PT0gJycpIHtcbiAgICAgICAgcmVzb2x2ZWREb21haW4gPSAnJztcbiAgICAgIH0gZWxzZSBpZiAoZG9tYWluID09PSBudWxsKSB7XG4gICAgICAgIHJlc29sdmVkRG9tYWluID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlZERvbWFpbiA9IGRvbWFpbjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZWREb21haW4gPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0PHN0cmluZz4oJ2RvbWFpbicsICcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBsYW5nU3VmZml4VXJsID0gdGhpcy5hZGRMYW5ndWFnZVN1ZmZpeCh1cmwsIHJlc29sdmVkTGFuZ3VhZ2UpO1xuICAgIGNvbnN0IHByaW1hcnlVcmwgPSByZXNvbHZlZERvbWFpblxuICAgICAgPyB0aGlzLmpvaW5VcmxQYXJ0cyhyZXNvbHZlZERvbWFpbiwgbGFuZ1N1ZmZpeFVybClcbiAgICAgIDogbGFuZ1N1ZmZpeFVybDtcblxuICAgIGNvbnN0IGZhbGxiYWNrVXJsID0gcmVzb2x2ZWREb21haW5cbiAgICAgID8gdGhpcy5qb2luVXJsUGFydHMocmVzb2x2ZWREb21haW4sIHVybClcbiAgICAgIDogdXJsO1xuXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0T3V0cHV0KHByaW1hcnlVcmwsIGZhbGxiYWNrVXJsLCBvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTGFuZ3VhZ2VTdWZmaXgodXJsOiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxhc3REb3RJbmRleCA9IHVybC5sYXN0SW5kZXhPZignLicpO1xuXG4gICAgaWYgKGxhc3REb3RJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBgJHt1cmx9XyR7bGFuZ3VhZ2V9YDtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlUGF0aCA9IHVybC5zdWJzdHJpbmcoMCwgbGFzdERvdEluZGV4KTtcbiAgICBjb25zdCBleHRlbnNpb24gPSB1cmwuc3Vic3RyaW5nKGxhc3REb3RJbmRleCk7XG5cbiAgICByZXR1cm4gYCR7YmFzZVBhdGh9XyR7bGFuZ3VhZ2V9JHtleHRlbnNpb259YDtcbiAgfVxuXG4gIHByaXZhdGUgam9pblVybFBhcnRzKGRvbWFpbjogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsZWFuRG9tYWluID0gZG9tYWluLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG4gICAgY29uc3QgY2xlYW5QYXRoID0gcGF0aC5yZXBsYWNlKC9eXFwvLywgJycpO1xuICAgIHJldHVybiBgJHtjbGVhbkRvbWFpbn0vJHtjbGVhblBhdGh9YDtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0T3V0cHV0KFxuICAgIHByaW1hcnlVcmw6IHN0cmluZyxcbiAgICBmYWxsYmFja1VybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFdzbExhbmdQYXRoT3B0aW9uc1xuICApOiBzdHJpbmcge1xuICAgIHN3aXRjaCAob3B0aW9ucy5mb3JtYXQpIHtcbiAgICAgIGNhc2UgJ3VybCc6XG4gICAgICAgIHJldHVybiBgdXJsKCR7cHJpbWFyeVVybH0pYDtcblxuICAgICAgY2FzZSAndXJsLXdpdGgtZmFsbGJhY2snOlxuICAgICAgICByZXR1cm4gYHVybCgke3ByaW1hcnlVcmx9KSwgdXJsKCR7ZmFsbGJhY2tVcmx9KWA7XG5cbiAgICAgIGNhc2UgJ3BhdGgnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHByaW1hcnlVcmw7XG4gICAgfVxuICB9XG5cbiAgZ2V0VXJscyhcbiAgICB1cmw6IHN0cmluZyxcbiAgICBsYW5ndWFnZT86IHN0cmluZyxcbiAgICBkb21haW4/OiBzdHJpbmcgfCBudWxsXG4gICk6IHsgcHJpbWFyeTogc3RyaW5nOyBmYWxsYmFjazogc3RyaW5nIH0ge1xuICAgIGlmICghdXJsKSB7XG4gICAgICByZXR1cm4geyBwcmltYXJ5OiAnJywgZmFsbGJhY2s6ICcnIH07XG4gICAgfVxuXG4gICAgY29uc3QgbGFuZyA9IGxhbmd1YWdlIHx8IHRoaXMuY29uZmlnU2VydmljZS5sYW5ndWFnZSB8fCAnZW4nO1xuXG4gICAgbGV0IHJlc29sdmVkRG9tYWluID0gJyc7XG4gICAgaWYgKGRvbWFpbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXNvbHZlZERvbWFpbiA9IGRvbWFpbiB8fCAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZWREb21haW4gPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0PHN0cmluZz4oJ2RvbWFpbicsICcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBsYW5nU3VmZml4VXJsID0gdGhpcy5hZGRMYW5ndWFnZVN1ZmZpeCh1cmwsIGxhbmcpO1xuICAgIGNvbnN0IHByaW1hcnlVcmwgPSByZXNvbHZlZERvbWFpblxuICAgICAgPyB0aGlzLmpvaW5VcmxQYXJ0cyhyZXNvbHZlZERvbWFpbiwgbGFuZ1N1ZmZpeFVybClcbiAgICAgIDogbGFuZ1N1ZmZpeFVybDtcblxuICAgIGNvbnN0IGZhbGxiYWNrVXJsID0gcmVzb2x2ZWREb21haW5cbiAgICAgID8gdGhpcy5qb2luVXJsUGFydHMocmVzb2x2ZWREb21haW4sIHVybClcbiAgICAgIDogdXJsO1xuXG4gICAgcmV0dXJuIHsgcHJpbWFyeTogcHJpbWFyeVVybCwgZmFsbGJhY2s6IGZhbGxiYWNrVXJsIH07XG4gIH1cbn1cbiJdfQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3NsLWxhbmctcGF0aC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctd3NsLWxpYnJhcnkvc3JjL2xpYi9waXBlcy93c2wtbGFuZy1wYXRoL3dzbC1sYW5nLXBhdGgucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQVVoRSxNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUFvQixhQUErQjtRQUEvQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFGM0MsVUFBSyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0lBRVcsQ0FBQztJQUV2RCxLQUFLLENBQUMsU0FBUyxDQUNiLEdBQVcsRUFDWCxrQkFBZ0QsRUFDaEQsV0FBMkIsRUFDM0IsWUFBaUM7UUFFakMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVwQiw4QkFBOEI7UUFDOUIsSUFBSSxRQUE0QixDQUFDO1FBQ2pDLElBQUksTUFBaUMsQ0FBQztRQUN0QyxJQUFJLE9BQTJCLENBQUM7UUFFaEMsSUFBSSxPQUFPLGtCQUFrQixLQUFLLFFBQVEsSUFBSSxrQkFBa0IsS0FBSyxJQUFJLEVBQUU7WUFDekUsUUFBUSxHQUFHLFNBQVMsQ0FBQztZQUNyQixNQUFNLEdBQUcsU0FBUyxDQUFDO1lBQ25CLE9BQU8sR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxrQkFBa0IsRUFBRSxDQUFDO1NBQ3JEO2FBQU07WUFDTCxRQUFRLEdBQUcsa0JBQXdDLENBQUM7WUFDcEQsTUFBTSxHQUFHLFdBQVcsQ0FBQztZQUNyQixPQUFPLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUM7U0FDL0M7UUFFRCxNQUFNLGdCQUFnQixHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFD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O1lBQ25DLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OzRHQXhGVSxlQUFlOzBHQUFmLGVBQWU7Z0hBQWYsZUFBZSxjQUxkLE1BQU07MkZBS1AsZUFBZTtrQkFOM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O2tCQUNBLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGFBQWE7aUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV3NsQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy93c2wtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgV3NsTGFuZ1BhdGhPcHRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy93c2wtbGFuZy1wYXRoLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuQFBpcGUoe1xuICBuYW1lOiAnd3NsTGFuZ1BhdGgnLFxufSlcbmV4cG9ydCBjbGFzcyBXc2xMYW5nUGF0aFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnU2VydmljZTogV3NsQ29uZmlnU2VydmljZSkge31cblxuICBhc3luYyB0cmFuc2Zvcm0oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgbGFuZ09yT3B0aW9uc1BhcmFtPzogc3RyaW5nIHwgV3NsTGFuZ1BhdGhPcHRpb25zLFxuICAgIGRvbWFpblBhcmFtPzogc3RyaW5nIHwgbnVsbCxcbiAgICBvcHRpb25zUGFyYW0/OiBXc2xMYW5nUGF0aE9wdGlvbnNcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAoIXVybCkgcmV0dXJuICcnO1xuXG4gICAgLy8gLS0tIFBhcmFtZXRlciBkZXRlY3Rpb24gLS0tXG4gICAgbGV0IGxhbmd1YWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGRvbWFpbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgb3B0aW9uczogV3NsTGFuZ1BhdGhPcHRpb25zO1xuXG4gICAgaWYgKHR5cGVvZiBsYW5nT3JPcHRpb25zUGFyYW0gPT09ICdvYmplY3QnICYmIGxhbmdPck9wdGlvbnNQYXJhbSAhPT0gbnVsbCkge1xuICAgICAgbGFuZ3VhZ2UgPSB1bmRlZmluZWQ7XG4gICAgICBkb21haW4gPSB1bmRlZmluZWQ7XG4gICAgICBvcHRpb25zID0geyBmb3JtYXQ6ICdwYXRoJywgLi4ubGFuZ09yT3B0aW9uc1BhcmFtIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhbmd1YWdlID0gbGFuZ09yT3B0aW9uc1BhcmFtIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGRvbWFpbiA9IGRvbWFpblBhcmFtO1xuICAgICAgb3B0aW9ucyA9IHsgZm9ybWF0OiAncGF0aCcsIC4uLm9wdGlvbnNQYXJhbSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc29sdmVkTGFuZ3VhZ2UgPSBsYW5ndWFnZSB8fCB0aGlzLmNvbmZpZ1NlcnZpY2UubGFuZ3VhZ2UgfHwgJ2VuJztcbiAgICBjb25zdCByZXNvbHZlZERvbWFpbiA9XG4gICAgICBkb21haW4gIT09IHVuZGVmaW5lZCAmJiBkb21haW4gIT09IG51bGxcbiAgICAgICAgPyBkb21haW5cbiAgICAgICAgOiB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0PHN0cmluZz4oJ2RvbWFpbicsICcnKTtcblxuICAgIC8vIC0tLSBCdWlsZCBVUkxzIC0tLVxuICAgIGNvbnN0IGxhbmdTdWZmaXhVcmwgPSB0aGlzLmFkZExhbmd1YWdlU3VmZml4KHVybCwgcmVzb2x2ZWRMYW5ndWFnZSk7XG4gICAgY29uc3QgcHJpbWFyeVVybCA9IHJlc29sdmVkRG9tYWluXG4gICAgICA/IHRoaXMuam9pblVybFBhcnRzKHJlc29sdmVkRG9tYWluLCBsYW5nU3VmZml4VXJsKVxuICAgICAgOiBsYW5nU3VmZml4VXJsO1xuXG4gICAgY29uc3QgZmFsbGJhY2tVcmwgPSByZXNvbHZlZERvbWFpblxuICAgICAgPyB0aGlzLmpvaW5VcmxQYXJ0cyhyZXNvbHZlZERvbWFpbiwgdXJsKVxuICAgICAgOiB1cmw7XG5cbiAgICAvLyAtLS0gVmFsaWRhdGUgcHJpbWFyeSBpbWFnZSAtLS1cbiAgICBjb25zdCBpc1ZhbGlkID0gYXdhaXQgdGhpcy5pbWFnZUV4aXN0cyhwcmltYXJ5VXJsKTtcbiAgICBjb25zdCBmaW5hbFVybCA9IGlzVmFsaWQgPyBwcmltYXJ5VXJsIDogZmFsbGJhY2tVcmw7XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtYXRPdXRwdXQoZmluYWxVcmwsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRMYW5ndWFnZVN1ZmZpeCh1cmw6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbGFzdERvdEluZGV4ID0gdXJsLmxhc3RJbmRleE9mKCcuJyk7XG4gICAgaWYgKGxhc3REb3RJbmRleCA9PT0gLTEpIHJldHVybiBgJHt1cmx9XyR7bGFuZ3VhZ2V9YDtcbiAgICBjb25zdCBiYXNlUGF0aCA9IHVybC5zdWJzdHJpbmcoMCwgbGFzdERvdEluZGV4KTtcbiAgICBjb25zdCBleHRlbnNpb24gPSB1cmwuc3Vic3RyaW5nKGxhc3REb3RJbmRleCk7XG4gICAgcmV0dXJuIGAke2Jhc2VQYXRofV8ke2xhbmd1YWdlfSR7ZXh0ZW5zaW9ufWA7XG4gIH1cblxuICBwcml2YXRlIGpvaW5VcmxQYXJ0cyhkb21haW46IHN0cmluZywgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjbGVhbkRvbWFpbiA9IGRvbWFpbi5yZXBsYWNlKC9cXC8kLywgJycpO1xuICAgIGNvbnN0IGNsZWFuUGF0aCA9IHBhdGgucmVwbGFjZSgvXlxcLy8sICcnKTtcbiAgICByZXR1cm4gYCR7Y2xlYW5Eb21haW59LyR7Y2xlYW5QYXRofWA7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE91dHB1dCh1cmw6IHN0cmluZywgb3B0aW9uczogV3NsTGFuZ1BhdGhPcHRpb25zKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKG9wdGlvbnMuZm9ybWF0KSB7XG4gICAgICBjYXNlICd1cmwnOlxuICAgICAgY2FzZSAndXJsLXdpdGgtZmFsbGJhY2snOlxuICAgICAgICByZXR1cm4gYHVybCgke3VybH0pYDtcbiAgICAgIGNhc2UgJ3BhdGgnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGltYWdlRXhpc3RzKHNyYzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuY2FjaGUuaGFzKHNyYykpIHJldHVybiB0aGlzLmNhY2hlLmdldChzcmMpITtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHRydWUpO1xuICAgICAgaW1nLm9uZXJyb3IgPSAoKSA9PiByZXNvbHZlKGZhbHNlKTtcbiAgICAgIGltZy5zcmMgPSBzcmM7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNhY2hlLnNldChzcmMsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
@@ -4,6 +4,7 @@ import * as i2 from '@angular/common';
4
4
  import { CommonModule, DOCUMENT } from '@angular/common';
5
5
  import { BehaviorSubject, Subject, fromEvent, noop } from 'rxjs';
6
6
  import { map, distinctUntilChanged, debounceTime, throttleTime, startWith } from 'rxjs/operators';
7
+ import { __awaiter } from 'tslib';
7
8
  import { cloneDeep } from 'lodash';
8
9
  import * as i1 from '@angular/animations';
9
10
  import { animate, style } from '@angular/animations';
@@ -457,56 +458,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
457
458
  class WslLangPathPipe {
458
459
  constructor(configService) {
459
460
  this.configService = configService;
461
+ this.cache = new Map();
460
462
  }
461
463
  transform(url, langOrOptionsParam, domainParam, optionsParam) {
462
- if (!url) {
463
- return '';
464
- }
465
- // Smart parameter detection - check if second parameter is options object
466
- let language;
467
- let domain;
468
- let options;
469
- if (typeof langOrOptionsParam === 'object' && langOrOptionsParam !== null) {
470
- language = undefined;
471
- domain = undefined;
472
- options = Object.assign({ format: 'path' }, langOrOptionsParam);
473
- }
474
- else {
475
- // Normal parameter order: pipe:'en':domain:options
476
- language = langOrOptionsParam;
477
- domain = domainParam;
478
- options = Object.assign({ format: 'path' }, optionsParam);
479
- }
480
- const resolvedLanguage = language || this.configService.language || 'en';
481
- let resolvedDomain = '';
482
- if (domain !== undefined) {
483
- if (domain === '') {
484
- resolvedDomain = '';
485
- }
486
- else if (domain === null) {
487
- resolvedDomain = '';
464
+ return __awaiter(this, void 0, void 0, function* () {
465
+ if (!url)
466
+ return '';
467
+ // --- Parameter detection ---
468
+ let language;
469
+ let domain;
470
+ let options;
471
+ if (typeof langOrOptionsParam === 'object' && langOrOptionsParam !== null) {
472
+ language = undefined;
473
+ domain = undefined;
474
+ options = Object.assign({ format: 'path' }, langOrOptionsParam);
488
475
  }
489
476
  else {
490
- resolvedDomain = domain;
477
+ language = langOrOptionsParam;
478
+ domain = domainParam;
479
+ options = Object.assign({ format: 'path' }, optionsParam);
491
480
  }
492
- }
493
- else {
494
- resolvedDomain = this.configService.get('domain', '');
495
- }
496
- const langSuffixUrl = this.addLanguageSuffix(url, resolvedLanguage);
497
- const primaryUrl = resolvedDomain
498
- ? this.joinUrlParts(resolvedDomain, langSuffixUrl)
499
- : langSuffixUrl;
500
- const fallbackUrl = resolvedDomain
501
- ? this.joinUrlParts(resolvedDomain, url)
502
- : url;
503
- return this.formatOutput(primaryUrl, fallbackUrl, options);
481
+ const resolvedLanguage = language || this.configService.language || 'en';
482
+ const resolvedDomain = domain !== undefined && domain !== null
483
+ ? domain
484
+ : this.configService.get('domain', '');
485
+ // --- Build URLs ---
486
+ const langSuffixUrl = this.addLanguageSuffix(url, resolvedLanguage);
487
+ const primaryUrl = resolvedDomain
488
+ ? this.joinUrlParts(resolvedDomain, langSuffixUrl)
489
+ : langSuffixUrl;
490
+ const fallbackUrl = resolvedDomain
491
+ ? this.joinUrlParts(resolvedDomain, url)
492
+ : url;
493
+ // --- Validate primary image ---
494
+ const isValid = yield this.imageExists(primaryUrl);
495
+ const finalUrl = isValid ? primaryUrl : fallbackUrl;
496
+ return this.formatOutput(finalUrl, options);
497
+ });
504
498
  }
505
499
  addLanguageSuffix(url, language) {
506
500
  const lastDotIndex = url.lastIndexOf('.');
507
- if (lastDotIndex === -1) {
501
+ if (lastDotIndex === -1)
508
502
  return `${url}_${language}`;
509
- }
510
503
  const basePath = url.substring(0, lastDotIndex);
511
504
  const extension = url.substring(lastDotIndex);
512
505
  return `${basePath}_${language}${extension}`;
@@ -516,37 +509,29 @@ class WslLangPathPipe {
516
509
  const cleanPath = path.replace(/^\//, '');
517
510
  return `${cleanDomain}/${cleanPath}`;
518
511
  }
519
- formatOutput(primaryUrl, fallbackUrl, options) {
512
+ formatOutput(url, options) {
520
513
  switch (options.format) {
521
514
  case 'url':
522
- return `url(${primaryUrl})`;
523
515
  case 'url-with-fallback':
524
- return `url(${primaryUrl}), url(${fallbackUrl})`;
516
+ return `url(${url})`;
525
517
  case 'path':
526
518
  default:
527
- return primaryUrl;
528
- }
529
- }
530
- getUrls(url, language, domain) {
531
- if (!url) {
532
- return { primary: '', fallback: '' };
533
- }
534
- const lang = language || this.configService.language || 'en';
535
- let resolvedDomain = '';
536
- if (domain !== undefined) {
537
- resolvedDomain = domain || '';
538
- }
539
- else {
540
- resolvedDomain = this.configService.get('domain', '');
541
- }
542
- const langSuffixUrl = this.addLanguageSuffix(url, lang);
543
- const primaryUrl = resolvedDomain
544
- ? this.joinUrlParts(resolvedDomain, langSuffixUrl)
545
- : langSuffixUrl;
546
- const fallbackUrl = resolvedDomain
547
- ? this.joinUrlParts(resolvedDomain, url)
548
- : url;
549
- return { primary: primaryUrl, fallback: fallbackUrl };
519
+ return url;
520
+ }
521
+ }
522
+ imageExists(src) {
523
+ return __awaiter(this, void 0, void 0, function* () {
524
+ if (this.cache.has(src))
525
+ return this.cache.get(src);
526
+ const result = yield new Promise((resolve) => {
527
+ const img = new Image();
528
+ img.onload = () => resolve(true);
529
+ img.onerror = () => resolve(false);
530
+ img.src = src;
531
+ });
532
+ this.cache.set(src, result);
533
+ return result;
534
+ });
550
535
  }
551
536
  }
552
537
  WslLangPathPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WslLangPathPipe, deps: [{ token: WslConfigService }], target: i0.ɵɵFactoryTarget.Pipe });
@@ -1151,22 +1136,24 @@ class WslImageDirective {
1151
1136
  }
1152
1137
  }
1153
1138
  setupImageWithFallback() {
1154
- const primaryUrl = this.langPathPipe.transform(this.src, this.lang, this.domain);
1155
- this.renderer.setAttribute(this.el.nativeElement, 'src', primaryUrl);
1156
- this.errorListener = () => {
1157
- if (!this.hasAttemptedFallback) {
1158
- this.hasAttemptedFallback = true;
1159
- const fallbackUrl = this.fallbackDomain !== undefined
1160
- ? this.buildUrl(this.src, this.fallbackDomain)
1161
- : this.buildUrl(this.src, this.domain);
1162
- this.renderer.setAttribute(this.el.nativeElement, 'src', fallbackUrl);
1163
- }
1164
- else if (this.hideOnError) {
1165
- this.renderer.setAttribute(this.el.nativeElement, 'src', '');
1166
- this.renderer.setStyle(this.el.nativeElement, 'display', 'none');
1167
- }
1168
- };
1169
- this.el.nativeElement.addEventListener('error', this.errorListener);
1139
+ return __awaiter(this, void 0, void 0, function* () {
1140
+ const primaryUrl = yield this.langPathPipe.transform(this.src, this.lang, this.domain);
1141
+ this.renderer.setAttribute(this.el.nativeElement, 'src', primaryUrl);
1142
+ this.errorListener = () => {
1143
+ if (!this.hasAttemptedFallback) {
1144
+ this.hasAttemptedFallback = true;
1145
+ const fallbackUrl = this.fallbackDomain !== undefined
1146
+ ? this.buildUrl(this.src, this.fallbackDomain)
1147
+ : this.buildUrl(this.src, this.domain);
1148
+ this.renderer.setAttribute(this.el.nativeElement, 'src', fallbackUrl);
1149
+ }
1150
+ else if (this.hideOnError) {
1151
+ this.renderer.setAttribute(this.el.nativeElement, 'src', '');
1152
+ this.renderer.setStyle(this.el.nativeElement, 'display', 'none');
1153
+ }
1154
+ };
1155
+ this.el.nativeElement.addEventListener('error', this.errorListener);
1156
+ });
1170
1157
  }
1171
1158
  buildUrl(path, domain) {
1172
1159
  if (!domain) {