{"version":3,"file":"icong.mjs","sources":["../../../projects/icong/src/lib/icons-registry.ts","../../../projects/icong/src/lib/icon/icon.component.ts","../../../projects/icong/src/lib/icon/icon.component.html","../../../projects/icong/src/lib/icons-host/icons-host.component.ts","../../../projects/icong/src/lib/icons-host/icons-host.component.html","../../../projects/icong/src/lib/icon.module.ts","../../../projects/icong/src/icong.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { Icon, UrlIcon, XmlIcon } from './meta';\n\ninterface RegisteredIcon {\n  name: string;\n  xml?: string;\n  url?: string;\n  requested: boolean;\n}\n\n/**\n * Icons registry.\n *\n * ```typescript\n * import { IconsRegistry } from 'icong';\n * ...\n * constructor(\n *   private iconsRegistry: IconsRegistry,\n * ) {}\n * ...\n * this.iconsRegistry.add({name: 'home', xml: '<svg ...'});\n * this.iconsRegistry.add({name: 'star', url: '/assets/icons/star.svg'});\n * // or\n * this.iconsRegistry.add([\n *   {name: 'home', xml: '<svg ...'},\n *   {name: 'star', url: '/assets/icons/star.svg'},\n * ]);\n * ```\n *\n * Use in a template:\n *\n * ```html\n * <svg icon=\"home\"></svg>\n * ```\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class IconsRegistry {\n  #icons: RegisteredIcon[] = [];\n\n  #reqIcons = new BehaviorSubject<RegisteredIcon[]>([]);\n\n  constructor(\n    private http: HttpClient,\n    @Optional() @Inject(PLATFORM_ID) private platformId?: any,\n  ) {\n  }\n\n  get isBrowser() {\n    return this.platformId ?\n      isPlatformBrowser(this.platformId)\n      : typeof document === 'object' && !!document;\n  }\n\n  get icons() {\n    return [...this.#icons];\n  }\n\n  get reqIcons$() {\n    return this.#reqIcons.asObservable();\n  }\n\n  /**\n   * Add icons to registry.\n   */\n  add(icon: Icon | Icon[]) {\n    // @todo filter OR check duplicates\n    const icons = Array.isArray(icon) ? icon : [icon];\n    this.#icons = [\n      ...this.#icons,\n      ...icons.map(i => ({\n        name: i.name,\n        xml: (i as XmlIcon).xml,\n        url: (i as UrlIcon).url,\n        requested: false,\n      })),\n    ];\n  }\n\n  /**\n   * @internal\n   *\n   * Request icon to load (if needed) and draw into the host.\n   */\n  req(name: string) {\n    const icon = this.#icons.find(i => i.name === name);\n    if (!icon) {\n      // @todo error/warning ??\n      return;\n    }\n    if (!icon.requested) {\n      icon.requested = true;\n      if (icon.xml) {\n        this.updateReqIcons();\n      }\n      if (icon.url) {\n        this.loadIcon(icon);\n      }\n    }\n  }\n\n  private updateReqIcons() {\n    const req = this.#icons.filter(i => i.requested && i.xml);\n    if (req.length !== this.#reqIcons.value.length) {\n      this.#reqIcons.next(req);\n    }\n  }\n\n  private loadIcon(icon: RegisteredIcon) {\n    if (!icon.url) {\n      // @todo warning/error ??\n      return;\n    }\n    return this.http\n      .get(icon.url, {responseType: 'text'})\n      .pipe(\n        catchError((error: HttpErrorResponse) => {\n          throw new Error(`Svg load failed, url: ${icon.url}, message: ${error.message}`);\n        }),\n      )\n      .subscribe(xml => {\n        icon.xml = xml;\n        this.updateReqIcons();\n      });\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { IconsRegistry } from '../icons-registry';\n\n/**\n * Component for rendering svg icon.\n */\n@Component({\n  selector: 'svg[icon]',\n  templateUrl: './icon.component.html',\n  styleUrls: ['./icon.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent implements OnChanges, OnDestroy {\n  /**\n   * Name in the registry.\n   */\n  @Input() icon: string;\n\n  /**\n   * A11y title.\n   */\n  @Input() title: string;\n\n  /**\n   * A11y description.\n   */\n  @Input() desc: string;\n\n  titleId = '';\n\n  descId = '';\n\n  @HostBinding('attr.role') roleBind = 'img';\n\n  /**\n   * Load and render icon only when visible.\n   */\n    // @Input() intersectionLoad = false;\n\n  private destroy = new Subject<void>();\n\n  private nameChanges = new Subject<string>();\n\n  constructor(\n    private registry: IconsRegistry,\n  ) {\n    this.nameChanges\n      .pipe(\n        takeUntil(this.destroy),\n        filter(name => !!name),\n        // @todo deffer load/draw on host\n        // switchMap(name => {\n        //   // Debounce icon load until being visible (if needed).\n        //   return this.intersectionLoad\n        //     ? this.intersection.observe().pipe(\n        //       filter(Boolean),\n        //       take(1),\n        //       mapTo(name),\n        //     )\n        //     : from([name]);\n        // }),\n//        switchMap((name: string) => this.registry.get(name)),\n      )\n      .subscribe(name => {\n        this.registry.req(name);\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('icon' in changes) {\n      this.nameChanges.next(this.icon);\n    }\n    if ('title' in changes || 'desc' in changes) {\n      this.updateA11y();\n    }\n  }\n\n  ngOnDestroy() {\n    this.destroy.next();\n  }\n\n  @HostBinding('attr.aria-labelledby') get ariaLabelledbyBind() {\n    return this.titleId + ' ' + this.descId;\n  }\n\n  private updateA11y() {\n    this.titleId = this.title ? this.uuid() : '';\n    this.descId = this.desc ? this.uuid() : '';\n  }\n\n  /**\n   * Random id generator.\n   *\n   * Generates GUID-like string, does not follow RFC4122.\n   */\n  private uuid(): string {\n    function s4() {\n      return Math.floor((1 + Math.random()) * 0x10000)\n        .toString(16)\n        .substring(1);\n    }\n\n    return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n  }\n}\n","<svg:title *ngIf=\"title\" [id]=\"titleId\">{{ title }}</svg:title>\n<svg:desc *ngIf=\"desc\" [id]=\"descId\">{{ desc }}</svg:desc>\n<svg:use [attr.href]=\"'#' + icon\" />\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { debounceTime } from 'rxjs';\nimport { IconsRegistry } from '../icons-registry';\n\n@Component({\n  selector: 'icons-host',\n  templateUrl: './icons-host.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconsHostComponent implements OnInit {\n  icons: {\n    name: string;\n    html: SafeHtml;\n    viewBox?: string;\n    fill?: string;\n    stroke?: string;\n    width?: string;\n    height?: string;\n  }[] = [];\n\n  renders: SafeHtml[] = [];\n\n  constructor(\n    private registry: IconsRegistry,\n    private cdr: ChangeDetectorRef,\n    private sanitizer: DomSanitizer,\n  ) {\n  }\n\n  ngOnInit() {\n    this.registry.reqIcons$.pipe(debounceTime(0)).subscribe(icons => {\n      const newIcons = icons\n        // Add only new icons\n        .filter(icon => !this.icons.find(localIcon => localIcon.name === icon.name))\n        // Map to local obj\n        .map(icon => {\n          const prepared = icon.xml\n            .trim()\n            .replace(/(\\r\\n|\\n|\\r)/gm, '');\n          const svgRoot = prepared.match(/^<svg.*?>/)?.[0];\n          if (!svgRoot) {\n            return undefined;\n          }\n          return {\n            name: icon.name,\n            html: prepared\n              .replace(/^<svg.*?>/, '')\n              .replace(/<\\/svg.*?>$/, ''),\n            // Match viewBox only from root svg tag\n            viewBox: svgRoot.match(/viewBox=\"(.*?)\"/)?.[1],\n            fill: svgRoot.match(/fill=\"(.*?)\"/)?.[1],\n            stroke: svgRoot.match(/stroke=\"(.*?)\"/)?.[1],\n            width: svgRoot.match(/width=\"(.*?)\"/)?.[1],\n            height: svgRoot.match(/height=\"(.*?)\"/)?.[1],\n          };\n        })\n        .filter(icon => !!icon);\n      this.renders.push(this.sanitizer.bypassSecurityTrustHtml(`\n        <svg\n          height=\"200\"\n          style=\"display: none;\"\n          viewBox=\"0 0 500 200\"\n          width=\"500\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <defs>\n            ${newIcons.map(icon => `\n              <symbol\n                id=\"${icon.name}\"\n                ${icon.viewBox ? `viewBox=\"${icon.viewBox}\"` : ''}\n                ${icon.fill ? `fill=\"${icon.fill}\"` : ''}\n                ${icon.stroke ? `stroke=\"${icon.stroke}\"` : ''}\n                ${icon.width ? `width=\"${icon.width}\"` : ''}\n                ${icon.height ? `height=\"${icon.height}\"` : ''}\n              >\n                ${icon.html}\n              </symbol>\n            `).join('')}\n          </defs>\n        </svg>\n      `));\n      this.icons.push(...newIcons);\n      this.cdr.markForCheck();\n    });\n  }\n\n  trackByFn(\n    index,\n  ) {\n    return index;\n  }\n}\n","<div\n  *ngFor=\"let render of renders; trackBy: trackByFn\"\n  style=\"display: none;\"\n  [innerHTML]=\"render\"\n></div>\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { IconComponent } from './icon/icon.component';\nimport { IconsHostComponent } from './icons-host/icons-host.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    HttpClientModule,\n  ],\n  declarations: [\n    IconComponent,\n    IconsHostComponent,\n  ],\n  exports: [\n    IconComponent,\n    IconsHostComponent,\n  ],\n})\nexport class IconModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.IconsRegistry","i2","i3"],"mappings":"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"}