{"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 {\n  NG_DOC_ASSETS_PATH,\n  NG_DOC_CUSTOM_ICONS_PATH,\n  NG_REQUEST_BASE_PATH,\n} 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  private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly httpClient = inject(HttpClient);\n  private readonly baseUrl = inject(NG_REQUEST_BASE_PATH);\n\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\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 (\n      this.baseUrl +\n      (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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}