{"version":3,"file":"ng-doc-ui-kit-components-icon.mjs","sources":["../../../../libs/ui-kit/components/icon/icon.component.ts","../../../../libs/ui-kit/components/icon/ng-doc-ui-kit-components-icon.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  inject,\n  Input,\n  numberAttribute,\n  OnChanges,\n  OnInit,\n} from '@angular/core';\nimport { NgDocCacheInterceptor } from '@ng-doc/ui-kit/interceptors';\nimport { NG_DOC_ASSETS_PATH, NG_DOC_CUSTOM_ICONS_PATH } from '@ng-doc/ui-kit/tokens';\nimport { NgDocIconSize } from '@ng-doc/ui-kit/types';\nimport { of, Subject } from 'rxjs';\nimport { catchError, startWith, switchMap } from 'rxjs/operators';\n\n@Component({\n  selector: 'ng-doc-icon',\n  template: '',\n  styleUrls: ['./icon.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class NgDocIconComponent implements OnChanges, OnInit {\n  /** Icon name */\n  @Input()\n  @HostBinding('attr.data-ng-doc-icon')\n  icon: string = '';\n\n  /** Custom icon name, if not set, `icon` will be used */\n  @Input()\n  @HostBinding('attr.data-ng-doc-custom-icon')\n  customIcon: string = '';\n\n  /** Icon size */\n  @Input({ transform: numberAttribute })\n  @HostBinding('attr.data-ng-doc-size')\n  size: NgDocIconSize = 16;\n\n  private readonly reload$: Subject<void> = new Subject<void>();\n  private readonly assetsPath: string = inject(NG_DOC_ASSETS_PATH, { optional: true }) ?? '';\n  private readonly customIconsPath: string =\n    inject(NG_DOC_CUSTOM_ICONS_PATH, { optional: true }) ?? '';\n\n  constructor(\n    private readonly elementRef: ElementRef<HTMLElement>,\n    private readonly httpClient: HttpClient,\n  ) {}\n\n  ngOnChanges(): void {\n    this.reload$.next();\n  }\n\n  ngOnInit(): void {\n    this.reload$\n      .pipe(\n        startWith(null),\n        switchMap(() =>\n          this.httpClient\n            .get(this.href, {\n              responseType: 'text',\n              params: { [NgDocCacheInterceptor.TOKEN]: 'true' },\n            })\n            .pipe(\n              catchError((e: Error) => {\n                console.error(e);\n\n                return of('');\n              }),\n            ),\n        ),\n      )\n      .subscribe((svg: string) => (this.elementRef.nativeElement.innerHTML = svg));\n  }\n\n  get href(): string {\n    return this.customIcon\n      ? `${this.customIconsPath}/${this.customIcon}.svg#${this.customIcon}`\n      : `${this.assetsPath}/icons/${this.size}/${this.icon}.svg#${this.icon}`;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}