{"version":3,"file":"acorex-components-file-viewer.mjs","sources":["../../../../packages/components/file-viewer/src/lib/file-viewer.service.ts","../../../../packages/components/file-viewer/src/lib/resolve-file-viewer-file-type.ts","../../../../packages/components/file-viewer/src/lib/file-viewer-slide/file-viewer-slide.component.ts","../../../../packages/components/file-viewer/src/lib/file-viewer-thumb-preview/file-viewer-thumb-preview.component.ts","../../../../packages/components/file-viewer/src/lib/file-viewer-container/file-viewer-container.component.ts","../../../../packages/components/file-viewer/src/lib/file-viewer-container/file-viewer-container.component.html","../../../../packages/components/file-viewer/src/lib/file-viewer-gallery.service.ts","../../../../packages/components/file-viewer/src/lib/file-types/file-viewer-file-types.ts","../../../../packages/components/file-viewer/src/lib/provide-file-viewer.ts","../../../../packages/components/file-viewer/src/lib/file-viewer-header-placeholder/file-viewer-header-placeholder.component.ts","../../../../packages/components/file-viewer/src/lib/file-viewer-thumbnails/file-viewer-thumbnails.component.ts","../../../../packages/components/file-viewer/src/lib/viewers/image-viewer.component.ts","../../../../packages/components/file-viewer/src/lib/viewers/video-viewer.component.ts","../../../../packages/components/file-viewer/src/lib/viewers/audio-viewer.component.ts","../../../../packages/components/file-viewer/src/lib/viewers/pdf-viewer.component.ts","../../../../packages/components/file-viewer/src/lib/viewers/file-fallback-viewer.component.ts","../../../../packages/components/file-viewer/src/acorex-components-file-viewer.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport type { AXFileViewerItem } from './file-viewer.types';\n\n/** Carousel state shared between container, slides and thumbnails. Provided per-container. */\n@Injectable()\nexport class AXFileViewerService {\n  readonly items = signal<AXFileViewerItem[]>([]);\n  readonly selectedIndex = signal(0);\n\n  private readonly urlCache = new Map<string, string>();\n\n  /** Resolve a potentially lazy URL — caches the result. */\n  async resolveUrl(item: AXFileViewerItem, key: 'url' | 'thumbnailUrl'): Promise<string | undefined> {\n    const raw = item[key];\n    if (!raw) {\n      return undefined;\n    }\n    const cacheKey = `${item.id}:${key}`;\n    const cached = this.urlCache.get(cacheKey);\n    if (cached) {\n      return cached;\n    }\n    const resolved = typeof raw === 'function' ? await raw() : raw;\n    this.urlCache.set(cacheKey, resolved);\n    return resolved;\n  }\n}\n","import type { AXFileTypeExtensionHint } from '@acorex/core/file';\nimport type { AXFileViewerItem } from './file-viewer.types';\n\nconst MIME_PREFIX_MAP: Record<string, string> = {\n  'image/': 'image',\n  'video/': 'video',\n  'audio/': 'audio',\n  'application/pdf': 'document',\n};\n\n/** Infers a file-type catalog name from the item. */\nexport function resolveFileViewerFileType(item: AXFileViewerItem): string {\n  if (item.fileType) {\n    return item.fileType;\n  }\n  if (item.mimeType) {\n    const mime = item.mimeType.toLowerCase();\n    for (const [prefix, name] of Object.entries(MIME_PREFIX_MAP)) {\n      if (mime.startsWith(prefix) || mime === prefix) {\n        return name;\n      }\n    }\n  }\n  if (item.extension) {\n    const ext = item.extension.replace(/^\\./, '').toLowerCase();\n    if (['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg'].includes(ext)) return 'image';\n    if (['mp4', 'webm', 'ogg'].includes(ext)) return 'video';\n    if (['mp3', 'wav', 'm4a'].includes(ext)) return 'audio';\n    if (ext === 'pdf') return 'document';\n  }\n  return 'file';\n}\n\n/** Builds an extension hint from item metadata. */\nexport function buildFileViewerExtensionHint(item: AXFileViewerItem): AXFileTypeExtensionHint | undefined {\n  if (!item.mimeType && !item.extension) {\n    return undefined;\n  }\n  return {\n    mimeType: item.mimeType,\n    extensionName: item.extension,\n  };\n}\n","import type { AXComponentContent, AXComponentInputs } from '@acorex/core/components';\nimport { AXFileTypeRendererOutletComponent } from '@acorex/core/file';\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, TemplateRef, Type, ViewEncapsulation } from '@angular/core';\nimport { AXFileViewerService } from '../file-viewer.service';\nimport type { AXFileViewerItem, AXFileViewerViewPayload } from '../file-viewer.types';\nimport { buildFileViewerExtensionHint, resolveFileViewerFileType } from '../resolve-file-viewer-file-type';\n\n@Component({\n  selector: 'ax-file-viewer-slide',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  styleUrl: './file-viewer-slide.component.css',\n  imports: [NgComponentOutlet, NgTemplateOutlet, AXFileTypeRendererOutletComponent],\n  template: `\n    @if (useCustomFallback()) {\n      <div class=\"ax-file-viewer-slide__custom\">\n        @if (fallbackTemplateContent(); as template) {\n          <ng-container *ngTemplateOutlet=\"template; context: fallbackContentContext()\" />\n        } @else if (fallbackComponentContent(); as component) {\n          <ng-container *ngComponentOutlet=\"component; inputs: fallbackComponentInputs()\" />\n        }\n      </div>\n    } @else {\n      <ax-file-type-renderer [fileType]=\"fileTypeName()\" [payload]=\"viewPayload()\" [extensionHint]=\"extensionHint()\" />\n    }\n  `,\n})\nexport class AXFileViewerSlideComponent {\n  readonly item = input.required<AXFileViewerItem>();\n  readonly index = input.required<number>();\n  readonly fallbackContent = input<AXComponentContent | null>(null);\n  readonly fallbackContentInputs = input<AXComponentInputs | null>(null);\n\n  private readonly service = inject(AXFileViewerService);\n\n  readonly fileTypeName = computed(() => resolveFileViewerFileType(this.item()));\n\n  readonly extensionHint = computed(() => buildFileViewerExtensionHint(this.item()));\n\n  readonly viewPayload = computed<AXFileViewerViewPayload>(() => ({\n    item: this.item(),\n    index: this.index(),\n    active: this.service.selectedIndex() === this.index(),\n  }));\n\n  readonly fallbackTemplateContent = computed(() => {\n    const content = this.fallbackContent();\n    return content instanceof TemplateRef ? content : null;\n  });\n\n  readonly fallbackComponentContent = computed(() => {\n    const content = this.fallbackContent();\n    return content && typeof content === 'function' ? (content as Type<unknown>) : null;\n  });\n\n  readonly useCustomFallback = computed(\n    () => this.fileTypeName() === 'file' && !!(this.fallbackTemplateContent() || this.fallbackComponentContent()),\n  );\n\n  readonly fallbackContentContext = computed(() => ({\n    payload: this.viewPayload(),\n    item: this.item(),\n    index: this.index(),\n    active: this.viewPayload().active,\n  }));\n\n  readonly fallbackComponentInputs = computed(() => ({\n    payload: this.viewPayload(),\n    ...(this.fallbackContentInputs() ?? {}),\n  }));\n}\n","import { Component, computed, effect, inject, input, signal } from '@angular/core';\nimport { AXFileViewerService } from '../file-viewer.service';\nimport type { AXFileViewerItem } from '../file-viewer.types';\nimport { resolveFileViewerFileType } from '../resolve-file-viewer-file-type';\n\nconst TYPE_ICON_MAP: Record<string, string> = {\n  image: 'fa-light fa-image',\n  video: 'fa-light fa-video',\n  audio: 'fa-light fa-music',\n  document: 'fa-light fa-file-pdf',\n  file: 'fa-light fa-file-zipper',\n};\n\n@Component({\n  selector: 'ax-file-viewer-thumb-preview',\n\n  host: { class: 'ax-file-viewer__thumb-preview' },\n  template: `\n    @if (src()) {\n      <img [src]=\"src()!\" [alt]=\"item().name ?? ''\" loading=\"lazy\" />\n    } @else {\n      <i [class]=\"icon()\"></i>\n    }\n  `,\n})\nexport class AXFileViewerThumbPreviewComponent {\n  readonly item = input.required<AXFileViewerItem>();\n\n  private readonly service = inject(AXFileViewerService);\n\n  readonly src = signal<string | null>(null);\n  readonly icon = computed(() => {\n    const type = resolveFileViewerFileType(this.item());\n    return TYPE_ICON_MAP[type] ?? TYPE_ICON_MAP['file'];\n  });\n\n  #resolve = effect((onCleanup) => {\n    const item = this.item();\n    this.src.set(null);\n    let cancelled = false;\n    onCleanup(() => {\n      cancelled = true;\n    });\n    void this.resolvePreview(item).then((url) => {\n      if (!cancelled) {\n        this.src.set(url ?? null);\n      }\n    });\n  });\n\n  private async resolvePreview(item: AXFileViewerItem): Promise<string | undefined> {\n    const thumbnail = await this.service.resolveUrl(item, 'thumbnailUrl');\n    if (thumbnail) {\n      return thumbnail;\n    }\n    // Images can use the main asset URL when no dedicated thumbnail is provided.\n    if (resolveFileViewerFileType(item) === 'image') {\n      return this.service.resolveUrl(item, 'url');\n    }\n    return undefined;\n  }\n}\n","import { AXCarouselDirective, type AXCarouselOptions } from '@acorex/cdk/carousel';\nimport type { AXStyleColorType } from '@acorex/cdk/common';\nimport { AXBadgeComponent } from '@acorex/components/badge';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport type { AXComponentContent, AXComponentInputs } from '@acorex/core/components';\nimport { AXFullScreenService } from '@acorex/core/full-screen';\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport {\n  afterNextRender,\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  effect,\n  ElementRef,\n  inject,\n  input,\n  OnDestroy,\n  output,\n  signal,\n  TemplateRef,\n  Type,\n  viewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport type Swiper from 'swiper';\nimport { AXFileViewerSlideComponent } from '../file-viewer-slide/file-viewer-slide.component';\nimport { AXFileViewerThumbPreviewComponent } from '../file-viewer-thumb-preview/file-viewer-thumb-preview.component';\nimport { AXFileViewerService } from '../file-viewer.service';\nimport type { AXFileViewerItem } from '../file-viewer.types';\nimport { resolveFileViewerFileType } from '../resolve-file-viewer-file-type';\n\nconst TYPE_LABEL_MAP: Record<string, string> = {\n  image: 'IMAGE',\n  video: 'VIDEO',\n  audio: 'AUDIO',\n  document: 'PDF',\n  file: 'FILE',\n};\n\nconst TYPE_COLOR_MAP: Record<string, AXStyleColorType> = {\n  image: 'success',\n  video: 'primary',\n  audio: 'danger',\n  document: 'warning',\n  file: 'secondary',\n};\n\n@Component({\n  selector: 'ax-file-viewer-container',\n  templateUrl: './file-viewer-container.component.html',\n  styleUrl: './file-viewer-container.component.css',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.ax-file-viewer--fullscreen]': 'isFullscreenActive()',\n  },\n  providers: [AXFileViewerService],\n  imports: [\n    NgComponentOutlet,\n    NgTemplateOutlet,\n    AXCarouselDirective,\n    AXFileViewerSlideComponent,\n    AXFileViewerThumbPreviewComponent,\n    AXBadgeComponent,\n    AXButtonComponent,\n    AXDecoratorIconComponent,\n    AXLoadingComponent,\n    AXTooltipDirective,\n  ],\n})\nexport class AXFileViewerContainerComponent implements OnDestroy {\n  readonly items = input<AXFileViewerItem[]>([]);\n  readonly startIndex = input(0);\n  readonly thumbnail = input(true);\n  readonly pagination = input(true);\n  readonly download = input(true);\n  readonly fullscreen = input(true);\n  /** When true, opens in a gallery overlay and closes when fullscreen exits. */\n  readonly galleryMode = input(false);\n  readonly headerContent = input<AXComponentContent | null>(null);\n  readonly headerContentInputs = input<AXComponentInputs | null>(null);\n  readonly fallbackContent = input<AXComponentContent | null>(null);\n  readonly fallbackContentInputs = input<AXComponentInputs | null>(null);\n  /** External loading flag — show overlay while parent data is being fetched. */\n  readonly loading = input(false);\n\n  readonly fullscreenClosed = output<void>();\n\n  readonly service = inject(AXFileViewerService);\n  private readonly host = inject(ElementRef<HTMLElement>);\n  private readonly fullScreenService = inject(AXFullScreenService);\n\n  private readonly mainCarouselRef = viewChild<AXCarouselDirective>('mainCarousel');\n  private readonly thumbCarouselRef = viewChild<AXCarouselDirective>('thumbCarousel');\n\n  private initToken = 0;\n\n  readonly isFullscreenActive = signal(false);\n\n  /** True while carousels are being (re)initialized. */\n  readonly initializing = signal(true);\n\n  readonly isBusy = computed(() => this.loading() || this.initializing());\n\n  readonly isFirstSlide = computed(() => this.service.selectedIndex() <= 0);\n  readonly isLastSlide = computed(() => this.service.selectedIndex() >= Math.max(this.service.items().length - 1, 0));\n\n  readonly currentItem = computed(() => this.service.items()[this.service.selectedIndex()]);\n  readonly currentFileType = computed(() => {\n    const item = this.currentItem();\n    return item ? resolveFileViewerFileType(item) : 'file';\n  });\n  readonly currentTypeLabel = computed(() => TYPE_LABEL_MAP[this.currentFileType()] ?? 'FILE');\n  readonly currentTypeColor = computed(() => TYPE_COLOR_MAP[this.currentFileType()] ?? 'secondary');\n  readonly slideCounter = computed(() => {\n    const total = this.service.items().length;\n    if (!total) return '0 / 0';\n    return `${this.service.selectedIndex() + 1} / ${total}`;\n  });\n\n  readonly headerTemplateContent = computed(() => {\n    const content = this.headerContent();\n    return content instanceof TemplateRef ? content : null;\n  });\n\n  readonly headerComponentContent = computed(() => {\n    const content = this.headerContent();\n    return content && typeof content === 'function' ? (content as Type<unknown>) : null;\n  });\n\n  readonly hasHeaderCenterContent = computed(() => !!(this.headerTemplateContent() || this.headerComponentContent()));\n\n  readonly headerContentContext = computed(() => ({\n    item: this.currentItem(),\n    items: this.service.items(),\n    selectedIndex: this.service.selectedIndex(),\n    slideCounter: this.slideCounter(),\n  }));\n\n  readonly resolveFileType = resolveFileViewerFileType;\n\n  resolveTypeLabel(item: AXFileViewerItem): string {\n    return TYPE_LABEL_MAP[resolveFileViewerFileType(item)] ?? 'FILE';\n  }\n\n  formatSize(size?: number): string {\n    if (size == null || Number.isNaN(size)) return '';\n    if (size < 1024) return `${size} B`;\n    if (size < 1024 * 1024) return `${(size / 1024).toFixed(1)} KB`;\n    return `${(size / (1024 * 1024)).toFixed(1)} MB`;\n  }\n\n  private readonly mainCarouselOptions: AXCarouselOptions = {\n    slidesPerView: 1,\n    observer: true,\n    observeParents: true,\n    updateOnWindowResize: true,\n    resizeObserver: true,\n    keyboard: true,\n    watchSlidesProgress: true,\n    speed: 300,\n  };\n\n  private readonly thumbnailCarouselOptions: AXCarouselOptions = {\n    spaceBetween: 10,\n    slidesPerView: 'auto',\n    watchSlidesProgress: true,\n    observer: true,\n    observeParents: true,\n    updateOnWindowResize: true,\n    resizeObserver: true,\n  };\n\n  #syncItems = effect(() => {\n    const items = this.items();\n    const startIndex = this.startIndex();\n    this.service.items.set(items);\n    this.service.selectedIndex.set(Math.min(Math.max(startIndex, 0), Math.max(items.length - 1, 0)));\n    if (items.length > 0) {\n      this.initializing.set(true);\n      setTimeout(() => void this.initCarousels());\n    } else if (!this.loading()) {\n      this.initializing.set(false);\n    }\n  });\n\n  #bindSlideChange = effect(() => {\n    const carousel = this.mainCarouselRef()?.carousel();\n    if (carousel) {\n      carousel.on('activeIndexChange', this.onSlideChange);\n    }\n  });\n\n  #init = afterNextRender(() => {\n    void this.initCarousels();\n    if (this.galleryMode() && this.fullscreen()) {\n      this.enterFullscreen();\n    }\n  });\n\n  toggleFullscreen(): void {\n    if (this.isFullscreenActive()) {\n      this.exitFullscreen();\n    } else {\n      this.enterFullscreen();\n    }\n  }\n\n  enterFullscreen(): void {\n    if (this.isFullscreenActive()) return;\n    const el = this.host.nativeElement;\n    this.fullScreenService.enter(el);\n    this.isFullscreenActive.set(true);\n  }\n\n  /** @param emitGalleryClose When false, skips gallery close notification (used during service teardown). */\n  exitFullscreen(emitGalleryClose = true): void {\n    if (!this.isFullscreenActive() && !this.fullScreenService.isFullscreen()) {\n      return;\n    }\n\n    const el = this.host.nativeElement;\n    this.fullScreenService.exit(el);\n    this.isFullscreenActive.set(false);\n\n    if (this.galleryMode() && emitGalleryClose) {\n      this.fullscreenClosed.emit();\n    }\n  }\n\n  closeGallery(): void {\n    this.exitFullscreen();\n  }\n\n  private async initCarousels(): Promise<void> {\n    const token = ++this.initToken;\n    const mainRef = this.mainCarouselRef();\n    if (!mainRef || !this.service.items().length) {\n      if (!this.loading()) {\n        this.initializing.set(false);\n      }\n      return;\n    }\n\n    this.initializing.set(true);\n\n    try {\n      const thumbRef = this.thumbnail() ? this.thumbCarouselRef() : undefined;\n\n      if (thumbRef?.carousel()) {\n        thumbRef.carousel().destroy(true, true);\n      }\n      if (mainRef.carousel()) {\n        mainRef.carousel().destroy(true, true);\n      }\n\n      if (thumbRef) {\n        await thumbRef.init(this.thumbnailCarouselOptions);\n        await mainRef.init({\n          ...this.mainCarouselOptions,\n          thumbs: { swiper: thumbRef.carousel() },\n        });\n      } else {\n        await mainRef.init(this.mainCarouselOptions);\n      }\n\n      if (token !== this.initToken) return;\n\n      mainRef.carousel()?.slideTo(this.service.selectedIndex(), 0);\n    } finally {\n      if (token === this.initToken) {\n        this.initializing.set(false);\n      }\n    }\n  }\n\n  private readonly onSlideChange = (swiper: Swiper) => {\n    this.service.selectedIndex.set(swiper.activeIndex);\n  };\n\n  next(): void {\n    if (this.isLastSlide()) return;\n    if (this.thumbnail()) {\n      this.thumbCarouselRef()?.carousel()?.slideNext();\n    }\n    this.mainCarouselRef()?.carousel()?.slideNext();\n  }\n\n  prev(): void {\n    if (this.isFirstSlide()) return;\n    if (this.thumbnail()) {\n      this.thumbCarouselRef()?.carousel()?.slidePrev();\n    }\n    this.mainCarouselRef()?.carousel()?.slidePrev();\n  }\n\n  goToIndex(index: number, speed = 300): void {\n    this.service.selectedIndex.set(index);\n    this.mainCarouselRef()?.carousel()?.slideTo(index, speed);\n    if (this.thumbnail()) {\n      this.thumbCarouselRef()?.carousel()?.slideTo(index, speed);\n    }\n  }\n\n  async downloadCurrent(): Promise<void> {\n    const item = this.currentItem();\n    if (!item) return;\n    const url = await this.service.resolveUrl(item, 'url');\n    if (!url) return;\n    const anchor = document.createElement('a');\n    anchor.href = url;\n    anchor.download = item.name ?? 'download';\n    anchor.target = '_blank';\n    anchor.rel = 'noopener';\n    anchor.click();\n  }\n\n  ngOnDestroy(): void {\n    this.mainCarouselRef()?.carousel()?.off('activeIndexChange', this.onSlideChange);\n    this.exitFullscreen(false);\n  }\n}\n","@if (isBusy()) {\n  <div class=\"ax-file-viewer__loading\" aria-busy=\"true\" aria-live=\"polite\">\n    <ax-loading></ax-loading>\n  </div>\n}\n\n@if (currentItem(); as item) {\n  <header\n    class=\"ax-file-viewer__header\"\n    [class.ax-file-viewer__header--no-content]=\"!hasHeaderCenterContent()\"\n  >\n    <div class=\"ax-file-viewer__meta\">\n      <div class=\"ax-file-viewer__title-row\">\n        <span class=\"ax-file-viewer__name\">{{ item.name || 'Untitled' }}</span>\n      </div>\n      <div class=\"ax-file-viewer__submeta\">\n        @if (formatSize(item.size); as sizeLabel) {\n          <span>{{ sizeLabel }}</span>\n          <span class=\"ax-file-viewer__dot\">·</span>\n        }\n        <ax-badge\n          class=\"ax-file-viewer__type-badge ax-pill ax-sm\"\n          look=\"outline\"\n          [color]=\"currentTypeColor()\"\n          [text]=\"currentTypeLabel()\"\n        />\n      </div>\n    </div>\n\n    @if (hasHeaderCenterContent()) {\n      <div class=\"ax-file-viewer__header-content\">\n        @if (headerTemplateContent(); as template) {\n          <ng-container *ngTemplateOutlet=\"template; context: headerContentContext()\" />\n        } @else if (headerComponentContent(); as component) {\n          <ng-container *ngComponentOutlet=\"component; inputs: headerContentInputs() ?? {}\" />\n        }\n      </div>\n    }\n\n    <div class=\"ax-file-viewer__header-actions\">\n      @if (download()) {\n        <ax-button\n          class=\"ax-file-viewer__action-btn\"\n          color=\"default\"\n          [iconOnly]=\"true\"\n          [axTooltip]=\"'Download'\"\n          (onClick)=\"downloadCurrent()\"\n        >\n          <ax-icon icon=\"fa-light fa-download\"></ax-icon>\n        </ax-button>\n      }\n\n      @if (fullscreen()) {\n        <ax-button\n          class=\"ax-file-viewer__action-btn ax-file-viewer__fullscreen-wrap\"\n          color=\"default\"\n          [iconOnly]=\"true\"\n          [axTooltip]=\"isFullscreenActive() ? 'Close' : 'Fullscreen'\"\n          (onClick)=\"toggleFullscreen()\"\n        >\n          <ax-icon [icon]=\"isFullscreenActive() ? 'fa-light fa-xmark' : 'fa-light fa-expand'\"></ax-icon>\n        </ax-button>\n      }\n    </div>\n  </header>\n}\n\n<div\n  class=\"ax-file-viewer__stage\"\n  [class.ax-file-viewer__stage--nav]=\"service.items().length > 1\"\n  [class.ax-file-viewer__stage--hidden]=\"isBusy()\"\n>\n  @if (service.items().length > 1) {\n    <ax-button\n      class=\"ax-file-viewer__nav ax-file-viewer__nav--prev\"\n      look=\"solid\"\n      color=\"default\"\n      [iconOnly]=\"true\"\n      [disabled]=\"isFirstSlide()\"\n      (onClick)=\"prev()\"\n    >\n      <ax-icon icon=\"fa-light fa-chevron-left\"></ax-icon>\n    </ax-button>\n  }\n\n  <div class=\"ax-file-viewer__canvas\">\n    <div #mainCarousel=\"axCarousel\" axCarousel class=\"ax-carousel\">\n      <div class=\"ax-carousel-wrapper\">\n        @for (file of service.items(); track file.id) {\n          <div class=\"ax-carousel-slide\">\n            <ax-file-viewer-slide\n              [item]=\"file\"\n              [index]=\"$index\"\n              [fallbackContent]=\"fallbackContent()\"\n              [fallbackContentInputs]=\"fallbackContentInputs()\"\n            />\n          </div>\n        }\n      </div>\n    </div>\n\n    @if (service.items().length > 0) {\n      <span class=\"ax-file-viewer__overlay-counter\">{{ slideCounter() }}</span>\n    }\n  </div>\n\n  @if (service.items().length > 1) {\n    <ax-button\n      class=\"ax-file-viewer__nav ax-file-viewer__nav--next\"\n      look=\"solid\"\n      color=\"default\"\n      [iconOnly]=\"true\"\n      [disabled]=\"isLastSlide()\"\n      (onClick)=\"next()\"\n    >\n      <ax-icon icon=\"fa-light fa-chevron-right\"></ax-icon>\n    </ax-button>\n  }\n</div>\n\n@if (thumbnail() && service.items().length > 1) {\n  <footer class=\"ax-file-viewer__thumbs\" [class.ax-file-viewer__thumbs--hidden]=\"isBusy()\">\n    <div class=\"ax-file-viewer__thumbs-track\">\n      <div #thumbCarousel=\"axCarousel\" axCarousel class=\"ax-carousel\">\n        <div class=\"ax-carousel-wrapper\">\n          @for (file of service.items(); track file.id) {\n            <div\n              class=\"ax-carousel-slide ax-file-viewer__thumb\"\n              [attr.data-type]=\"resolveFileType(file)\"\n              [class.ax-file-viewer__thumb--active]=\"service.selectedIndex() === $index\"\n              (click)=\"goToIndex($index)\"\n            >\n              <ax-file-viewer-thumb-preview [item]=\"file\" />\n              <div class=\"ax-file-viewer__thumb-footer\">\n                <span class=\"ax-file-viewer__thumb-name\">{{ file.name || resolveTypeLabel(file) }}</span>\n              </div>\n            </div>\n          }\n        </div>\n      </div>\n    </div>\n  </footer>\n}\n","import { AXComponentClosedPromise } from '@acorex/cdk/common';\nimport { AXOverlayRef, AXOverlayService } from '@acorex/cdk/overlay';\nimport { AXComponentInputs } from '@acorex/core/components';\nimport { ComponentRef, inject, Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AXFileViewerContainerComponent } from './file-viewer-container/file-viewer-container.component';\nimport type { AXFileViewerGalleryConfig, AXFileViewerGalleryRef } from './file-viewer-gallery.types';\n\ninterface AXFileViewerGalleryEntry {\n  overlay: AXOverlayRef<AXFileViewerContainerComponent>;\n  gallery: AXFileViewerGalleryRef;\n  closedSub?: { unsubscribe: () => void };\n}\n\n/** Opens {@link AXFileViewerContainerComponent} in fullscreen gallery mode. */\n@Injectable({ providedIn: 'root' })\nexport class AXFileViewerGalleryService {\n  private readonly galleryList = new Map<number, AXFileViewerGalleryEntry>();\n  private readonly overlayService = inject(AXOverlayService);\n\n  /**\n   * Opens a file viewer gallery in fullscreen.\n   * @param config - Gallery configuration\n   * @returns Promise that resolves when the gallery is closed\n   */\n  open(config: AXFileViewerGalleryConfig): AXComponentClosedPromise {\n    const defaultConfig: AXFileViewerGalleryConfig = {\n      items: [],\n      startIndex: 0,\n      thumbnail: true,\n      download: true,\n      loading: false,\n      panelClass: [],\n    };\n\n    const mergedConfig = Object.assign(defaultConfig, config);\n\n    const promise = new AXComponentClosedPromise((resolve) => {\n      this.openInternal(mergedConfig).then((ref) => {\n        ref.onClose.subscribe((data) => {\n          resolve({\n            sender: ref.componentInstance,\n            data,\n          });\n        });\n      });\n    });\n\n    return promise;\n  }\n\n  /**\n   * Closes a gallery by its ID.\n   * @param id - The gallery ID to close\n   * @param data - Optional data to pass to the close event\n   */\n  close<TResult = unknown>(id: number, data?: TResult): void {\n    const ref = this.galleryList.get(id);\n    if (!ref) return;\n\n    this.galleryList.delete(id);\n    ref.closedSub?.unsubscribe();\n\n    const componentRef = ref.overlay.instance as ComponentRef<AXFileViewerContainerComponent>;\n    componentRef?.instance.exitFullscreen(false);\n\n    ref.gallery.onClose.next(data);\n    ref.gallery.onClose.complete();\n    ref.overlay.dispose();\n  }\n\n  /**\n   * Sets input values for a gallery by its ID.\n   * @param id - The gallery ID\n   * @param values - Object containing input values to set\n   */\n  setInputs(id: number, values: AXComponentInputs): void {\n    const ref = this.galleryList.get(id)?.overlay.instance;\n    if (!ref) return;\n    if (ref instanceof ComponentRef) {\n      Object.entries(values).forEach(([key, value]) => {\n        ref.setInput(key, value);\n      });\n    }\n  }\n\n  /**\n   * Brings a gallery to the front of all other overlays.\n   * @param id - The gallery ID to bring to front\n   */\n  bringToFront(id: number): void {\n    const ref = this.galleryList.get(id);\n    if (!ref) return;\n    ref.overlay.bringToFront();\n  }\n\n  private async openInternal(config: AXFileViewerGalleryConfig): Promise<AXFileViewerGalleryRef> {\n    const randomId = Math.floor(Math.random() * 100000000000);\n    const onClose = new Subject<unknown>();\n\n    const returnRef: AXFileViewerGalleryRef = {\n      close: (data) => {\n        this.close(randomId, data);\n      },\n      setInputs: (values) => {\n        this.setInputs(randomId, values);\n      },\n      bringToFront: () => {\n        this.bringToFront(randomId);\n      },\n      onClose,\n    };\n\n    const panelClasses = ['ax-file-viewer-gallery-overlay'];\n    if (config.panelClass?.length) {\n      panelClasses.push(...config.panelClass);\n    }\n\n    const overlayRef = await this.overlayService.create(AXFileViewerContainerComponent, {\n      backdrop: { enabled: false },\n      panelClass: panelClasses,\n      inputs: {\n        items: config.items,\n        startIndex: config.startIndex ?? 0,\n        thumbnail: config.thumbnail ?? true,\n        download: config.download ?? true,\n        fullscreen: true,\n        galleryMode: true,\n        loading: config.loading ?? false,\n        headerContent: config.headerContent ?? null,\n        headerContentInputs: config.headerContentInputs ?? null,\n        fallbackContent: config.fallbackContent ?? null,\n        fallbackContentInputs: config.fallbackContentInputs ?? null,\n      },\n    });\n\n    const componentRef = overlayRef.instance as ComponentRef<AXFileViewerContainerComponent>;\n    returnRef.componentInstance = componentRef.instance;\n\n    const closedSub = componentRef.instance.fullscreenClosed.subscribe(() => {\n      this.close(randomId);\n    });\n\n    this.galleryList.set(randomId, { overlay: overlayRef, gallery: returnRef, closedSub });\n\n    return returnRef;\n  }\n}\n","import {\n  AX_AUDIO_FILE_TYPE,\n  AX_DOCUMENT_FILE_TYPE,\n  AX_FILE_FILE_TYPE,\n  AX_IMAGE_FILE_TYPE,\n  AX_VIDEO_FILE_TYPE,\n  defineFileType,\n  type AXFileType,\n} from '@acorex/core/file';\n\nexport function createFileViewerFileTypes(): AXFileType[] {\n  return [\n    defineFileType({\n      ...AX_IMAGE_FILE_TYPE,\n      name: 'image',\n      component: () =>\n        import('../viewers/image-viewer.component').then((m) => m.AXFileViewerImageComponent),\n    }),\n    defineFileType({\n      ...AX_VIDEO_FILE_TYPE,\n      name: 'video',\n      component: () =>\n        import('../viewers/video-viewer.component').then((m) => m.AXFileViewerVideoComponent),\n    }),\n    defineFileType({\n      ...AX_AUDIO_FILE_TYPE,\n      name: 'audio',\n      component: () =>\n        import('../viewers/audio-viewer.component').then((m) => m.AXFileViewerAudioComponent),\n    }),\n    defineFileType({\n      ...AX_DOCUMENT_FILE_TYPE,\n      name: 'document',\n      component: () =>\n        import('../viewers/pdf-viewer.component').then((m) => m.AXFileViewerPdfComponent),\n      extensions: (AX_DOCUMENT_FILE_TYPE.extensions ?? []).map((extension) =>\n        extension.name.toLowerCase() === 'pdf'\n          ? {\n              ...extension,\n              component: () => import('../viewers/pdf-viewer.component').then((m) => m.AXFileViewerPdfComponent),\n            }\n          : extension,\n      ),\n    }),\n    defineFileType({\n      ...AX_FILE_FILE_TYPE,\n      name: 'file',\n      component: () =>\n        import('../viewers/file-fallback-viewer.component').then((m) => m.AXFileViewerFileFallbackComponent),\n    }),\n  ];\n}\n","import { AXFileTypeRegistryService } from '@acorex/core/file';\nimport { APP_INITIALIZER, type Provider } from '@angular/core';\nimport { createFileViewerFileTypes } from './file-types/file-viewer-file-types';\n\n/** Registers file-viewer components on standard file-type catalog entries. */\nexport function provideFileViewer(): Provider[] {\n  return [\n    {\n      provide: APP_INITIALIZER,\n      useFactory: (registry: AXFileTypeRegistryService) => () =>\n        registry.registerTypes(createFileViewerFileTypes()),\n      deps: [AXFileTypeRegistryService],\n      multi: true,\n    },\n  ];\n}\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\n/** Optional center header slot component for use with {@link headerContent}. */\n@Component({\n  selector: 'ax-file-viewer-header-placeholder',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  styleUrl: './file-viewer-header-placeholder.component.css',\n  template: `\n    <span class=\"ax-file-viewer__header-placeholder\">{{ slideCounter() }}</span>\n  `,\n})\nexport class AXFileViewerHeaderPlaceholderComponent {\n  readonly slideCounter = input('0 / 0');\n}\n","import { Component, computed, inject, ViewEncapsulation } from '@angular/core';\nimport { AXFileViewerService } from '../file-viewer.service';\nimport { resolveFileViewerFileType } from '../resolve-file-viewer-file-type';\n\ninterface ThumbnailEntry {\n  id: string;\n  index: number;\n  type: string;\n  icon: string;\n}\n\nconst TYPE_ICON_MAP: Record<string, string> = {\n  image: 'fa-light fa-image',\n  video: 'fa-light fa-video',\n  audio: 'fa-light fa-music',\n  document: 'fa-light fa-file-lines',\n  file: 'fa-light fa-file',\n};\n\n@Component({\n  selector: 'ax-file-viewer-thumbnails',\n  encapsulation: ViewEncapsulation.None,\n  styleUrl: './file-viewer-thumbnails.component.css',\n  template: `\n    <div class=\"ax-file-viewer-thumbnails\">\n      @for (thumb of thumbnails(); track thumb.id) {\n        <button\n          class=\"ax-file-viewer-thumb\"\n          [class.ax-file-viewer-thumb--active]=\"thumb.index === service.selectedIndex()\"\n          (click)=\"service.selectedIndex.set(thumb.index)\"\n        >\n          <i [class]=\"thumb.icon\"></i>\n        </button>\n      }\n    </div>\n  `,\n})\nexport class AXFileViewerThumbnailsComponent {\n  readonly service = inject(AXFileViewerService);\n\n  readonly thumbnails = computed<ThumbnailEntry[]>(() =>\n    this.service.items().map((item, index) => {\n      const type = resolveFileViewerFileType(item);\n      return {\n        id: item.id,\n        index,\n        type,\n        icon: TYPE_ICON_MAP[type] ?? TYPE_ICON_MAP['file'],\n      };\n    }),\n  );\n}\n","import { AXLoadingComponent } from '@acorex/components/loading';\nimport type { AXFileTypeViewComponent } from '@acorex/core/file';\nimport { Component, effect, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport { AXFileViewerService } from '../file-viewer.service';\nimport type { AXFileViewerViewPayload } from '../file-viewer.types';\n\n@Component({\n  selector: 'ax-file-viewer-image',\n  encapsulation: ViewEncapsulation.None,\n  imports: [AXLoadingComponent],\n  styleUrl: './image-viewer.component.css',\n  template: `\n    @if (loading()) {\n      <ax-loading></ax-loading>\n    } @else if (src()) {\n      <img [src]=\"src()\" [alt]=\"payload().item.name ?? 'Image'\" />\n    }\n  `,\n})\nexport class AXFileViewerImageComponent implements AXFileTypeViewComponent<AXFileViewerViewPayload> {\n  readonly payload = input.required<AXFileViewerViewPayload>();\n  private readonly service = inject(AXFileViewerService);\n  readonly src = signal<string | null>(null);\n  readonly loading = signal(false);\n\n  #resolve = effect(() => {\n    const p = this.payload();\n    if (p.active) {\n      this.loading.set(true);\n      void this.service\n        .resolveUrl(p.item, 'url')\n        .then((url) => this.src.set(url ?? null))\n        .finally(() => this.loading.set(false));\n    }\n  });\n}\n","import { AXLoadingComponent } from '@acorex/components/loading';\nimport type { AXFileTypeViewComponent } from '@acorex/core/file';\nimport { Component, effect, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport { AXFileViewerService } from '../file-viewer.service';\nimport type { AXFileViewerViewPayload } from '../file-viewer.types';\n\n@Component({\n  selector: 'ax-file-viewer-video',\n  encapsulation: ViewEncapsulation.None,\n  imports: [AXLoadingComponent],\n  styleUrl: './video-viewer.component.css',\n  template: `\n    @if (loading()) {\n      <ax-loading></ax-loading>\n    } @else if (src()) {\n      <video controls [src]=\"src()\"></video>\n    }\n  `,\n})\nexport class AXFileViewerVideoComponent implements AXFileTypeViewComponent<AXFileViewerViewPayload> {\n  readonly payload = input.required<AXFileViewerViewPayload>();\n  private readonly service = inject(AXFileViewerService);\n  readonly src = signal<string | null>(null);\n  readonly loading = signal(false);\n\n  #resolve = effect(() => {\n    const p = this.payload();\n    if (p.active) {\n      this.loading.set(true);\n      void this.service\n        .resolveUrl(p.item, 'url')\n        .then((url) => this.src.set(url ?? null))\n        .finally(() => this.loading.set(false));\n    }\n  });\n}\n","import { AXLoadingComponent } from '@acorex/components/loading';\nimport type { AXFileTypeViewComponent } from '@acorex/core/file';\nimport { Component, effect, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport { AXFileViewerService } from '../file-viewer.service';\nimport type { AXFileViewerViewPayload } from '../file-viewer.types';\n\n@Component({\n  selector: 'ax-file-viewer-audio',\n  encapsulation: ViewEncapsulation.None,\n  imports: [AXLoadingComponent],\n  styleUrl: './audio-viewer.component.css',\n  template: `\n    @if (loading()) {\n      <ax-loading></ax-loading>\n    } @else if (src()) {\n      <audio controls [src]=\"src()\"></audio>\n    }\n  `,\n})\nexport class AXFileViewerAudioComponent implements AXFileTypeViewComponent<AXFileViewerViewPayload> {\n  readonly payload = input.required<AXFileViewerViewPayload>();\n  private readonly service = inject(AXFileViewerService);\n  readonly src = signal<string | null>(null);\n  readonly loading = signal(false);\n\n  #resolve = effect(() => {\n    const p = this.payload();\n    if (p.active) {\n      this.loading.set(true);\n      void this.service\n        .resolveUrl(p.item, 'url')\n        .then((url) => this.src.set(url ?? null))\n        .finally(() => this.loading.set(false));\n    }\n  });\n}\n","import { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXPdfReaderComponent } from '@acorex/components/pdf-reader';\nimport type { AXFileTypeViewComponent } from '@acorex/core/file';\nimport { Component, effect, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer, type SafeResourceUrl } from '@angular/platform-browser';\nimport { AXFileViewerService } from '../file-viewer.service';\nimport type { AXFileViewerViewPayload } from '../file-viewer.types';\n\n@Component({\n  selector: 'ax-file-viewer-pdf',\n  encapsulation: ViewEncapsulation.None,\n  imports: [AXLoadingComponent, AXPdfReaderComponent],\n  styleUrl: './pdf-viewer.component.css',\n  template: `\n    @if (loading()) {\n      <ax-loading></ax-loading>\n    } @else if (safeSrc()) {\n      <ax-pdf-reader [src]=\"safeSrc()\"></ax-pdf-reader>\n    }\n  `,\n})\nexport class AXFileViewerPdfComponent implements AXFileTypeViewComponent<AXFileViewerViewPayload> {\n  readonly payload = input.required<AXFileViewerViewPayload>();\n  private readonly service = inject(AXFileViewerService);\n  private readonly sanitizer = inject(DomSanitizer);\n  readonly safeSrc = signal<SafeResourceUrl | null>(null);\n  readonly loading = signal(false);\n\n  #resolve = effect(() => {\n    const p = this.payload();\n    if (p.active) {\n      this.loading.set(true);\n      void this.service\n        .resolveUrl(p.item, 'url')\n        .then((url) => {\n          this.safeSrc.set(url ? this.sanitizer.bypassSecurityTrustResourceUrl(url) : null);\n        })\n        .finally(() => this.loading.set(false));\n    }\n  });\n}\n","import type { AXFileTypeViewComponent } from '@acorex/core/file';\nimport { Component, computed, input, ViewEncapsulation } from '@angular/core';\nimport type { AXFileViewerViewPayload } from '../file-viewer.types';\n\n@Component({\n  selector: 'ax-file-viewer-fallback',\n  encapsulation: ViewEncapsulation.None,\n  styleUrl: './file-fallback-viewer.component.css',\n  template: `\n    <div class=\"ax-file-viewer-fallback\">\n      <i class=\"fa-light fa-file ax-file-viewer-fallback__icon\"></i>\n      @if (name()) {\n        <span class=\"ax-file-viewer-fallback__name\">{{ name() }}</span>\n      }\n    </div>\n  `,\n})\nexport class AXFileViewerFileFallbackComponent implements AXFileTypeViewComponent<AXFileViewerViewPayload> {\n  readonly payload = input.required<AXFileViewerViewPayload>();\n  readonly name = computed(() => this.payload().item.name);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TYPE_ICON_MAP"],"mappings":"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"}