{"version":3,"file":"pv-frontend-pv-shared-components-avatar.mjs","sources":["../../../projects/pv-shared-components/avatar/avatar.component.ts","../../../projects/pv-shared-components/avatar/avatar.component.html","../../../projects/pv-shared-components/avatar/avatar.module.ts","../../../projects/pv-shared-components/avatar/pv-frontend-pv-shared-components-avatar.ts"],"sourcesContent":["import {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport {\n  OverrideStyleConfig,\n  ToolTipPosition,\n} from '@pv-frontend/pv-shared-components/common/types';\nimport { Tooltip } from 'primeng/tooltip';\n\nexport type OverlayTagPosition = ToolTipPosition;\nexport type AvatarSize = 'normal' | 'large' | 'xlarge';\n\nexport type AvatarShape = 'circle' | 'square';\n\nexport interface AvatarStyleOverride {\n  container?: OverrideStyleConfig;\n  label?: OverrideStyleConfig;\n  imageOrInitialsContainer?: {\n    container?: OverrideStyleConfig;\n    image?: OverrideStyleConfig;\n    initials?: OverrideStyleConfig;\n  };\n}\n\n@Component({\n  selector: 'pv-avatar',\n  styleUrls: ['./avatar.component.scss'],\n  templateUrl: './avatar.component.html',\n})\nexport class Avatar implements AfterViewInit {\n  public _initials: string = '';\n  public _label: string = '';\n\n  public avatarSizeToClassMappings: Record<\n    AvatarSize,\n    Record<'label' | 'container' | 'initials', string>\n  > = {\n    normal: {\n      label: 'mt-1 text-xs',\n      container: 'w-3rem h-3rem',\n      initials: 'text-base',\n    },\n    large: {\n      label: 'mt-2 text-sm',\n      container: 'w-4rem h-4rem',\n      initials: 'text-xl',\n    },\n    xlarge: {\n      label: 'sm:text-base md:text-lg mt-3',\n      container: 'w-5rem h-5rem',\n      initials: 'text-2xl',\n    },\n  };\n\n  @ViewChild(Tooltip) public tooltip!: Tooltip;\n\n  @Input()\n  public set label(value: string) {\n    this._label = value ?? '';\n    if (typeof value === 'string' && !this._initials && value) {\n      this._initials = value\n        .split(' ')\n        .slice(0, this.initialSize)\n        .map((word) => word?.charAt(0) ?? '')\n        .join('');\n    }\n  }\n\n  @Input()\n  public set initials(val: string) {\n    this._initials = val;\n  }\n\n  @Input()\n  public style?: AvatarStyleOverride;\n\n  @Input()\n  public imageSrc?: string;\n\n  @Input()\n  public defaultImage: string =\n    'https://images.poshvine.com/icon/gv/imagePlaceholder.webp';\n\n  @Input()\n  public size: AvatarSize = 'normal';\n\n  @Input()\n  public shape: AvatarShape = 'circle';\n\n  @Input()\n  public tagLabel: string = '';\n\n  @Input()\n  public showOverlayTag?: boolean = false;\n\n  @Input() public overlayTagPosition: OverlayTagPosition = 'top';\n\n  @Input() public overlayTagStyleClass: string = '';\n\n  @Input()\n  public isClickable: boolean = false;\n\n  @Input()\n  public analyticsEnabled: boolean = false;\n\n  @Input()\n  public labelForAnalytics: string = '';\n\n  @Input()\n  public initialSize: number = 2;\n\n  @Input()\n  public eagerLoad: boolean = false;\n\n  @Output()\n  public clickHandler: EventEmitter<MouseEvent | TouchEvent> =\n    new EventEmitter();\n\n  public ngAfterViewInit(): void {\n    if (this.showOverlayTag && this.tagLabel) this.triggerTooltip();\n  }\n\n  public triggerTooltip(): void {\n    this.tooltip.show();\n  }\n}\n","<div\n  class=\"pv-avatar flex flex-column align-items-center\"\n  [style]=\"this.style?.container\"\n  (click)=\"this.clickHandler.emit($event)\"\n  [pvClickTrack]=\"analyticsEnabled\"\n  [pvTrackLabel]=\"labelForAnalytics\">\n  <div\n    class=\"pv-avatar-image-container\"\n    [ngClass]=\"this.avatarSizeToClassMappings[this.size].container\"\n    [class.cursor-pointer]=\"this.isClickable\"\n    [style]=\"this.style?.imageOrInitialsContainer?.container\">\n    <img\n      *ngIf=\"this.imageSrc\"\n      Tooltip\n      [pTooltip]=\"tagLabel\"\n      [hideOnEscape]=\"false\"\n      tooltipEvent=\"focusout\"\n      [tooltipDisabled]=\"!showOverlayTag\"\n      [tooltipPosition]=\"overlayTagPosition\"\n      [tooltipStyleClass]=\"overlayTagStyleClass\"\n      class=\"pv-avatar-image w-full h-full overflow-hidden\"\n      [src]=\"this.imageSrc\"\n      [alt]=\"this._label\"\n      [class.border-circle]=\"this.shape === 'circle'\"\n      [style]=\"this.style?.imageOrInitialsContainer?.image\"\n      [loading]=\"eagerLoad ? 'eager' : 'lazy'\"\n      [pvFallbackImage]=\"defaultImage\" />\n    <span\n      *ngIf=\"this._initials && !this.imageSrc\"\n      Tooltip\n      [pTooltip]=\"tagLabel\"\n      [hideOnEscape]=\"false\"\n      tooltipEvent=\"focusout\"\n      [tooltipDisabled]=\"!showOverlayTag\"\n      [tooltipPosition]=\"overlayTagPosition\"\n      [tooltipStyleClass]=\"overlayTagStyleClass\"\n      [class.border-circle]=\"this.shape === 'circle'\"\n      [class.text-2xl]=\"this.size === 'xlarge'\"\n      [ngClass]=\"this.avatarSizeToClassMappings[this.size].initials\"\n      class=\"pv-avatar-initials bg-primary flex align-items-center justify-content-center relative uppercase w-full h-full\"\n      [style]=\"this.style?.imageOrInitialsContainer?.initials\">\n      {{ this._initials }}\n    </span>\n  </div>\n  <span\n    *ngIf=\"this._label\"\n    [ngClass]=\"this.avatarSizeToClassMappings[this.size].label\"\n    class=\"pv-avatar-label surface-text-subdued-low-contrast text-center pv-line-clamp-1\"\n    [ngStyle]=\"this.style?.label\">\n    {{ this._label }}\n  </span>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FallbackImageModule } from '@pv-frontend/pv-shared-directives/image-fallback';\nimport { ClickTrackingModule } from '@pv-frontend/pv-shared-directives/tracking';\nimport { TooltipModule } from 'primeng/tooltip';\n\nimport { Avatar } from './avatar.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    TooltipModule,\n    ClickTrackingModule,\n    FallbackImageModule,\n  ],\n  exports: [Avatar],\n  declarations: [Avatar],\n})\nexport class PvAvatarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}