{"version":3,"file":"skyux-avatar.mjs","sources":["../../../../../libs/components/avatar/src/lib/modules/shared/sky-avatar-resources.module.ts","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar-adapter.service.ts","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.inner.component.ts","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.inner.component.html","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.component.ts","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.component.html","../../../../../libs/components/avatar/src/lib/modules/avatar/avatar.module.ts","../../../../../libs/components/avatar/src/skyux-avatar.ts"],"sourcesContent":["/* istanbul ignore file */\n\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-avatar' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n  SkyI18nModule,\n  SkyLibResources,\n  SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n  'EN-US': {\n    skyux_avatar_error_not_image_description: {\n      message: 'Please choose a file that is a valid image.',\n    },\n    skyux_avatar_error_not_image_title: { message: 'File is not an image.' },\n    skyux_avatar_error_too_large_description: {\n      message: 'Please choose an image that is less than {0}.',\n    },\n    skyux_avatar_error_too_large_title: { message: 'File is too large.' },\n    skyux_avatar_errormodal_ok: { message: 'OK' },\n    skyux_avatar_inner_description: { message: 'Profile picture of {0}' },\n    skyux_avatar_upload_change_aria_label: {\n      message:\n        'Change profile photo of {0}. Drag a file here or click to browse.',\n    },\n    skyux_avatar_upload_new_aria_label: {\n      message: 'Add profile photo of {0}. Drag a file here or click to browse.',\n    },\n  },\n  'FR-CA': {\n    skyux_avatar_error_not_image_description: {\n      message: 'Veuillez choisir un fichier qui soit une image valide.',\n    },\n    skyux_avatar_error_not_image_title: {\n      message: 'Le fichier n’est pas une image.',\n    },\n    skyux_avatar_error_too_large_description: {\n      message: 'Veuillez choisir une image de moins de {0}.',\n    },\n    skyux_avatar_error_too_large_title: {\n      message: 'Le fichier est trop gros.',\n    },\n    skyux_avatar_errormodal_ok: { message: 'OK' },\n    skyux_avatar_inner_description: { message: 'Photo de profil de {0}' },\n    skyux_avatar_upload_change_aria_label: {\n      message:\n        'Modifier la photo de profil de {0}. Faites glisser un fichier ici ou cliquez pour naviguer.',\n    },\n    skyux_avatar_upload_new_aria_label: {\n      message:\n        'Ajoutez une photo de profil pour {0}. Faites glisser un fichier ici ou cliquez pour naviguer.',\n    },\n  },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n  exports: [SkyI18nModule],\n})\nexport class SkyAvatarResourcesModule {}\n","import { ElementRef, Injectable } from '@angular/core';\n\nimport { SkyAvatarSrc } from './avatar-src';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyAvatarAdapterService {\n  #blobUrl: string | undefined;\n\n  public updateImage(elementRef: ElementRef, src: SkyAvatarSrc): void {\n    this.#revokeBlobUrl();\n\n    const el = elementRef.nativeElement;\n\n    /*istanbul ignore else */\n    if (el) {\n      const imageEl = el.querySelector('.sky-avatar-image');\n\n      /*istanbul ignore else */\n      if (imageEl) {\n        let url = src;\n\n        if (src instanceof File || src instanceof Blob) {\n          url = this.#createBlobUrl(src);\n        }\n\n        // Notice the quotes inside the `url` function. This ensures proper url escaping.\n        imageEl.style.backgroundImage = 'url(\"' + url + '\")';\n      }\n    }\n  }\n\n  public destroy(): void {\n    this.#revokeBlobUrl();\n  }\n\n  #createBlobUrl(src: Blob | File): string {\n    const url = URL.createObjectURL(src);\n\n    // Keep the last blob URL around so we can revoke it later.\n    // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n    this.#blobUrl = url;\n    return url;\n  }\n\n  #revokeBlobUrl(): void {\n    if (this.#blobUrl) {\n      URL.revokeObjectURL(this.#blobUrl);\n      this.#blobUrl = undefined;\n    }\n  }\n}\n","import { NgClass } from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  Input,\n  OnDestroy,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAvatarAdapterService } from './avatar-adapter.service';\nimport { SkyAvatarSize } from './avatar-size';\nimport { SkyAvatarSrc } from './avatar-src';\n\n/**\n * @internal\n */\n@Component({\n  selector: 'sky-avatar-inner',\n  templateUrl: './avatar.inner.component.html',\n  styleUrls: ['./avatar.inner.component.scss'],\n  providers: [SkyAvatarAdapterService],\n  encapsulation: ViewEncapsulation.None,\n  imports: [NgClass, SkyI18nModule, SkyThemeModule],\n})\nexport class SkyAvatarInnerComponent implements AfterViewInit, OnDestroy {\n  public get src(): SkyAvatarSrc | undefined {\n    return this.#_src;\n  }\n\n  @Input()\n  public set src(value: SkyAvatarSrc | undefined) {\n    this.#_src = value;\n    this.#updateImage();\n  }\n\n  public get name(): string | undefined {\n    return this.#_name;\n  }\n\n  @Input()\n  public set name(value: string | undefined) {\n    this.#_name = value;\n\n    if (value) {\n      // Generate a unique-ish color based on the record name.  This is deterministic\n      // so that a given name will always generate the same color.\n      const seed =\n        value.charCodeAt(0) + value.charCodeAt(value.length - 1) + value.length;\n      this.#colorIndex = Math.abs(seed % 7);\n    } else {\n      this.#colorIndex = 0;\n    }\n  }\n\n  @Input()\n  public size: SkyAvatarSize | undefined = 'large';\n\n  #viewInitialized = false;\n\n  #_src: SkyAvatarSrc | undefined;\n\n  #_name: string | undefined;\n\n  readonly #elementRef = inject(ElementRef);\n  readonly #adapter = inject(SkyAvatarAdapterService);\n\n  public get initials(): string | undefined {\n    let initials: string | undefined;\n\n    if (this.name) {\n      const nameSplit = this.name.split(' ');\n      initials = getInitial(nameSplit[0]);\n\n      if (nameSplit.length > 1) {\n        initials += getInitial(nameSplit[nameSplit.length - 1]);\n      }\n    }\n\n    return initials;\n  }\n\n  public get colorIndex(): number {\n    return this.#colorIndex;\n  }\n\n  #colorIndex = 0;\n\n  public ngAfterViewInit(): void {\n    this.#viewInitialized = true;\n    this.#updateImage();\n  }\n\n  public ngOnDestroy(): void {\n    this.#adapter.destroy();\n  }\n\n  #updateImage(): void {\n    if (this.#viewInitialized && this.src) {\n      this.#adapter.updateImage(this.#elementRef, this.src);\n    }\n  }\n}\n\nfunction getInitial(name: string): string {\n  return name.charAt(0).toUpperCase();\n}\n","<div\n  class=\"sky-elevation-1 sky-avatar-wrapper\"\n  [ngClass]=\"'sky-avatar-wrapper-size-' + size\"\n>\n  <div class=\"sky-avatar-image\" [hidden]=\"!src\"></div>\n  @if (src) {\n    <div class=\"sky-screen-reader-only\">\n      {{ 'skyux_avatar_inner_description' | skyLibResources: name }}\n    </div>\n  }\n  <div\n    class=\"sky-avatar-initials\"\n    [hidden]=\"src || !name\"\n    [ngClass]=\"'sky-avatar-colors-' + (colorIndex + 1)\"\n  >\n    @if (size === 'small') {\n      <div\n        class=\"sky-avatar-initials-inner\"\n        [skyThemeClass]=\"{\n          'sky-font-body-sm': 'modern'\n        }\"\n      >\n        {{ initials }}\n      </div>\n    } @else if (size === 'medium') {\n      <div\n        class=\"sky-avatar-initials-inner\"\n        [skyThemeClass]=\"{\n          'sky-font-display-3': 'modern'\n        }\"\n      >\n        {{ initials }}\n      </div>\n    } @else if (size === 'large') {\n      <div\n        class=\"sky-avatar-initials-inner\"\n        [skyThemeClass]=\"{\n          'sky-font-display-2': 'modern'\n        }\"\n      >\n        {{ initials }}\n      </div>\n    }\n  </div>\n</div>\n","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { SkyDefaultInputProvider } from '@skyux/core';\nimport { ErrorModalConfig, SkyErrorModalService } from '@skyux/errors';\nimport {\n  SkyFileDropChange,\n  SkyFileDropModule,\n  SkyFileItem,\n  SkyFileSizePipe,\n} from '@skyux/forms';\nimport { SkyI18nModule, SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Observable } from 'rxjs';\n\nimport { SkyAvatarResourcesModule } from '../shared/sky-avatar-resources.module';\n\nimport { SkyAvatarSize } from './avatar-size';\nimport { SkyAvatarSrc } from './avatar-src';\nimport { SkyAvatarInnerComponent } from './avatar.inner.component';\n\nconst MAX_FILE_SIZE_DEFAULT = 512000;\n\n@Component({\n  selector: 'sky-avatar',\n  templateUrl: './avatar.component.html',\n  styleUrls: ['./avatar.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  providers: [SkyFileSizePipe],\n  imports: [\n    AsyncPipe,\n    NgTemplateOutlet,\n    SkyI18nModule,\n    SkyFileDropModule,\n    SkyAvatarResourcesModule,\n    SkyAvatarInnerComponent,\n  ],\n})\nexport class SkyAvatarComponent {\n  /**\n   * Whether users can change the image. To select a different image,\n   * users click the image or drag another image on top of it,\n   * much like the `sky-file-drop` component in the\n   * [file attachment module](https://developer.blackbaud.com/skyux/components/file-attachments/file-attachment).\n   * @default false\n   */\n  @Input()\n  public set canChange(value: boolean | undefined) {\n    this.#_canChange = !!value;\n  }\n\n  public get canChange(): boolean {\n    return this.#_canChange;\n  }\n\n  /**\n   * The name of the record that the avatar represents.\n   * If the `src` property does not specify an image, the component displays\n   * initials from the first and last words in the name. To ensure\n   * that the component extracts the correct initials, specify a name with no prefix\n   * or suffix, or just specify initials with a space between them. This property is\n   * not required, but the component requires either the `name` or `src` property.\n   */\n  @Input()\n  public set name(value: string | undefined) {\n    this.#_name = value;\n  }\n\n  public get name(): string | undefined {\n    return this.#_name;\n  }\n\n  /**\n   * The image to identify a record. This property is\n   * not required, but the component requires either the `name` or `src` property.\n   */\n  @Input()\n  public set src(value: SkyAvatarSrc | undefined) {\n    this.#_src = value;\n  }\n\n  public get src(): SkyAvatarSrc | undefined {\n    return this.#_src;\n  }\n\n  /**\n   * The maximum file size for the image in bytes.\n   * @default 512000 bytes\n   */\n  @Input()\n  public maxFileSize: number | undefined = MAX_FILE_SIZE_DEFAULT;\n\n  /**\n   * The size of the avatar.\n   * Acceptable values are: `\"small\"`, `\"medium\"`, and `\"large\"`.\n   * @default \"large\"\n   */\n  @Input()\n  public size: SkyAvatarSize | undefined;\n\n  /**\n   * Emits a `SkyFileItem` object when the image is updated.\n   */\n  @Output()\n  public avatarChanged = new EventEmitter<SkyFileItem>();\n\n  protected sizeDefault: Observable<SkyAvatarSize> | undefined;\n\n  #_canChange = false;\n\n  #_name: string | undefined;\n\n  #_src: SkyAvatarSrc | undefined;\n\n  readonly #errorService = inject(SkyErrorModalService);\n  readonly #fileSizePipe = inject(SkyFileSizePipe);\n  readonly #resourcesService = inject(SkyLibResourcesService);\n  readonly #defaultInputProvider = inject(SkyDefaultInputProvider, {\n    optional: true,\n  });\n\n  constructor() {\n    this.sizeDefault = this.#defaultInputProvider?.getValue<SkyAvatarSize>(\n      'avatar',\n      'size',\n    );\n  }\n\n  public photoDrop(result: SkyFileDropChange): void {\n    /* sanity check */\n    /* istanbul ignore else */\n    if (result.files && result.files.length > 0) {\n      this.avatarChanged.emit(result.files[0]);\n    } else if (result.rejectedFiles && result.rejectedFiles.length > 0) {\n      this.#handleError(result.rejectedFiles);\n    }\n  }\n\n  #handleError(rejectedFiles: SkyFileItem[]): void {\n    const rejectedFile = rejectedFiles[0];\n\n    if (rejectedFile.errorType === 'maxFileSize') {\n      const title = this.#getString('skyux_avatar_error_too_large_title');\n      const description = this.#getString(\n        'skyux_avatar_error_too_large_description',\n        this.#maxFileSizeText(),\n      );\n\n      this.#openErrorModal(title, description);\n    } else if (rejectedFile.errorType === 'fileType') {\n      const title = this.#getString('skyux_avatar_error_not_image_title');\n      const description = this.#getString(\n        'skyux_avatar_error_not_image_description',\n      );\n\n      this.#openErrorModal(title, description);\n    }\n  }\n\n  #maxFileSizeText(): string {\n    return this.#fileSizePipe.transform(this.maxFileSize);\n  }\n\n  #openErrorModal(title: string, description: string): void {\n    const config: ErrorModalConfig = {\n      errorTitle: title,\n      errorDescription: description,\n      errorCloseText: this.#getString('skyux_avatar_errormodal_ok'),\n    };\n\n    this.#errorService.open(config);\n  }\n\n  #getString(key: string, ...args: any[]): string {\n    // TODO: Need to implement the async `getString` method in a breaking change.\n    return this.#resourcesService.getStringForLocale(\n      { locale: 'en-US' },\n      key,\n      ...args,\n    );\n  }\n}\n","<div class=\"sky-avatar\">\n  @if (canChange) {\n    <div class=\"sky-avatar-file-drop\">\n      <sky-file-drop\n        [acceptedTypes]=\"'image/*'\"\n        [fileUploadAriaLabel]=\"\n          src\n            ? ('skyux_avatar_upload_change_aria_label' | skyLibResources: name)\n            : ('skyux_avatar_upload_new_aria_label' | skyLibResources: name)\n        \"\n        [multiple]=\"false\"\n        [maxFileSize]=\"maxFileSize\"\n        [multiple]=\"false\"\n        (filesChanged)=\"photoDrop($event)\"\n      >\n        <ng-container *ngTemplateOutlet=\"innerTemplate\" />\n      </sky-file-drop>\n    </div>\n  } @else {\n    <div>\n      <ng-container *ngTemplateOutlet=\"innerTemplate\" />\n    </div>\n  }\n</div>\n\n<ng-template #innerTemplate>\n  <sky-avatar-inner\n    [name]=\"name\"\n    [size]=\"size ?? (sizeDefault | async) ?? 'large'\"\n    [src]=\"src\"\n  />\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { SkyFileSizePipe } from '@skyux/forms';\n\nimport { SkyAvatarComponent } from './avatar.component';\nimport { SkyAvatarInnerComponent } from './avatar.inner.component';\n\n@NgModule({\n  imports: [SkyAvatarInnerComponent, SkyAvatarComponent],\n  providers: [SkyFileSizePipe],\n  exports: [SkyAvatarComponent],\n})\nexport class SkyAvatarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}