{"version":3,"file":"alyle-ui-icon.mjs","sources":["../../../lib/icon/icon.service.ts","../../../lib/icon/icon.ts","../../../lib/icon/icon.module.ts","../../../lib/icon/alyle-ui-icon.ts"],"sourcesContent":["import { Injectable, Optional, Inject, SecurityContext } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { DOCUMENT } from '@angular/common';\nimport { Observable } from 'rxjs';\nimport { map, share } from 'rxjs/operators';\nimport { LyTheme2 } from '@alyle/ui';\nimport { SafeHtml, DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nconst STYLE_PRIORITY = -2;\n\nexport interface FontClassOptions {\n  key: string;\n  /** Class name */\n  class?: string;\n  /** Frefix class */\n  prefix?: string;\n}\n\n/** The following styles will never be updated */\nconst styles = {\n  svg: {\n    width: 'inherit',\n    height: 'inherit',\n    fill: 'currentColor',\n  }\n};\n\nexport interface SvgIcon {\n  obs?: Observable<SVGElement>;\n  svg?: SVGElement;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LyIconService {\n  private _defaultClass?: string = 'material-icons';\n  private _defaultClassPrefix?: string;\n  private svgMap = new Map<string, SvgIcon>();\n  private _fontClasses = new Map<string, FontClassOptions>();\n  /**\n   * Styles\n   * @docs-private\n   */\n  readonly classes = this.theme.addStyleSheet(styles, STYLE_PRIORITY);\n  readonly defaultSvgIcon: string;\n  get defaultClass() {\n    return this._defaultClass;\n  }\n  get defaultClassPrefix() {\n    return this._defaultClassPrefix;\n  }\n\n  constructor(\n    private http: HttpClient,\n    private _sanitizer: DomSanitizer,\n    @Optional() @Inject(DOCUMENT) private _document: any,\n    private theme: LyTheme2\n  ) {\n    this.defaultSvgIcon = '<svg viewBox=\"0 0 20 20\"><circle cx=\"10\" cy=\"10\" r=\"10\"></circle></svg>';\n  }\n\n  setSvg(key: string, url: SafeResourceUrl) {\n    if (!this.svgMap.has(key)) {\n      const urlSanitized = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, url);\n      const svgIcon: SvgIcon = {\n        obs: this.http.get(`${urlSanitized}.svg`, { responseType: 'text' })\n        .pipe(\n          share(),\n          map(svgText => {\n            if (svgIcon.svg) {\n              return svgIcon.svg;\n            }\n            const svg = this._textToSvg(svgText);\n            this._cacheSvgIcon(svg, key);\n            return svg;\n          }),\n        )\n      };\n      this.svgMap.set(key, svgIcon);\n    }\n  }\n\n  addSvgIconLiteral(key: string, literal: SafeHtml) {\n    if (!this.svgMap.has(key)) {\n      const sanitizedLiteral = this._sanitizer.sanitize(SecurityContext.HTML, literal);\n      if (!sanitizedLiteral) {\n        throw new Error(`LyIconService: Failed sanitize '${key}'`);\n      }\n      const svg = this._textToSvg(sanitizedLiteral);\n      this.svgMap.set(key, {\n        svg\n      });\n    }\n  }\n\n  /** String to SVG */\n  _textToSvg(str: string): SVGElement {\n    const div = this._document.createElement('DIV');\n    div.innerHTML = str;\n    const svg = div.querySelector('svg') as SVGElement;\n    return svg;\n  }\n\n  private _cacheSvgIcon(svg: SVGElement, key: string) {\n    const svgIconInfo = this.svgMap.get(key);\n    if (!svgIconInfo!.svg) {\n      this.svgMap.get(key)!.svg = svg;\n    }\n  }\n\n  getSvg(key: string): SvgIcon {\n    if (!this.svgMap.has(key)) {\n      throw new Error(`LyIconService: Icon ${key} not found`);\n    }\n    return this.svgMap.get(key)!;\n  }\n  /**\n   * Set default className for `ly-icon`\n   * @param className class name\n   * @param prefix Class prefix,\n   * For example if you use FontAwesome your prefix would be `fa-`,\n   * then in the template it is no longer necessary to use the prefix\n   * Example: `<ly-icon fontIcon=\"alarm\">`\n   */\n  setDefaultClass(className?: string, prefix?: string) {\n    this._defaultClass = className;\n    this._defaultClassPrefix = prefix;\n  }\n\n  /**\n   * Register new font class alias\n   * demo:\n   * For FontAwesome\n   * registerFontClass({\n   *   key: 'fa',\n   *   class: 'fa'\n   *   prefix: 'fa-'\n   * })\n   */\n  registerFontClass(opt: FontClassOptions) {\n    this._fontClasses.set(opt.key, opt);\n  }\n\n  getFontClass(key: string) {\n    return this._fontClasses.get(key);\n  }\n}\n","import {\n  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Renderer2\n  } from '@angular/core';\nimport { FontClassOptions, LyIconService, SvgIcon } from './icon.service';\nimport {\n  LyTheme2,\n  mixinBg,\n  mixinColor,\n  mixinElevation,\n  mixinOutlined,\n  mixinRaised,\n  mixinShadowColor,\n  mixinStyleUpdater,\n  ThemeVariables,\n  keyframesUniqueId,\n  StyleRenderer } from '@alyle/ui';\nimport { take } from 'rxjs/operators';\nimport { Platform } from '@angular/cdk/platform';\n\nconst STYLE_PRIORITY = -2;\nexport const STYLES = (theme: ThemeVariables) => {\n  const loading = keyframesUniqueId.next();\n  const { primary, secondary, tertiary } = theme.background;\n  const lum = primary.default.luminance();\n  let one = (lum < .5\n    ? tertiary\n    : secondary);\n  let two = (lum < .5\n    ? secondary\n    : tertiary);\n  one = one.darken(.25 * (lum < .5 ? -1 : 1.1));\n  two = two.darken(.25 * (lum < .5 ? -1 : 1.1));\n  return {\n    $priority: STYLE_PRIORITY,\n    $global: (_className: string) => `@keyframes ${loading}{0%{background-position:200% 50%;}100%{background-position:-200% 50%;}}`,\n    root: () => (_className: string) => `${_className}{font-size:${theme.icon.fontSize};width:1em;position:relative;height:1em;display:inline-flex;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}`,\n    loading: (_className: string) => `${_className}{background:${\n        `linear-gradient(270deg, ${\n          one\n        }, ${\n          two\n        }, ${\n          two\n        }, ${\n          one\n        })`};background-size:400% 400%;animation:${loading} 8s ease-in-out infinite;}`,\n    defaultIcon: (_className: string) => `${_className}{border-radius:50px;}`\n  };\n};\n\n/** @docs-private */\nexport class LyIconBase {\n  constructor(\n    public _theme: LyTheme2\n  ) { }\n}\n\n/** @docs-private */\nexport const LyIconMixinBase = mixinStyleUpdater(\nmixinBg(\n  mixinColor(\n    mixinRaised(\n      mixinOutlined(\n        mixinElevation(\n          mixinShadowColor(LyIconBase)))))));\n\n\n@Directive({\n  selector: 'ly-icon',\n  inputs: [\n    'bg',\n    'color',\n    'raised',\n    'outlined',\n    'elevation',\n    'shadowColor',\n  ],\n  exportAs: 'lyIcon',\n  providers: [\n    StyleRenderer\n  ],\n  standalone: false\n})\nexport class LyIcon extends LyIconMixinBase implements OnChanges, OnInit, OnDestroy {\n  readonly classes = this.sRenderer.renderSheet(STYLES, true);\n  private _icon: string;\n  private _fontSet: string;\n  private _previousFontSet: FontClassOptions;\n  private _currentClass: string;\n  private _fontIcon: string;\n  private _iconElement?: SVGElement;\n\n  @Input()\n  get icon() {\n    return this._icon;\n  }\n  set icon(val: string) {\n    this._icon = val;\n    this._addDefaultIcon();\n    if (this._platform.isBrowser) {\n      this._prepareSvgIcon(this.iconService.getSvg(val));\n    }\n  }\n\n  @Input()\n  get fontSet(): string {\n    return this._fontSet;\n  }\n  set fontSet(key: string) {\n    this._fontSet = key;\n  }\n\n  @Input()\n  get fontIcon(): string {\n    return this._fontIcon;\n  }\n  set fontIcon(key: string) {\n    this._fontIcon = key;\n  }\n\n  /** @docs-private */\n  get hostElement() {\n    return this._el.nativeElement;\n  }\n\n  constructor(\n    private iconService: LyIconService,\n    private _el: ElementRef,\n    private _renderer: Renderer2,\n    theme: LyTheme2,\n    readonly sRenderer: StyleRenderer,\n    private _platform: Platform\n  ) {\n    super(theme);\n    this.setAutoContrast();\n  }\n\n  ngOnChanges() {\n    if (this.fontSet || this.fontIcon) {\n      this._updateFontClass();\n    }\n    this.updateStyle(this._el);\n  }\n\n  private _isDefault() {\n    return !(this.icon || this.fontSet);\n  }\n\n  private _prepareSvgIcon(svgIcon: SvgIcon) {\n    if (svgIcon.svg) {\n      this._appendChild(svgIcon.svg.cloneNode(true) as SVGElement);\n    } else {\n      svgIcon.obs!\n        .pipe(\n          take(1)\n        )\n        .subscribe((svgElement) => {\n          this._appendChild(svgElement.cloneNode(true) as SVGElement);\n        });\n    }\n  }\n\n  private _appendChild(svg: SVGElement) {\n    this._cleanIcon();\n    this._iconElement = svg;\n    this._renderer.addClass(svg, this.iconService.classes.svg);\n    this._renderer.appendChild(this._el.nativeElement, svg);\n  }\n\n  private _addDefaultIcon() {\n    this.sRenderer.addClass(this.classes.defaultIcon);\n    this.sRenderer.addClass(this.classes.loading);\n  }\n\n  // private _appendDefaultSvgIcon() {\n  //   const svgIcon = this.iconService._textToSvg(this.iconService.defaultSvgIcon) as SVGAElement;\n  //   svgIcon.classList.add(this.classes.loading);\n  //   this._appendChild(svgIcon);\n  // }\n\n  private _updateClass() {\n    if (this._isDefault() && this.iconService.defaultClass) {\n      this._renderer.addClass(this._el.nativeElement, this.iconService.defaultClass);\n    }\n  }\n\n  ngOnInit() {\n    this._updateClass();\n  }\n\n  ngOnDestroy() {\n    this._cleanIcon();\n  }\n\n  /**\n   * run only browser\n   * remove current icon\n   */\n  private _cleanIcon() {\n    const icon = this._iconElement;\n    this.sRenderer.removeClass(this.classes.defaultIcon);\n    this.sRenderer.removeClass(this.classes.loading);\n    if (icon) {\n      this._renderer.removeChild(this._el.nativeElement, icon);\n      this._iconElement = undefined;\n    }\n  }\n\n  private _updateFontClass() {\n\n    const currentClass = this._currentClass;\n    const fontSetKey = this.fontSet;\n    const icon = this.fontIcon;\n    const el = this._el.nativeElement;\n    const iconClass = this.iconService.getFontClass(fontSetKey);\n    if (currentClass) {\n      this._renderer.removeClass(el, currentClass);\n    }\n    if (this._previousFontSet) {\n      if (this._previousFontSet.class) {\n        this._renderer.removeClass(el, this._previousFontSet.class);\n      }\n    }\n    if (iconClass) {\n      this._previousFontSet = iconClass;\n    } else {\n      throw new Error(`Icon with key${fontSetKey} not found`);\n    }\n    this._currentClass = `${iconClass.prefix}${icon}`;\n    this._renderer.addClass(el, this._currentClass);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { LyCommonModule } from '@alyle/ui';\n\nimport { LyIcon } from './icon';\n\n@NgModule({\n  declarations: [LyIcon],\n  exports: [LyIcon, LyCommonModule]\n})\nexport class LyIconModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["STYLE_PRIORITY","i3","i1.LyIconService","i2"],"mappings":"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"}