{"version":3,"file":"acorex-components-image.mjs","sources":["../../../../packages/components/image/src/lib/image.component.ts","../../../../packages/components/image/src/lib/image.component.html","../../../../packages/components/image/src/lib/image.module.ts","../../../../packages/components/image/src/acorex-components-image.ts"],"sourcesContent":["import { AXComponent, AXHtmlEvent, MXBaseComponent } from '@acorex/cdk/common';\n\nimport { Component, EventEmitter, HostBinding, input, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\n\n/**\n * Displays an image with customizable settings.\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-image',\n  templateUrl: './image.component.html',\n  styleUrls: ['./image.component.css'],\n  encapsulation: ViewEncapsulation.None,\n\n  providers: [\n    { provide: 'ax-image', useValue: AXImageComponent },\n    { provide: AXComponent, useExisting: AXImageComponent },\n  ],\n  imports: [],\n})\nexport class AXImageComponent extends MXBaseComponent implements OnInit {\n  readonly width = input<number>(null);\n  readonly height = input<number>(null);\n\n  /**\n   * Specifies when the image overlay should be shown.\n   *\n   * @defaultValue 'hover'\n   */\n  @Input()\n  overlayMode: 'always' | 'hover' = 'hover';\n\n  /**\n   * The URL of the image to be displayed.\n   *\n   * @defaultValue null\n   */\n  @Input()\n  src?: string | null;\n\n  /**\n   * The alternative text for the image, for accessibility purposes.\n   *\n   * @defaultValue null\n   */\n  @Input()\n  alt?: string | null;\n\n  /**\n   * Priority for image loading.\n   *\n   * @defaultValue 'auto'\n   */\n  @Input()\n  priority: 'low' | 'auto' | 'high' = 'auto';\n\n  /**\n   * Indicates if the image should be loaded lazily.\n   *\n   * @defaultValue false\n   */\n  @Input()\n  lazy: boolean;\n\n  /**\n   * Emits an event when the image has successfully loaded.\n   *\n   * @event\n   */\n  @Output()\n  onLoad: EventEmitter<AXHtmlEvent> = new EventEmitter<AXHtmlEvent>();\n\n  /**\n   * Emits an event when there is an error loading the image.\n   *\n   * @event\n   */\n  @Output()\n  onError: EventEmitter<AXHtmlEvent<ErrorEvent>> = new EventEmitter<AXHtmlEvent<ErrorEvent>>();\n\n  /**\n   *  @ignore\n   */\n  protected _hasError = false;\n\n  /**\n   *  @ignore\n   */\n  protected _isLoaded = false;\n\n  /**\n   *  @ignore\n   */\n  protected _isLoading = false;\n\n  /**\n   *  @ignore\n   */\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this._isLoading = this.src != null;\n  }\n\n  /**\n   *  @ignore\n   */\n  protected _handleLoadImage(e: Event) {\n    this._isLoaded = true;\n    this._hasError = false;\n    this._isLoading = false;\n    this.onLoad.emit({\n      component: this,\n      htmlElement: this.getHostElement(),\n      isUserInteraction: false,\n      nativeEvent: e,\n    });\n  }\n\n  /**\n   *  @ignore\n   */\n  protected _handleErrorImage(e: ErrorEvent) {\n    this._hasError = true;\n    this._isLoaded = false;\n    this._isLoading = false;\n    this.onError.emit({\n      component: this,\n      htmlElement: this.getHostElement(),\n      isUserInteraction: false,\n      nativeEvent: e,\n    });\n  }\n\n  /**\n   *  @ignore\n   */\n  @HostBinding('class')\n  get __hostClass(): string[] {\n    return [\n      `ax-overlay-${this.overlayMode}`,\n      `${this._hasError || !this.src ? 'ax-state-empty' : ''}`,\n      `${this._isLoading ? 'ax-state-loading' : ''}`,\n    ];\n  }\n\n  @HostBinding('style')\n  private get __hostStyle(): string {\n    return `width: ${this.width()}px; height: ${this.height()}px`;\n  }\n}\n","@if (src) {\n  <img\n    class=\"ax-state-hidden\"\n    [class.ax-state-loaded]=\"_isLoaded\"\n    [src]=\"src\"\n    [alt]=\"alt\"\n    [attr.fetchpriority]=\"priority\"\n    [attr.loading]=\"lazy ? 'lazy' : 'eager'\"\n    (load)=\"_handleLoadImage($event)\"\n    (error)=\"_handleErrorImage($event)\"\n  />\n}\n<ng-content select=\"ax-overlay\"></ng-content>\n@if (!src || _hasError) {\n  <ng-content select=\"ax-placeholder, ng-content\"></ng-content>\n}\n@if (_isLoading) {\n  <ng-content select=\"ax-loading, ax-loading-spinner\"></ng-content>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXImageComponent } from './image.component';\n\n@NgModule({\n  imports: [CommonModule, AXImageComponent],\n  exports: [AXImageComponent],\n  providers: [],\n})\nexport class AXImageModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}