{"version":3,"file":"pad-ui-lib-icon.mjs","sources":["../../../components/icon/featured-icon.component.ts","../../../components/icon/icon.type.ts","../../../components/icon/icon.registry.ts","../../../components/icon/icon.component.ts","../../../components/icon/icon.component.html","../../../components/icon/icon.module.ts","../../../components/icon/pad-ui-lib-icon.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type PadFeaturedIconSize = \"lg\" | \"md\" | \"sm\";\n\n@Component({\n  selector: \"pad-featured-icon\",\n  exportAs: \"padFeaturedIcon\",\n  template: `<ng-content></ng-content>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: [\"./featured-icon.scss\"],\n  host: {\n    class: \"pad-featured-icon\",\n    \"[class.pad-featured-icon-size-sm]\": `padSize === 'sm'`,\n    \"[class.pad-featured-icon-size-md]\": `padSize === 'md'`,\n    \"[class.pad-featured-icon-size-lg]\": `padSize === 'lg'`,\n  },\n})\nexport class PadFeaturedIconComponent {\n  @Input() padSize: PadFeaturedIconSize = \"md\";\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport interface PadIconConfig {\n  defaultColor: string;\n  defaultSize: PadIconSize;\n  path: string;\n  sizes: GroupIconSize;\n}\n\nexport type PadIconSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\nexport type GroupIconSize = {\n  [k in PadIconSize]: string;\n} & Record<string, string>;\n\nexport const DEFAULT_CONFIG: PadIconConfig = {\n  sizes: {\n    xs: \"0.75rem\",\n    sm: \"1rem\",\n    md: \"1.25rem\",\n    lg: \"1.5rem\",\n    xl: \"2rem\",\n    \"2xl\": \"2.5rem\",\n  },\n  path: \"/assets/icons/\",\n  defaultColor: \"\",\n  defaultSize: \"md\",\n};\n\nexport const PAD_ICON_CONFIG = new InjectionToken<PadIconConfig>(\"PAD_ICON_CONFIG\");\n","import { DOCUMENT } from \"@angular/common\";\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\nimport { Inject, Injectable, Optional } from \"@angular/core\";\nimport { Observable, catchError, map, of, take, tap, throwError } from \"rxjs\";\nimport { DEFAULT_CONFIG, PAD_ICON_CONFIG, PadIconConfig } from \"./icon.type\";\n\n@Injectable({ providedIn: \"root\" })\nexport class PadIconRegistry {\n  private _icons: Map<string, SVGElement>;\n  private _path: string;\n\n  constructor(\n    @Optional() @Inject(DOCUMENT) private readonly _document: Document,\n    @Optional() private readonly _http: HttpClient,\n    @Inject(PAD_ICON_CONFIG) customConfig: PadIconConfig\n  ) {\n    this._icons = new Map<string, SVGElement>();\n    this._path = customConfig.path ?? DEFAULT_CONFIG.path;\n  }\n\n  get(key: string): Observable<SVGElement> {\n    const icon = this._icons.get(key);\n    if (icon) {\n      return of(icon).pipe(take(1));\n    }\n    return this._getIconFromSvgFileAndRegistry(key);\n  }\n\n  private _getIconFromSvgFileAndRegistry(key: string): Observable<SVGElement> {\n    return this._loadContentFromSvgFile(key).pipe(\n      map(content => this._svgElementFromString(content)),\n      map(svgElement => this._setSvgElementAttributes(svgElement)),\n      tap(svgElement => this._icons.set(key, svgElement)),\n      catchError((error: HttpErrorResponse) => {\n        const url = \"\";\n        const message = `Loading icon set URL: ${url} failed: ${error.message}`;\n        return throwError(() => Error(message));\n      })\n    );\n  }\n\n  private _loadContentFromSvgFile(key: string): Observable<string> {\n    const fileName = this._nameSvgFileFromKey(key);\n    const url = this._path + fileName;\n    return this._http\n      .get(url, { responseType: \"text\" })\n      .pipe(map(data => data.replaceAll(\"stroke=\", \"\")));\n  }\n\n  private _nameSvgFileFromKey(key: string): string {\n    return key + \".svg\";\n  }\n\n  private _svgElementFromString(content: string) {\n    const wrapperElement = this._document.createElement(\"DIV\");\n    wrapperElement.innerHTML = content;\n    const svgElement = wrapperElement.querySelector(\"svg\") as SVGElement;\n\n    if (!svgElement) {\n      throw new Error(\"<svg> tag not found\");\n    }\n    return svgElement;\n  }\n\n  private _setSvgElementAttributes(svgElement: SVGElement): SVGElement {\n    svgElement.setAttribute(\"fit\", \"\");\n    svgElement.setAttribute(\"height\", \"100%\");\n    svgElement.setAttribute(\"width\", \"100%\");\n    svgElement.setAttribute(\"stroke\", \"currentColor\");\n    svgElement.setAttribute(\"preserveAspectRatio\", \"xMidYMid meet\");\n    svgElement.setAttribute(\"focusable\", \"false\"); // Disable IE11 default behavior to make SVGs focusable.\n    return svgElement;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Inject,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewEncapsulation,\n} from \"@angular/core\";\nimport { Observable, map, tap } from \"rxjs\";\nimport { PadIconRegistry } from \"./icon.registry\";\nimport { DEFAULT_CONFIG, PAD_ICON_CONFIG, PadIconConfig, PadIconSize } from \"./icon.type\";\n\n@Component({\n  selector: \"pad-icon\",\n  templateUrl: \"./icon.component.html\",\n  styleUrls: [\"./icon.component.scss\"],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: \"pad-icon\",\n    \"[class.pad-icon-size-xs]\": `padSize === 'xs'`,\n    \"[class.pad-icon-size-sm]\": `padSize === 'sm'`,\n    \"[class.pad-icon-size-md]\": `padSize === 'md'`,\n    \"[class.pad-icon-size-lg]\": `padSize === 'lg'`,\n    \"[class.pad-icon-size-xl]\": `padSize === 'xl'`,\n    \"[class.pad-icon-size-2xl]\": `padSize === '2xl'`,\n  },\n})\nexport class PadIconComponent implements OnChanges {\n  @Input() key!: string;\n  @Input() padSize: PadIconSize = \"md\";\n  @Input() strokeWidth!: string | number;\n  @Input() width!: string | number;\n  @Input() height!: string | number;\n\n  private _init: boolean;\n  private _config: PadIconConfig;\n\n  svgIcon$!: Observable<SVGElement>;\n\n  get element(): HTMLElement {\n    return this._elementRef.nativeElement;\n  }\n\n  constructor(\n    private _elementRef: ElementRef<HTMLElement>,\n    private _registry: PadIconRegistry,\n\n    @Inject(PAD_ICON_CONFIG) customConfig: PadIconConfig\n  ) {\n    this._init = true;\n    this._config = { ...DEFAULT_CONFIG, ...customConfig };\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { key, size, width, height } = changes;\n    if (key) {\n      this.svgIcon$ = this._setSvgIcon(key.currentValue);\n    }\n\n    if (size) {\n      this._setIconSize(size.currentValue);\n    }\n\n    if (this._init && !size?.currentValue) {\n      this._setIconSize(DEFAULT_CONFIG.defaultSize);\n    }\n\n    if (width) {\n      this._setIconWidth(width.currentValue);\n    }\n\n    if (height) {\n      this._setIconHeight(height.currentValue);\n    }\n\n    this._init = false;\n  }\n\n  private _setSvgIcon(key: string) {\n    return this._registry.get(key).pipe(\n      map(svgElement => this._setSvgElementAttribute(svgElement)),\n      map(svgElement => svgElement.cloneNode(true) as SVGElement),\n      tap(cloneElement => {\n        this.element.innerHTML = \"\";\n        this.element.appendChild(cloneElement);\n      })\n    );\n  }\n\n  private _setSvgElementAttribute(svgElement: SVGElement) {\n    if (this.strokeWidth) {\n      svgElement.style.strokeWidth = this._coerceCssPixelValue(this.strokeWidth);\n    }\n    return svgElement;\n  }\n\n  private _setIconWidth(width: string | number) {\n    const value = this._coerceCssPixelValue(width);\n    this.element.style.width = value;\n  }\n\n  private _setIconHeight(height: string | number) {\n    const value = this._coerceCssPixelValue(height);\n    this.element.style.height = value;\n  }\n\n  private _setIconSize(size: PadIconSize) {\n    const value = this._coerceCssPixelValue(this._config.sizes[size]);\n    this.element.style.setProperty(`--pad-icon-size-${size}`, value);\n  }\n\n  private _coerceCssPixelValue(value: number | string) {\n    if (value == null) {\n      return \"\";\n    }\n    if (typeof value === \"number\") {\n      return `${value}px`;\n    }\n    return value;\n  }\n}\n","<ng-container *ngIf=\"svgIcon$ | async\"></ng-container>\n<ng-content></ng-content>\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { PadFeaturedIconComponent } from \"./featured-icon.component\";\nimport { PadIconComponent } from \"./icon.component\";\nimport { PadIconRegistry } from \"./icon.registry\";\nimport { PAD_ICON_CONFIG, PadIconConfig } from \"./icon.type\";\n\n@NgModule({\n  declarations: [PadFeaturedIconComponent, PadIconComponent],\n  providers: [PadIconRegistry],\n  exports: [PadFeaturedIconComponent, PadIconComponent],\n  imports: [CommonModule, HttpClientModule],\n})\nexport class PadIconModule {\n  static forRoot(\n    config: Partial<PadIconConfig> = {}\n  ): ModuleWithProviders<PadIconModule> {\n    return {\n      ngModule: PadIconModule,\n      providers: [\n        {\n          provide: PAD_ICON_CONFIG,\n          useValue: config,\n        },\n      ],\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}