{"version":3,"file":"ngx-avatar-2.mjs","sources":["../../../projects/ngx-avatar-2/src/lib/sources/async-source.ts","../../../projects/ngx-avatar-2/src/lib/sources/avatar-source.enum.ts","../../../projects/ngx-avatar-2/src/lib/sources/facebook.ts","../../../projects/ngx-avatar-2/src/lib/sources/twitter.ts","../../../projects/ngx-avatar-2/src/lib/sources/google.ts","../../../projects/ngx-avatar-2/src/lib/sources/instagram.ts","../../../projects/ngx-avatar-2/src/lib/sources/custom.ts","../../../projects/ngx-avatar-2/src/lib/sources/initials.ts","../../../projects/ngx-avatar-2/src/lib/sources/gravatar.ts","../../../projects/ngx-avatar-2/src/lib/sources/value.ts","../../../projects/ngx-avatar-2/src/lib/sources/vkontakte.ts","../../../projects/ngx-avatar-2/src/lib/sources/github.ts","../../../projects/ngx-avatar-2/src/lib/sources/source.factory.ts","../../../projects/ngx-avatar-2/src/lib/avatar-config.token.ts","../../../projects/ngx-avatar-2/src/lib/avatar-config.service.ts","../../../projects/ngx-avatar-2/src/lib/avatar.service.ts","../../../projects/ngx-avatar-2/src/lib/avatar.component.ts","../../../projects/ngx-avatar-2/src/lib/avatar.module.ts","../../../projects/ngx-avatar-2/src/public_api.ts","../../../projects/ngx-avatar-2/src/ngx-avatar-2.ts"],"sourcesContent":["import { Source } from './source';\nimport { AvatarSource } from './avatar-source.enum';\n\n/**\n * Contract of all async sources.\n * Every async source must implement the processResponse method that extracts the avatar url from the data\n */\nexport abstract class AsyncSource implements Source {\n  readonly abstract sourceType: AvatarSource;\n\n  constructor(public sourceId: string) {}\n\n  abstract getAvatar(size: number): string;\n  abstract processResponse(data: unknown, size?: number): string | null;\n}\n","export enum AvatarSource {\n  FACEBOOK = 'facebook', /** @debug API version changed */\n  GOOGLE = 'google', /** @debug API version changed */\n  TWITTER = 'twitter', /** @deprecated Twitter/X API changes make this unreliable */\n  INSTAGRAM = 'instagram', /** @debug API version changed */\n  VKONTAKTE = 'vkontakte', /** @debug API version changed */\n  GRAVATAR = 'gravatar',\n  GITHUB = 'github',\n  CUSTOM = 'custom',\n  INITIALS = 'initials',\n  VALUE = 'value'\n}\n","import { Source } from './source';\nimport { AvatarSource } from './avatar-source.enum';\n/**\n *  Facebook source implementation.\n *  Fetch avatar source based on facebook identifier\n *  and image size\n */\nexport class Facebook implements Source {\n  readonly sourceType: AvatarSource = AvatarSource.FACEBOOK;\n\n  constructor(public sourceId: string) {}\n\n  public getAvatar(size: number): string {\n    return (\n      'https://graph.facebook.com/' +\n      `${this.sourceId}/picture?width=${size}&height=${size}`\n    );\n  }\n}\n","import { Source } from './source';\nimport { AvatarSource } from './avatar-source.enum';\n\n/**\n *  Twitter source implementation.\n *  Fetch avatar source based on twitter identifier\n *  and image size\n *  \n *  @deprecated Twitter/X has changed their API and this source may not work reliably.\n *  Consider using other avatar sources like Gravatar or GitHub instead.\n */\nexport class Twitter implements Source {\n  readonly sourceType: AvatarSource = AvatarSource.TWITTER;\n\n  constructor(public sourceId: string) {}\n\n  public getAvatar(size: number): string {\n    const twitterImgSize = this.getImageSize(size);\n    return `https://twitter.com/${\n      this.sourceId\n    }/profile_image?size=${twitterImgSize}`;\n  }\n\n  private getImageSize(size: number) {\n    if (size <= 24) {\n      return 'mini';\n    }\n\n    if (size <= 48) {\n      return 'normal';\n    }\n\n    if (size <= 73) {\n      return 'bigger';\n    }\n\n    return 'original';\n  }\n}\n","import { AsyncSource } from './async-source';\nimport { AvatarSource } from './avatar-source.enum';\n\n/**\n *  Google source implementation.\n *  Fetch avatar source based on google identifier\n *  and image size\n */\nexport class Google extends AsyncSource {\n  readonly sourceType: AvatarSource = AvatarSource.GOOGLE;\n\n  constructor(sourceId: string) {\n    super(sourceId);\n  }\n\n  public getAvatar(): string {\n    return `https://picasaweb.google.com/data/entry/api/user/${\n      this.sourceId\n    }?alt=json`;\n  }\n\n  /**\n   * Extract google avatar from json data\n   */\n  public processResponse(data: { entry: { gphoto$thumbnail: { $t: string } } }, size?: number): string | null {\n    const avatarSrc = data.entry.gphoto$thumbnail.$t;\n    if (avatarSrc) {\n      return avatarSrc.replace('s64', 's' + size);\n    }\n\n    return null;\n  }\n}\n","import { AsyncSource } from './async-source';\nimport { AvatarSource } from './avatar-source.enum';\n\n/**\n *  Instagram source impelementation.\n *  Fetch avatar source based on instagram identifier\n */\nexport class Instagram extends AsyncSource {\n  readonly sourceType: AvatarSource = AvatarSource.INSTAGRAM;\n\n  constructor(sourceId: string) {\n    super(sourceId);\n  }\n\n  public getAvatar(): string {\n    return `https://www.instagram.com/${this.sourceId}/?__a=1`;\n  }\n\n  /**\n   * extract instagram avatar from json data\n   */\n  public processResponse(data: { graphql: { user: { profile_pic_url_hd: string } } }, size?: number): string {\n    return `${data.graphql.user.profile_pic_url_hd}&s=${size}`;\n  }\n}\n","import { Source } from './source';\nimport { AvatarSource } from './avatar-source.enum';\n/**\n *  Custom source implementation.\n *  return custom image as an avatar\n *\n */\nexport class Custom implements Source {\n  readonly sourceType: AvatarSource = AvatarSource.CUSTOM;\n\n  constructor(public sourceId: string) {}\n\n  public getAvatar(): string {\n    return this.sourceId;\n  }\n}\n","import { Source } from './source';\nimport { AvatarSource } from './avatar-source.enum';\n\n/**\n * Initials source implementation.\n * return the initials of the given value\n */\nexport class Initials implements Source {\n  readonly sourceType: AvatarSource = AvatarSource.INITIALS;\n\n  constructor(public sourceId: string) {}\n\n  public getAvatar(size: number): string {\n    return this.getInitials(this.sourceId, size);\n  }\n\n  /**\n   * Returns the initial letters of a name in a string.\n   */\n  private getInitials(name: string, size: number): string {\n    name = name.trim();\n\n    if (!name) {\n      return '';\n    }\n\n    const initials = name.split(' ');\n\n    if (size && size < initials.length) {\n      return this.constructInitials(initials.slice(0, size));\n    } else {\n      return this.constructInitials(initials);\n    }\n  }\n\n  /**\n   * Iterates a person's name string to get the initials of each word in uppercase.\n   */\n  private constructInitials(elements: string[]): string {\n    if (!elements || !elements.length) {\n      return '';\n    }\n\n    return elements\n      .filter(element => element && element.length > 0)\n      .map(element => element[0].toUpperCase())\n      .join('');\n  }\n}\n","import { Source } from './source';\nimport { AvatarSource } from './avatar-source.enum';\n\n// Optional import with fallback\nlet Md5: any;\ntry {\n  const md5Module = require('ts-md5');\n  Md5 = md5Module.Md5;\n} catch (error) {\n  // ts-md5 not available, will use fallback\n  Md5 = null;\n}\n\n/**\n * Simple MD5 implementation fallback\n * Only used when ts-md5 is not available\n */\nfunction simpleMd5(input: string): string {\n  // Basic fallback - use the input as-is if it looks like an MD5 hash\n  if (input.match(/^[a-f0-9]{32}$/)) {\n    return input;\n  }\n  \n  // For non-hash inputs, create a simple hash-like string\n  // This is not a real MD5 but provides a deterministic result\n  let hash = 0;\n  for (let i = 0; i < input.length; i++) {\n    const char = input.charCodeAt(i);\n    hash = ((hash << 5) - hash) + char;\n    hash = hash & hash; // Convert to 32-bit integer\n  }\n  \n  // Convert to a hex-like string (not real MD5, but consistent)\n  const hashStr = Math.abs(hash).toString(16).padStart(8, '0');\n  return hashStr.repeat(4).substring(0, 32); // Make it 32 chars like MD5\n}\n\nfunction isRetina(): boolean {\n  if (typeof window !== 'undefined' && window !== null) {\n    if (window.devicePixelRatio > 1.25) {\n      return true;\n    }\n\n    const mediaQuery = '(-webkit-min-device-pixel-ratio: 1.25), (min--moz-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 5/4), (min-resolution: 1.25dppx)';\n    if (window.matchMedia && window.matchMedia(mediaQuery).matches) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\n/**\n *  Gravatar source implementation.\n *  Fetch avatar source based on gravatar email\n */\nexport class Gravatar implements Source {\n  readonly sourceType: AvatarSource = AvatarSource.GRAVATAR;\n  public sourceId: string;\n\n  constructor(public value: string) {\n    // Check if the value is already an MD5 hash\n    if (value.match(/^[a-f0-9]{32}$/)) {\n      this.sourceId = value;\n    } else {\n      // Use ts-md5 if available, otherwise use fallback\n      if (Md5 && typeof Md5.hashStr === 'function') {\n        this.sourceId = Md5.hashStr(value).toString();\n      } else {\n        this.sourceId = simpleMd5(value);\n      }\n    }\n  }\n\n  public getAvatar(size: number): string {\n    const avatarSize = isRetina() ? size * 2 : size;\n    return `https://secure.gravatar.com/avatar/${\n      this.sourceId\n    }?s=${avatarSize}&d=404`;\n  }\n}\n","import { Source } from './source';\nimport { AvatarSource } from './avatar-source.enum';\n\n/**\n *  Value source implementation.\n *  return the value as avatar\n */\nexport class Value implements Source {\n  readonly sourceType: AvatarSource = AvatarSource.VALUE;\n\n  constructor(public sourceId: string) {}\n\n  public getAvatar(): string {\n    return this.sourceId;\n  }\n}\n","import { AsyncSource } from './async-source';\nimport { AvatarSource } from './avatar-source.enum';\n\n/**\n *  Vkontakte source implementation.\n *  Fetch avatar source based on vkontakte identifier\n *  and image size\n */\nconst apiVersion = 5.154;\n\nexport class Vkontakte extends AsyncSource {\n  readonly sourceType: AvatarSource = AvatarSource.VKONTAKTE;\n\n  constructor(sourceId: string) {\n    super(sourceId);\n  }\n\n  public getAvatar(size: number): string {\n    const imgSize = this.getImageSize(size);\n    return `https://api.vk.com/method/users.get?user_id=${\n      this.sourceId\n    }&v=${apiVersion}&fields=${imgSize}`;\n  }\n\n  /**\n   * extract vkontakte avatar from json data\n   */\n  public processResponse(data: {\n    response: {\n      [key: string]: string;\n    }[]\n  }): string | null {\n    // avatar key property is the size used to generate avatar url\n    // size property is always the last key in the response object\n    const sizeProperty = Object.keys(data['response'][0]).pop();\n    if (!sizeProperty) {\n      return null;\n    }\n    // return avatar src\n    return data['response'][0][sizeProperty] || null;\n  }\n\n  /**\n   * Returns image size related to vkontakte API\n   */\n  private getImageSize(size: number): string {\n    if (size <= 50) {\n      return 'photo_50';\n    }\n\n    if (size <= 100) {\n      return 'photo_100';\n    }\n\n    if (size <= 200) {\n      return 'photo_200';\n    }\n\n    return 'photo_max';\n  }\n}\n","import { AsyncSource } from './async-source';\nimport { AvatarSource } from './avatar-source.enum';\n\n/**\n *  GitHub source implementation.\n *  Fetch avatar source based on github identifier\n */\nexport class Github extends AsyncSource {\n  readonly sourceType: AvatarSource = AvatarSource.GITHUB;\n\n  constructor(sourceId: string) {\n    super(sourceId);\n  }\n\n  public getAvatar(): string {\n    return `https://api.github.com/users/${this.sourceId}`;\n  }\n\n  /**\n   * extract github avatar from json data\n   */\n  public processResponse(data: { avatar_url: string }, size?: number): string {\n    if (size) {\n      return `${data.avatar_url}&s=${size}`;\n    }\n    return data.avatar_url;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Source } from './source';\nimport { Facebook } from './facebook';\nimport { Twitter } from './twitter';\nimport { Google } from './google';\nimport { Instagram } from './instagram';\nimport { Custom } from './custom';\nimport { Initials } from './initials';\nimport { Gravatar } from './gravatar';\nimport { Value } from './value';\nimport { Vkontakte } from './vkontakte';\nimport { Github } from './github';\nimport { SourceCreator } from './source.creator';\nimport { AvatarSource } from './avatar-source.enum';\n\n/**\n * Factory class that implements factory method pattern.\n * Used to create Source implementation class based\n * on the source Type\n */\n@Injectable()\nexport class SourceFactory {\n  private sources: { [key: string]: SourceCreator } = {};\n\n  constructor() {\n    this.sources[AvatarSource.FACEBOOK] = Facebook;\n    this.sources[AvatarSource.TWITTER] = Twitter;\n    this.sources[AvatarSource.GOOGLE] = Google;\n    this.sources[AvatarSource.INSTAGRAM] = Instagram;\n    this.sources[AvatarSource.GRAVATAR] = Gravatar;\n    this.sources[AvatarSource.CUSTOM] = Custom;\n    this.sources[AvatarSource.INITIALS] = Initials;\n    this.sources[AvatarSource.VALUE] = Value;\n    this.sources[AvatarSource.VKONTAKTE] = Vkontakte;\n    this.sources[AvatarSource.GITHUB] = Github;\n  }\n\n  public newInstance(sourceType: AvatarSource, sourceValue: string): Source {\n    return new this.sources[sourceType](sourceValue);\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { AvatarConfig } from './avatar-config';\n/**\n * Token used to inject the AvatarConfig object\n */\nexport const AVATAR_CONFIG = new InjectionToken<AvatarConfig>('avatar.config');\n","import { Injectable, Inject, Optional } from '@angular/core';\n\nimport { AvatarSource } from './sources/avatar-source.enum';\nimport { AVATAR_CONFIG } from './avatar-config.token';\nimport { AvatarConfig } from './avatar-config';\n\n@Injectable()\nexport class AvatarConfigService {\n  constructor(\n    @Optional()\n    @Inject(AVATAR_CONFIG)\n    public userConfig: AvatarConfig\n  ) {}\n\n  public getAvatarSources(defaultSources: AvatarSource[]): AvatarSource[] {\n    if (\n      this.userConfig &&\n      this.userConfig.sourcePriorityOrder &&\n      this.userConfig.sourcePriorityOrder.length\n    ) {\n      const uniqueSources = [...new Set(this.userConfig.sourcePriorityOrder)];\n      const validSources = uniqueSources.filter(source =>\n        defaultSources.includes(source)\n      );\n      return [\n        ...validSources,\n        ...defaultSources.filter(source => !validSources.includes(source))\n      ];\n    }\n    return defaultSources;\n  }\n\n  public getAvatarColors(defaultColors: string[]): string[] {\n    return (\n      (this.userConfig &&\n        this.userConfig.colors &&\n        this.userConfig.colors.length &&\n        this.userConfig.colors) ||\n      defaultColors\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\n\nimport { AvatarConfigService } from './avatar-config.service';\nimport { AvatarSource } from './sources/avatar-source.enum';\nimport { Source } from './sources/source';\n\n/**\n * list of Supported avatar sources\n */\nexport const defaultSources = [\n  AvatarSource.FACEBOOK,\n  AvatarSource.GOOGLE,\n  AvatarSource.TWITTER,\n  AvatarSource.INSTAGRAM,\n  AvatarSource.VKONTAKTE,\n  AvatarSource.GRAVATAR,\n  AvatarSource.GITHUB,\n  AvatarSource.CUSTOM,\n  AvatarSource.INITIALS,\n  AvatarSource.VALUE\n];\n\n/**\n * list of default colors\n */\nexport const defaultColors = [\n  '#1abc9c',\n  '#3498db',\n  '#f1c40f',\n  '#8e44ad',\n  '#e74c3c',\n  '#d35400',\n  '#2c3e50',\n  '#7f8c8d'\n];\n\n/**\n * Provides utilities methods related to Avatar component\n */\n@Injectable()\nexport class AvatarService {\n  public avatarSources: AvatarSource[] = defaultSources;\n  public avatarColors: string[] = defaultColors;\n\n  private readonly failedSources = new Map<string, Source>();\n\n  constructor(\n    private http: HttpClient,\n    private avatarConfigService: AvatarConfigService\n  ) {\n    this.overrideAvatarSources();\n    this.overrideAvatarColors();\n  }\n\n  public fetchAvatar(avatarUrl: string): Observable<unknown> {\n    /** @fixme */\n    return this.http.get(avatarUrl);\n  }\n\n  public getRandomColor(avatarText: string): string {\n    if (!avatarText) {\n      return 'transparent';\n    }\n    const asciiCodeSum = this.calculateAsciiCode(avatarText);\n    return this.avatarColors[asciiCodeSum % this.avatarColors.length];\n  }\n\n  public compareSources(\n    sourceType1: AvatarSource,\n    sourceType2: AvatarSource\n  ): number {\n    return (\n      this.getSourcePriority(sourceType1) - this.getSourcePriority(sourceType2)\n    );\n  }\n\n  public isSource(source: string): boolean {\n    return this.avatarSources.includes(source as AvatarSource);\n  }\n\n  public isTextAvatar(sourceType: AvatarSource): boolean {\n    return [AvatarSource.INITIALS, AvatarSource.VALUE].includes(sourceType);\n  }\n\n  private buildSourceKey(source: Source): string {\n    return source.sourceType + '-' + source.sourceId;\n  }\n\n  public sourceHasFailedBefore(source: Source): boolean {\n    return this.failedSources.has(this.buildSourceKey(source));\n  }\n\n  public markSourceAsFailed(source: Source): void {\n    this.failedSources.set(this.buildSourceKey(source), source);\n  }\n\n  private overrideAvatarSources(): void {\n    this.avatarSources = this.avatarConfigService.getAvatarSources(\n      defaultSources\n    );\n  }\n\n  private overrideAvatarColors(): void {\n    this.avatarColors = this.avatarConfigService.getAvatarColors(defaultColors);\n  }\n\n  private calculateAsciiCode(value: string): number {\n    return value\n      .split('')\n      .map(letter => letter.charCodeAt(0))\n      .reduce((previous, current) => previous + current);\n  }\n\n  private getSourcePriority(sourceType: AvatarSource) {\n    return this.avatarSources.indexOf(sourceType);\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnChanges,\n  SimpleChanges,\n  OnDestroy,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  inject\n} from '@angular/core';\nimport { NgStyle } from '@angular/common';\n\nimport { Source } from './sources/source';\nimport { AsyncSource } from './sources/async-source';\nimport { SourceFactory } from './sources/source.factory';\nimport { AvatarService } from './avatar.service';\nimport { AvatarSource } from './sources/avatar-source.enum';\nimport { takeWhile, map } from 'rxjs/operators';\n\ntype Style = Partial<CSSStyleDeclaration>;\n\n/**\n * Universal avatar component that\n * generates avatar from different sources\n *\n * export\n * class AvatarComponent\n * implements {OnChanges}\n */\n\n@Component({\n  selector: 'ngx-avatar',\n  standalone: true,\n  imports: [NgStyle],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [\n    `\n     :host {\n        border-radius: 50%;\n      }\n      \n      // :host {\n      //   border-radius: 50%;\n      //   display: inline-block;\n      // }\n      \n      // .avatar-container {\n      //   outline: none;\n      // }\n    `\n  ],\n  template: `\n    <div\n      (click)=\"onAvatarClicked()\"\n      (keydown)=\"onKeyDown($event)\"\n      class=\"avatar-container\"\n      [ngStyle]=\"hostStyle\"\n      [attr.role]=\"role\"\n      [attr.aria-label]=\"getAriaLabel()\"\n      [attr.tabindex]=\"clickable ? '0' : null\"\n      [class.clickable]=\"clickable\"\n    >\n      @if (avatarSrc) {\n        <img\n          [src]=\"avatarSrc\"\n          [alt]=\"getAltText()\"\n          [width]=\"size\"\n          [height]=\"size\"\n          [ngStyle]=\"avatarStyle\"\n          (error)=\"fetchAvatarSource()\"\n          class=\"avatar-content\"\n          loading=\"lazy\"\n          [attr.aria-hidden]=\"role === 'img' ? null : 'true'\"\n        />\n      } @else if (avatarText) {\n        <div \n          class=\"avatar-content\" \n          [ngStyle]=\"avatarStyle\"\n          [attr.aria-label]=\"getAriaLabel()\"\n        >\n          {{ avatarText }}\n        </div>\n      }\n    </div>\n  `\n})\nexport class AvatarComponent implements OnChanges, OnDestroy {\n  @Input()\n  public round = true;\n  @Input()\n  public size: string | number = 50;\n  @Input()\n  public textSizeRatio = 3;\n  @Input()\n  public bgColor: string | undefined;\n  @Input()\n  public fgColor = '#FFF';\n  @Input()\n  public borderColor: string | undefined;\n  @Input()\n  public style: Style = {};\n  @Input()\n  public cornerRadius: string | number = 0;\n\n  // Accessibility inputs\n  @Input()\n  public alt?: string;\n  @Input()\n  public ariaLabel?: string;\n  @Input()\n  public role: string = 'img';\n  @Input()\n  public clickable: boolean = false;\n  \n  // Avatar source inputs - aliases needed for backward compatibility\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('facebookId')\n  public facebook?: string | null;\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('twitterId')\n  public twitter?: string | null;\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('googleId')\n  public google?: string | null;\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('instagramId')\n  public instagram?: string | null;\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('vkontakteId')\n  public vkontakte?: string | null;\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('gravatarId')\n  public gravatar?: string | null;\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('githubId')\n  public github?: string | null;\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('src')\n  public custom?: string | null;\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input('name')\n  public initials?: string | null;\n  @Input()\n  public value?: string | null;\n  @Input()\n  public placeholder?: string;\n  @Input()\n  public initialsSize: string | number = 0;\n\n  @Output()\n  public clickOnAvatar: EventEmitter<Source> = new EventEmitter<Source>();\n\n  public isAlive = true;\n  public avatarSrc: string | null = null;\n  public avatarText: string | null = null;\n  public avatarStyle: Style = {};\n  public hostStyle: Style = {};\n\n  private currentIndex = -1;\n  private sources: Source[] = [];\n\n  // Modern Angular 17 dependency injection\n  public sourceFactory = inject(SourceFactory);\n  private avatarService = inject(AvatarService);\n  private cdr = inject(ChangeDetectorRef);\n\n  public onAvatarClicked(): void {\n    if (this.clickable) {\n      this.clickOnAvatar.emit(this.sources[this.currentIndex]);\n    }\n  }\n\n  public onKeyDown(event: KeyboardEvent): void {\n    if (this.clickable && (event.key === 'Enter' || event.key === ' ')) {\n      event.preventDefault();\n      this.onAvatarClicked();\n    }\n  }\n\n  /**\n   * Generate accessible alt text for avatar images\n   */\n  public getAltText(): string {\n    if (this.alt) {\n      return this.alt;\n    }\n\n    if (this.initials) {\n      return `Avatar for ${this.initials}`;\n    }\n\n    if (this.value) {\n      return `Avatar displaying ${this.value}`;\n    }\n\n    // Determine source type for better description\n    const currentSource = this.sources[this.currentIndex];\n    if (currentSource?.sourceType) {\n      return `Avatar from ${currentSource.sourceType}`;\n    }\n\n    return 'User avatar';\n  }\n\n  /**\n   * Generate ARIA label for accessibility\n   */\n  public getAriaLabel(): string {\n    if (this.ariaLabel) {\n      return this.ariaLabel;\n    }\n\n    if (this.clickable) {\n      return `${this.getAltText()}, clickable`;\n    }\n\n    return this.getAltText();\n  }\n\n  /**\n   * Detect inputs change\n   *\n   * param {{ [propKey: string]: SimpleChange }} changes\n   *\n   * memberof AvatarComponent\n   */\n  public ngOnChanges(changes: SimpleChanges): void {\n    for (const propName in changes) {\n      if (this.avatarService.isSource(propName)) {\n        const sourceType: AvatarSource = AvatarSource[propName.toUpperCase() as keyof typeof AvatarSource] ;\n        const currentValue = changes[propName].currentValue;\n        if (currentValue && typeof currentValue === 'string') {\n          this.addSource(sourceType, currentValue);\n        } else {\n          this.removeSource(sourceType);\n        }\n      }\n    }\n    // reinitialize the avatar component when a source property value has changed\n    // the fallback system must be re-invoked with the new values.\n    this.initializeAvatar();\n  }\n\n  /**\n   * Fetch avatar source\n   *\n   * memberOf AvatarComponent\n   */\n  public fetchAvatarSource(): void {\n    const previousSource = this.sources[this.currentIndex];\n    if (previousSource) {\n      this.avatarService.markSourceAsFailed(previousSource);\n    }\n\n    const source = this.findNextSource();\n    if (!source) {\n      return;\n    }\n\n    if (this.avatarService.isTextAvatar(source.sourceType)) {\n      this.buildTextAvatar(source);\n      this.avatarSrc = null;\n      this.cdr.markForCheck();\n    } else {\n      this.buildImageAvatar(source);\n    }\n  }\n\n  private findNextSource(): Source | null {\n    while (++this.currentIndex < this.sources.length) {\n      const source = this.sources[this.currentIndex];\n      if (source && !this.avatarService.sourceHasFailedBefore(source)) {\n        return source;\n      }\n    }\n\n    return null;\n  }\n\n  public ngOnDestroy(): void {\n    this.isAlive = false;\n  }\n\n  /**\n   * Initialize the avatar component and its fallback system\n   */\n  private initializeAvatar(): void {\n    this.currentIndex = -1;\n    if (this.sources.length > 0) {\n      this.sortAvatarSources();\n      this.fetchAvatarSource();\n      this.hostStyle = {\n        width: this.size + 'px',\n        height: this.size + 'px'\n      };\n    }\n  }\n\n  private sortAvatarSources(): void {\n    this.sources.sort((source1, source2) =>\n      this.avatarService.compareSources(source1.sourceType, source2.sourceType)\n    );\n  }\n\n  private buildTextAvatar(avatarSource: Source): void {\n    this.avatarText = avatarSource.getAvatar(+this.initialsSize);\n    this.avatarStyle = this.getInitialsStyle(avatarSource.sourceId);\n  }\n\n  private buildImageAvatar(avatarSource: Source): void {\n    this.avatarStyle = this.getImageStyle();\n    if (avatarSource instanceof AsyncSource) {\n      this.fetchAndProcessAsyncAvatar(avatarSource);\n    } else {\n      this.avatarSrc = avatarSource.getAvatar(+this.size);\n      this.cdr.markForCheck();\n    }\n  }\n\n  /**\n   *\n   * returns initials style\n   *\n   * memberOf AvatarComponent\n   */\n  private getInitialsStyle(avatarValue: string): Style {\n    return {\n      textAlign: 'center',\n      borderRadius: this.round ? '100%' : this.cornerRadius + 'px',\n      border: this.borderColor ? '1px solid ' + this.borderColor : '',\n      textTransform: 'uppercase',\n      color: this.fgColor,\n      backgroundColor: this.bgColor\n        ? this.bgColor\n        : this.avatarService.getRandomColor(avatarValue),\n      font:\n        Math.floor(+this.size / this.textSizeRatio) +\n        'px Helvetica, Arial, sans-serif',\n      lineHeight: this.size + 'px',\n      ...this.style\n    };\n  }\n\n  /**\n   *\n   * returns image style\n   *\n   * memberOf AvatarComponent\n   */\n  private getImageStyle(): Style {\n    return {\n      maxWidth: '100%',\n      borderRadius: this.round ? '50%' : this.cornerRadius + 'px',\n      border: this.borderColor ? '1px solid ' + this.borderColor : '',\n      width: this.size + 'px',\n      height: this.size + 'px',\n      ...this.style,\n    };\n  }\n  /**\n   * Fetch avatar image asynchronously.\n   *\n   * param {Source} source represents avatar source\n   * memberof AvatarComponent\n   */\n  private fetchAndProcessAsyncAvatar(source: AsyncSource): void {\n    if (this.avatarService.sourceHasFailedBefore(source)) {\n      return;\n    }\n\n    this.avatarService\n        .fetchAvatar(source.getAvatar(+this.size))\n        .pipe(\n            takeWhile(() => this.isAlive),\n            map(response => source.processResponse(response, +this.size)),\n        )\n        .subscribe({\n            next: avatarSrc => {\n              this.avatarSrc = avatarSrc;\n              this.cdr.markForCheck();\n            },\n            error: _err => {\n              this.fetchAvatarSource();\n            },\n          }\n        );\n  }\n\n  /**\n   * Add avatar source\n   *\n   * param sourceType avatar source type e.g facebook,twitter, etc.\n   * param sourceValue  source value e.g facebookId value, etc.\n   */\n  private addSource(sourceType: AvatarSource, sourceValue: string): void {\n    const source = this.sources.find(s => s.sourceType === sourceType);\n    if (source) {\n      source.sourceId = sourceValue;\n    } else {\n      this.sources.push(\n          this.sourceFactory.newInstance(sourceType, sourceValue),\n      );\n    }\n  }\n\n  /**\n   * Remove avatar source\n   *\n   * param sourceType avatar source type e.g facebook,twitter, etc.\n   */\n  private removeSource(sourceType: AvatarSource): void {\n    this.sources = this.sources.filter(source => source.sourceType !== sourceType);\n  }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AvatarComponent } from './avatar.component';\nimport { SourceFactory } from './sources/source.factory';\nimport { AvatarService } from './avatar.service';\nimport { AvatarConfig } from './avatar-config';\nimport { AVATAR_CONFIG } from './avatar-config.token';\nimport { AvatarConfigService } from './avatar-config.service';\n\n@NgModule({\n  imports: [CommonModule, AvatarComponent],\n  providers: [SourceFactory, AvatarService, AvatarConfigService],\n  exports: [AvatarComponent]\n})\nexport class AvatarModule {\n  static forRoot(avatarConfig?: AvatarConfig): ModuleWithProviders<AvatarModule> {\n    return {\n      ngModule: AvatarModule,\n      providers: [\n        { provide: AVATAR_CONFIG, useValue: avatarConfig ? avatarConfig : {} }\n      ]\n    };\n  }\n}\n","/*\n * Public API Surface of ngx-avatar\n */\nexport * from './lib/avatar.module';\nexport * from './lib/avatar.component';\nexport * from './lib/avatar-config';\nexport * from './lib/avatar.service';\nexport * from './lib/sources/avatar-source.enum';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.AvatarConfigService"],"mappings":"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"}