@acorex/components 22.3.4 → 22.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-components-accordion.mjs.map +1 -1
- package/fesm2022/acorex-components-action-sheet.mjs +2 -1
- package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
- package/fesm2022/acorex-components-alert.mjs.map +1 -1
- package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
- package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
- package/fesm2022/acorex-components-autocomplete.mjs +2 -1
- package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
- package/fesm2022/acorex-components-avatar.mjs.map +1 -1
- package/fesm2022/acorex-components-badge.mjs.map +1 -1
- package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
- package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/acorex-components-bubble.mjs.map +1 -1
- package/fesm2022/acorex-components-button-group.mjs.map +1 -1
- package/fesm2022/acorex-components-button.mjs +96 -9
- package/fesm2022/acorex-components-button.mjs.map +1 -1
- package/fesm2022/acorex-components-calendar.mjs +2 -2
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-check-box.mjs.map +1 -1
- package/fesm2022/acorex-components-chips.mjs.map +1 -1
- package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
- package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-color-box.mjs.map +1 -1
- package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
- package/fesm2022/acorex-components-combo-box.mjs +3 -2
- package/fesm2022/acorex-components-combo-box.mjs.map +1 -1
- package/fesm2022/acorex-components-command.mjs +4 -0
- package/fesm2022/acorex-components-command.mjs.map +1 -1
- package/fesm2022/acorex-components-comment.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-BZjCPB-7.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-F5fLD_SK.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation-emoji-categories-C7Gm95V0.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-Bk3ixvt2.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation-picker-rename-file-dialog.component-CNwDWg_O.mjs.map +1 -1
- package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
- package/fesm2022/acorex-components-data-list.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +45 -115
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-decorators.mjs +2 -90
- package/fesm2022/acorex-components-decorators.mjs.map +1 -1
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-drawer.mjs +1 -1
- package/fesm2022/acorex-components-drawer.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
- package/fesm2022/acorex-components-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-emoji.mjs.map +1 -1
- package/fesm2022/acorex-components-emojipicker.mjs.map +1 -1
- package/fesm2022/acorex-components-fab.mjs.map +1 -1
- package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-components-highlight.mjs.map +1 -1
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-image.mjs.map +1 -1
- package/fesm2022/acorex-components-inline-reaction.mjs.map +1 -1
- package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-kanban.mjs.map +1 -1
- package/fesm2022/acorex-components-kbd.mjs.map +1 -1
- package/fesm2022/acorex-components-label.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-loading.mjs.map +1 -1
- package/fesm2022/acorex-components-lookup.mjs +3 -2
- package/fesm2022/acorex-components-lookup.mjs.map +1 -1
- package/fesm2022/acorex-components-map.mjs.map +1 -1
- package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-message-status.mjs.map +1 -1
- package/fesm2022/acorex-components-message-time.mjs.map +1 -1
- package/fesm2022/acorex-components-message.mjs.map +1 -1
- package/fesm2022/acorex-components-navbar.mjs.map +1 -1
- package/fesm2022/acorex-components-notification.mjs +1 -2
- package/fesm2022/acorex-components-notification.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box.mjs.map +1 -1
- package/fesm2022/acorex-components-otp.mjs.map +1 -1
- package/fesm2022/acorex-components-page.mjs.map +1 -1
- package/fesm2022/acorex-components-paint.mjs.map +1 -1
- package/fesm2022/acorex-components-password-box.mjs.map +1 -1
- package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
- package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
- package/fesm2022/acorex-components-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-popover.mjs.map +1 -1
- package/fesm2022/acorex-components-popup.mjs +6 -6
- package/fesm2022/acorex-components-popup.mjs.map +1 -1
- package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
- package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
- package/fesm2022/acorex-components-radio.mjs.map +1 -1
- package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
- package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-reaction.mjs.map +1 -1
- package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
- package/fesm2022/acorex-components-result.mjs.map +1 -1
- package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
- package/fesm2022/acorex-components-rrule.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-search-box.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +2 -1
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-sidebar.mjs.map +1 -1
- package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
- package/fesm2022/acorex-components-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
- package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
- package/fesm2022/acorex-components-switch.mjs.map +1 -1
- package/fesm2022/acorex-components-tabs.mjs.map +1 -1
- package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
- package/fesm2022/acorex-components-tag.mjs.map +1 -1
- package/fesm2022/acorex-components-text-area.mjs.map +1 -1
- package/fesm2022/acorex-components-text-box.mjs.map +1 -1
- package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
- package/fesm2022/acorex-components-time-line.mjs.map +1 -1
- package/fesm2022/acorex-components-toast.mjs +2 -2
- package/fesm2022/acorex-components-toast.mjs.map +1 -1
- package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
- package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/fesm2022/acorex-components-uploader.mjs.map +1 -1
- package/fesm2022/acorex-components-video-player.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/fesm2022/acorex-components.mjs.map +1 -1
- package/package.json +3 -3
- package/types/acorex-components-button.d.ts +33 -3
- package/types/acorex-components-command.d.ts +2 -0
- package/types/acorex-components-data-pager.d.ts +1 -7
- package/types/acorex-components-decorators.d.ts +2 -32
- package/types/acorex-components-popup.d.ts +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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/file-viewer-empty-state/file-viewer-empty-state.component.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/viewer-src.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 { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ax-file-viewer-empty-state',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrl: './file-viewer-empty-state.component.css',\n template: `\n <div class=\"ax-file-viewer-empty\" role=\"status\" aria-live=\"polite\">\n <div class=\"ax-file-viewer-empty__icon-wrap\" aria-hidden=\"true\">\n <i class=\"fa-light fa-folder-open ax-file-viewer-empty__icon\"></i>\n </div>\n <h3 class=\"ax-file-viewer-empty__title\">No files to preview</h3>\n <p class=\"ax-file-viewer-empty__description\">\n Add files to the viewer to start browsing images, video, audio, PDF, and other formats.\n </p>\n </div>\n `,\n})\nexport class AXFileViewerEmptyStateComponent {}\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\" (error)=\"onImageError()\" />\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 onImageError(): void {\n this.src.set(null);\n }\n\n private async resolvePreview(item: AXFileViewerItem): Promise<string | undefined> {\n const type = resolveFileViewerFileType(item);\n const [thumbnail, content] = await Promise.all([\n this.service.resolveUrl(item, 'thumbnailUrl'),\n this.service.resolveUrl(item, 'url'),\n ]);\n\n // PDF/zip/etc. often reuse the asset URL as thumbnailUrl — that cannot render in <img>.\n if (thumbnail && (type === 'image' || thumbnail !== content)) {\n return thumbnail;\n }\n if (type === 'image') {\n return content;\n }\n return undefined;\n }\n}\n","import { AXCarouselDirective, type AXCarouselOptions } from '@acorex/cdk/carousel';\nimport type { AXClickEvent, 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 type { AXMenuItem } from '@acorex/components/menu';\nimport type { AXComponentContent, AXComponentInputs } from '@acorex/core/components';\nimport { AXFullScreenService } from '@acorex/core/full-screen';\nimport { DOCUMENT, isPlatformBrowser, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n PLATFORM_ID,\n signal,\n TemplateRef,\n Type,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport type Swiper from 'swiper';\nimport { AXFileViewerEmptyStateComponent } from '../file-viewer-empty-state/file-viewer-empty-state.component';\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\nexport interface AXFileViewerHeaderActionClickEvent {\n sender: AXFileViewerContainerComponent;\n nativeEvent: Event;\n canceled: boolean;\n item: {\n name?: string;\n text: string;\n data?: unknown;\n };\n}\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 AXFileViewerEmptyStateComponent,\n AXFileViewerSlideComponent,\n AXFileViewerThumbPreviewComponent,\n AXBadgeComponent,\n AXButtonComponent,\n AXDecoratorIconComponent,\n AXLoadingComponent,\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 /** Header action buttons rendered in the top-right actions area. */\n readonly headerActions = input<AXMenuItem[]>([]);\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 /** Custom empty-state template or component. Falls back to the built-in empty state. */\n readonly emptyContent = input<AXComponentContent | null>(null);\n readonly emptyContentInputs = input<AXComponentInputs | null>(null);\n /** External loading flag — show overlay while parent data is being fetched. */\n readonly loading = input(false);\n\n readonly headerActionClick = output<AXFileViewerHeaderActionClickEvent>();\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 private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\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 readonly isEmpty = computed(() => !this.loading() && !this.initializing() && this.service.items().length === 0);\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 emptyTemplateContent = computed(() => {\n const content = this.emptyContent();\n return content instanceof TemplateRef ? content : null;\n });\n\n readonly emptyComponentContent = computed(() => {\n const content = this.emptyContent();\n return content && typeof content === 'function' ? (content as Type<unknown>) : null;\n });\n\n readonly resolvedHeaderActions = computed(() => {\n this.isFullscreenActive();\n const customActions = this.headerActions();\n if (customActions.length > 0) {\n let hasFullscreenAction = false;\n\n return customActions.reduce<AXMenuItem[]>((actions, action) => {\n if (this.isFullscreenAction(action.name)) {\n if (hasFullscreenAction) {\n return actions;\n }\n hasFullscreenAction = true;\n }\n\n actions.push(this.resolveHeaderAction(action));\n return actions;\n }, []);\n }\n\n const actions: AXMenuItem[] = [];\n\n if (this.download()) {\n actions.push({\n name: 'download',\n text: 'Download',\n icon: 'fa-light fa-download',\n });\n }\n\n if (this.fullscreen()) {\n actions.push(\n this.resolveHeaderAction({\n name: 'fullscreen',\n text: 'Fullscreen',\n icon: 'fa-light fa-expand',\n }),\n );\n }\n\n return actions;\n });\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 updateOnWindowResize: true,\n resizeObserver: true,\n keyboard: true,\n watchSlidesProgress: true,\n speed: 300,\n threshold: 8,\n simulateTouch: true,\n noSwipingSelector: 'video, audio, ax-pdf-reader, ax-pdf-reader *',\n on: {\n afterInit(swiper) {\n requestAnimationFrame(() => swiper.update());\n },\n },\n };\n\n private readonly thumbnailCarouselOptions: AXCarouselOptions = {\n spaceBetween: 10,\n slidesPerView: 'auto',\n watchSlidesProgress: true,\n updateOnWindowResize: true,\n resizeObserver: true,\n threshold: 8,\n };\n\n #syncItems = effect(() => {\n const items = this.items();\n const startIndex = this.startIndex();\n const previousItems = untracked(() => this.service.items());\n const previousIndex = untracked(() => this.service.selectedIndex());\n const sameIds =\n previousItems.length === items.length && previousItems.every((item, index) => item.id === items[index]?.id);\n\n this.service.items.set(items);\n\n const maxIndex = Math.max(items.length - 1, 0);\n if (sameIds) {\n this.service.selectedIndex.set(Math.min(previousIndex, maxIndex));\n } else {\n this.service.selectedIndex.set(Math.min(Math.max(startIndex, 0), maxIndex));\n }\n\n if (items.length > 0) {\n const hasCarousel = untracked(() => !!this.mainCarouselRef()?.carousel());\n if (!sameIds || !hasCarousel) {\n this.initializing.set(true);\n setTimeout(() => void this.initCarousels());\n }\n } else if (!this.loading()) {\n this.initializing.set(false);\n }\n });\n\n #bindSlideChange = effect((onCleanup) => {\n const carousel = this.mainCarouselRef()?.carousel();\n if (!carousel) return;\n carousel.on('activeIndexChange', this.onSlideChange);\n onCleanup(() => {\n carousel.off('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 constructor() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const onKeydown = (event: KeyboardEvent) => this.onFullscreenEscape(event);\n this.document.addEventListener('keydown', onKeydown);\n this.destroyRef.onDestroy(() => {\n this.document.removeEventListener('keydown', onKeydown);\n });\n }\n\n resolveHeaderAction(action: AXMenuItem): AXMenuItem {\n if (!this.isFullscreenAction(action.name)) {\n return action;\n }\n\n const isActive = this.isFullscreenActive();\n\n if (isActive) {\n return {\n ...action,\n name: 'fullscreen',\n text: 'Close fullscreen',\n icon: 'fa-light fa-close',\n };\n }\n\n return {\n ...action,\n name: 'fullscreen',\n text: action.text || 'Fullscreen',\n icon: action.icon ?? 'fa-light fa-expand',\n };\n }\n\n onHeaderActionClick(action: AXMenuItem, event: AXClickEvent): void {\n if (action.disabled || action.isLoading) {\n return;\n }\n\n const resolvedAction = this.isFullscreenAction(action.name) ? { ...action, name: 'fullscreen' as const } : action;\n\n const clickEvent: AXFileViewerHeaderActionClickEvent = {\n sender: this,\n nativeEvent: event.nativeEvent,\n canceled: false,\n item: {\n name: resolvedAction.name,\n text: resolvedAction.text,\n data: resolvedAction.data,\n },\n };\n\n switch (resolvedAction.name) {\n case 'download':\n void this.downloadCurrent();\n break;\n case 'fullscreen':\n this.toggleFullscreen();\n break;\n }\n\n this.headerActionClick.emit(clickEvent);\n }\n\n private isFullscreenAction(name?: string): boolean {\n return name === 'fullscreen' || name === 'close';\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.toggleFullscreen();\n }\n\n private onFullscreenEscape(event: KeyboardEvent): void {\n if (event.key !== 'Escape' || event.repeat) {\n return;\n }\n\n const doc = this.document as Document & { webkitFullscreenElement?: Element | null };\n if (doc.fullscreenElement || doc.webkitFullscreenElement) {\n return;\n }\n\n if (!this.isFullscreenActive() && !this.fullScreenService.isActive(this.host.nativeElement)) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\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 thumbRef?.destroy();\n mainRef.destroy();\n\n if (token !== this.initToken) return;\n\n if (thumbRef) {\n await thumbRef.init(this.thumbnailCarouselOptions);\n if (token !== this.initToken) {\n thumbRef.destroy();\n return;\n }\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) {\n thumbRef?.destroy();\n mainRef.destroy();\n return;\n }\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 if (this.service.selectedIndex() === swiper.activeIndex) return;\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()?.destroy();\n this.thumbCarouselRef()?.destroy();\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 (isEmpty()) {\n <div class=\"ax-file-viewer__empty\" [class.ax-file-viewer__empty--hidden]=\"isBusy()\">\n @if (emptyTemplateContent(); as template) {\n <ng-container *ngTemplateOutlet=\"template\" />\n } @else if (emptyComponentContent(); as component) {\n <ng-container *ngComponentOutlet=\"component; inputs: emptyContentInputs() ?? {}\" />\n } @else {\n <ax-file-viewer-empty-state />\n }\n </div>\n} @else {\n @if (currentItem(); as item) {\n <header class=\"ax-file-viewer__header\" [class.ax-file-viewer__header--no-content]=\"!hasHeaderCenterContent()\">\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 @for (action of resolvedHeaderActions(); track action.name ?? action.text) {\n <ax-button\n class=\"rounded-full\"\n [color]=\"action.color ?? 'default'\"\n [iconOnly]=\"!!action.icon\"\n [disabled]=\"action.disabled\"\n [attr.aria-label]=\"action.text\"\n (onClick)=\"onHeaderActionClick(action, $event)\"\n >\n @if (action.isLoading) {\n <ax-loading></ax-loading>\n } @else if (action.icon) {\n <ax-icon [icon]=\"action.icon\"></ax-icon>\n } @else {\n {{ action.text }}\n }\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 look=\"solid\"\n class=\"ax-file-viewer__nav ax-file-viewer__nav--prev\"\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 (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}\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 headerActions: config.headerActions ?? [],\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 emptyContent: config.emptyContent ?? null,\n emptyContentInputs: config.emptyContentInputs ?? 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 type { AXFileViewerViewPayload } from '../file-viewer.types';\n\n/** Load the active slide and its neighbors so swipe transitions have content ready. */\nexport function shouldLoadViewerSlide(payload: AXFileViewerViewPayload, selectedIndex: number, distance = 1): boolean {\n return Math.abs(payload.index - selectedIndex) <= distance;\n}\n","import { AXLoadingComponent } from '@acorex/components/loading';\nimport type { AXFileTypeViewComponent } from '@acorex/core/file';\nimport { Component, effect, inject, input, signal, untracked, ViewEncapsulation } from '@angular/core';\nimport { AXFileViewerService } from '../file-viewer.service';\nimport type { AXFileViewerViewPayload } from '../file-viewer.types';\nimport { shouldLoadViewerSlide } from './viewer-src';\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'\" draggable=\"false\" />\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 private loadedId: string | null = null;\n\n #resolve = effect(() => {\n const p = this.payload();\n if (!shouldLoadViewerSlide(p, this.service.selectedIndex())) return;\n if (this.loadedId === p.item.id && untracked(() => this.src())) return;\n\n const itemId = p.item.id;\n this.loading.set(this.loadedId !== itemId || !untracked(() => this.src()));\n void this.service\n .resolveUrl(p.item, 'url')\n .then((url) => {\n this.loadedId = itemId;\n this.src.set(url ?? null);\n })\n .finally(() => this.loading.set(false));\n });\n}\n","import { AXLoadingComponent } from '@acorex/components/loading';\nimport type { AXFileTypeViewComponent } from '@acorex/core/file';\nimport { Component, effect, ElementRef, inject, input, signal, untracked, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AXFileViewerService } from '../file-viewer.service';\nimport type { AXFileViewerViewPayload } from '../file-viewer.types';\nimport { shouldLoadViewerSlide } from './viewer-src';\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 #mediaEl controls preload=\"metadata\" [src]=\"src()\" [draggable]=\"false\"></video>\n }\n `,\n})\nexport class AXFileViewerVideoComponent implements AXFileTypeViewComponent<AXFileViewerViewPayload> {\n readonly payload = input.required<AXFileViewerViewPayload>();\n private readonly service = inject(AXFileViewerService);\n private readonly mediaEl = viewChild<ElementRef<HTMLVideoElement>>('mediaEl');\n readonly src = signal<string | null>(null);\n readonly loading = signal(false);\n private loadedId: string | null = null;\n\n #resolve = effect(() => {\n const p = this.payload();\n if (!shouldLoadViewerSlide(p, this.service.selectedIndex())) return;\n if (this.loadedId === p.item.id && untracked(() => this.src())) return;\n\n const itemId = p.item.id;\n this.loading.set(this.loadedId !== itemId || !untracked(() => this.src()));\n void this.service\n .resolveUrl(p.item, 'url')\n .then((url) => {\n this.loadedId = itemId;\n this.src.set(url ?? null);\n })\n .finally(() => this.loading.set(false));\n });\n\n #pauseInactive = effect(() => {\n const media = this.mediaEl()?.nativeElement;\n if (media && !this.payload().active) {\n media.pause();\n }\n });\n}\n","import { AXLoadingComponent } from '@acorex/components/loading';\nimport type { AXFileTypeViewComponent } from '@acorex/core/file';\nimport { Component, effect, ElementRef, inject, input, signal, untracked, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AXFileViewerService } from '../file-viewer.service';\nimport type { AXFileViewerViewPayload } from '../file-viewer.types';\nimport { shouldLoadViewerSlide } from './viewer-src';\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 #mediaEl controls preload=\"metadata\" [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 private readonly mediaEl = viewChild<ElementRef<HTMLAudioElement>>('mediaEl');\n readonly src = signal<string | null>(null);\n readonly loading = signal(false);\n private loadedId: string | null = null;\n\n #resolve = effect(() => {\n const p = this.payload();\n if (!shouldLoadViewerSlide(p, this.service.selectedIndex())) return;\n if (this.loadedId === p.item.id && untracked(() => this.src())) return;\n\n const itemId = p.item.id;\n this.loading.set(this.loadedId !== itemId || !untracked(() => this.src()));\n void this.service\n .resolveUrl(p.item, 'url')\n .then((url) => {\n this.loadedId = itemId;\n this.src.set(url ?? null);\n })\n .finally(() => this.loading.set(false));\n });\n\n #pauseInactive = effect(() => {\n const media = this.mediaEl()?.nativeElement;\n if (media && !this.payload().active) {\n media.pause();\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, untracked, 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';\nimport { shouldLoadViewerSlide } from './viewer-src';\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 private loadedId: string | null = null;\n\n #resolve = effect(() => {\n const p = this.payload();\n if (!shouldLoadViewerSlide(p, this.service.selectedIndex())) return;\n if (this.loadedId === p.item.id && untracked(() => this.safeSrc())) return;\n\n const itemId = p.item.id;\n this.loading.set(this.loadedId !== itemId || !untracked(() => this.safeSrc()));\n void this.service\n .resolveUrl(p.item, 'url')\n .then((url) => {\n this.loadedId = itemId;\n this.safeSrc.set(url ? this.sanitizer.bypassSecurityTrustResourceUrl(url) : null);\n })\n .finally(() => this.loading.set(false));\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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"}
|
|
1
|
+
{"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/file-viewer-empty-state/file-viewer-empty-state.component.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/viewer-src.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 { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ax-file-viewer-empty-state',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrl: './file-viewer-empty-state.component.css',\n template: `\n <div class=\"ax-file-viewer-empty\" role=\"status\" aria-live=\"polite\">\n <div class=\"ax-file-viewer-empty__icon-wrap\" aria-hidden=\"true\">\n <i class=\"fa-light fa-folder-open ax-file-viewer-empty__icon\"></i>\n </div>\n <h3 class=\"ax-file-viewer-empty__title\">No files to preview</h3>\n <p class=\"ax-file-viewer-empty__description\">\n Add files to the viewer to start browsing images, video, audio, PDF, and other formats.\n </p>\n </div>\n `,\n})\nexport class AXFileViewerEmptyStateComponent {}\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\" (error)=\"onImageError()\" />\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 onImageError(): void {\n this.src.set(null);\n }\n\n private async resolvePreview(item: AXFileViewerItem): Promise<string | undefined> {\n const type = resolveFileViewerFileType(item);\n const [thumbnail, content] = await Promise.all([\n this.service.resolveUrl(item, 'thumbnailUrl'),\n this.service.resolveUrl(item, 'url'),\n ]);\n\n // PDF/zip/etc. often reuse the asset URL as thumbnailUrl — that cannot render in <img>.\n if (thumbnail && (type === 'image' || thumbnail !== content)) {\n return thumbnail;\n }\n if (type === 'image') {\n return content;\n }\n return undefined;\n }\n}\n","import { AXCarouselDirective, type AXCarouselOptions } from '@acorex/cdk/carousel';\nimport type { AXClickEvent, 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 type { AXMenuItem } from '@acorex/components/menu';\nimport type { AXComponentContent, AXComponentInputs } from '@acorex/core/components';\nimport { AXFullScreenService } from '@acorex/core/full-screen';\nimport { DOCUMENT, isPlatformBrowser, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n PLATFORM_ID,\n signal,\n TemplateRef,\n Type,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport type Swiper from 'swiper';\nimport { AXFileViewerEmptyStateComponent } from '../file-viewer-empty-state/file-viewer-empty-state.component';\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\nexport interface AXFileViewerHeaderActionClickEvent {\n sender: AXFileViewerContainerComponent;\n nativeEvent: Event;\n canceled: boolean;\n item: {\n name?: string;\n text: string;\n data?: unknown;\n };\n}\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 AXFileViewerEmptyStateComponent,\n AXFileViewerSlideComponent,\n AXFileViewerThumbPreviewComponent,\n AXBadgeComponent,\n AXButtonComponent,\n AXDecoratorIconComponent,\n AXLoadingComponent,\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 /** Header action buttons rendered in the top-right actions area. */\n readonly headerActions = input<AXMenuItem[]>([]);\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 /** Custom empty-state template or component. Falls back to the built-in empty state. */\n readonly emptyContent = input<AXComponentContent | null>(null);\n readonly emptyContentInputs = input<AXComponentInputs | null>(null);\n /** External loading flag — show overlay while parent data is being fetched. */\n readonly loading = input(false);\n\n readonly headerActionClick = output<AXFileViewerHeaderActionClickEvent>();\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 private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\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 readonly isEmpty = computed(() => !this.loading() && !this.initializing() && this.service.items().length === 0);\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 emptyTemplateContent = computed(() => {\n const content = this.emptyContent();\n return content instanceof TemplateRef ? content : null;\n });\n\n readonly emptyComponentContent = computed(() => {\n const content = this.emptyContent();\n return content && typeof content === 'function' ? (content as Type<unknown>) : null;\n });\n\n readonly resolvedHeaderActions = computed(() => {\n this.isFullscreenActive();\n const customActions = this.headerActions();\n if (customActions.length > 0) {\n let hasFullscreenAction = false;\n\n return customActions.reduce<AXMenuItem[]>((actions, action) => {\n if (this.isFullscreenAction(action.name)) {\n if (hasFullscreenAction) {\n return actions;\n }\n hasFullscreenAction = true;\n }\n\n actions.push(this.resolveHeaderAction(action));\n return actions;\n }, []);\n }\n\n const actions: AXMenuItem[] = [];\n\n if (this.download()) {\n actions.push({\n name: 'download',\n text: 'Download',\n icon: 'fa-light fa-download',\n });\n }\n\n if (this.fullscreen()) {\n actions.push(\n this.resolveHeaderAction({\n name: 'fullscreen',\n text: 'Fullscreen',\n icon: 'fa-light fa-expand',\n }),\n );\n }\n\n return actions;\n });\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 updateOnWindowResize: true,\n resizeObserver: true,\n keyboard: true,\n watchSlidesProgress: true,\n speed: 300,\n threshold: 8,\n simulateTouch: true,\n noSwipingSelector: 'video, audio, ax-pdf-reader, ax-pdf-reader *',\n on: {\n afterInit(swiper) {\n requestAnimationFrame(() => swiper.update());\n },\n },\n };\n\n private readonly thumbnailCarouselOptions: AXCarouselOptions = {\n spaceBetween: 10,\n slidesPerView: 'auto',\n watchSlidesProgress: true,\n updateOnWindowResize: true,\n resizeObserver: true,\n threshold: 8,\n };\n\n #syncItems = effect(() => {\n const items = this.items();\n const startIndex = this.startIndex();\n const previousItems = untracked(() => this.service.items());\n const previousIndex = untracked(() => this.service.selectedIndex());\n const sameIds =\n previousItems.length === items.length && previousItems.every((item, index) => item.id === items[index]?.id);\n\n this.service.items.set(items);\n\n const maxIndex = Math.max(items.length - 1, 0);\n if (sameIds) {\n this.service.selectedIndex.set(Math.min(previousIndex, maxIndex));\n } else {\n this.service.selectedIndex.set(Math.min(Math.max(startIndex, 0), maxIndex));\n }\n\n if (items.length > 0) {\n const hasCarousel = untracked(() => !!this.mainCarouselRef()?.carousel());\n if (!sameIds || !hasCarousel) {\n this.initializing.set(true);\n setTimeout(() => void this.initCarousels());\n }\n } else if (!this.loading()) {\n this.initializing.set(false);\n }\n });\n\n #bindSlideChange = effect((onCleanup) => {\n const carousel = this.mainCarouselRef()?.carousel();\n if (!carousel) return;\n carousel.on('activeIndexChange', this.onSlideChange);\n onCleanup(() => {\n carousel.off('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 constructor() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const onKeydown = (event: KeyboardEvent) => this.onFullscreenEscape(event);\n this.document.addEventListener('keydown', onKeydown);\n this.destroyRef.onDestroy(() => {\n this.document.removeEventListener('keydown', onKeydown);\n });\n }\n\n resolveHeaderAction(action: AXMenuItem): AXMenuItem {\n if (!this.isFullscreenAction(action.name)) {\n return action;\n }\n\n const isActive = this.isFullscreenActive();\n\n if (isActive) {\n return {\n ...action,\n name: 'fullscreen',\n text: 'Close fullscreen',\n icon: 'fa-light fa-close',\n };\n }\n\n return {\n ...action,\n name: 'fullscreen',\n text: action.text || 'Fullscreen',\n icon: action.icon ?? 'fa-light fa-expand',\n };\n }\n\n onHeaderActionClick(action: AXMenuItem, event: AXClickEvent): void {\n if (action.disabled || action.isLoading) {\n return;\n }\n\n const resolvedAction = this.isFullscreenAction(action.name) ? { ...action, name: 'fullscreen' as const } : action;\n\n const clickEvent: AXFileViewerHeaderActionClickEvent = {\n sender: this,\n nativeEvent: event.nativeEvent,\n canceled: false,\n item: {\n name: resolvedAction.name,\n text: resolvedAction.text,\n data: resolvedAction.data,\n },\n };\n\n switch (resolvedAction.name) {\n case 'download':\n void this.downloadCurrent();\n break;\n case 'fullscreen':\n this.toggleFullscreen();\n break;\n }\n\n this.headerActionClick.emit(clickEvent);\n }\n\n private isFullscreenAction(name?: string): boolean {\n return name === 'fullscreen' || name === 'close';\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.toggleFullscreen();\n }\n\n private onFullscreenEscape(event: KeyboardEvent): void {\n if (event.key !== 'Escape' || event.repeat) {\n return;\n }\n\n const doc = this.document as Document & { webkitFullscreenElement?: Element | null };\n if (doc.fullscreenElement || doc.webkitFullscreenElement) {\n return;\n }\n\n if (!this.isFullscreenActive() && !this.fullScreenService.isActive(this.host.nativeElement)) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\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 thumbRef?.destroy();\n mainRef.destroy();\n\n if (token !== this.initToken) return;\n\n if (thumbRef) {\n await thumbRef.init(this.thumbnailCarouselOptions);\n if (token !== this.initToken) {\n thumbRef.destroy();\n return;\n }\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) {\n thumbRef?.destroy();\n mainRef.destroy();\n return;\n }\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 if (this.service.selectedIndex() === swiper.activeIndex) return;\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()?.destroy();\n this.thumbCarouselRef()?.destroy();\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 (isEmpty()) {\n <div class=\"ax-file-viewer__empty\" [class.ax-file-viewer__empty--hidden]=\"isBusy()\">\n @if (emptyTemplateContent(); as template) {\n <ng-container *ngTemplateOutlet=\"template\" />\n } @else if (emptyComponentContent(); as component) {\n <ng-container *ngComponentOutlet=\"component; inputs: emptyContentInputs() ?? {}\" />\n } @else {\n <ax-file-viewer-empty-state />\n }\n </div>\n} @else {\n @if (currentItem(); as item) {\n <header class=\"ax-file-viewer__header\" [class.ax-file-viewer__header--no-content]=\"!hasHeaderCenterContent()\">\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 @for (action of resolvedHeaderActions(); track action.name ?? action.text) {\n <ax-button\n class=\"rounded-full\"\n [color]=\"action.color ?? 'default'\"\n [iconOnly]=\"!!action.icon\"\n [disabled]=\"action.disabled\"\n [attr.aria-label]=\"action.text\"\n (onClick)=\"onHeaderActionClick(action, $event)\"\n >\n @if (action.isLoading) {\n <ax-loading></ax-loading>\n } @else if (action.icon) {\n <ax-icon [icon]=\"action.icon\"></ax-icon>\n } @else {\n {{ action.text }}\n }\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 look=\"solid\"\n class=\"ax-file-viewer__nav ax-file-viewer__nav--prev\"\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 (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}\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 headerActions: config.headerActions ?? [],\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 emptyContent: config.emptyContent ?? null,\n emptyContentInputs: config.emptyContentInputs ?? 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 type { AXFileViewerViewPayload } from '../file-viewer.types';\n\n/** Load the active slide and its neighbors so swipe transitions have content ready. */\nexport function shouldLoadViewerSlide(payload: AXFileViewerViewPayload, selectedIndex: number, distance = 1): boolean {\n return Math.abs(payload.index - selectedIndex) <= distance;\n}\n","import { AXLoadingComponent } from '@acorex/components/loading';\nimport type { AXFileTypeViewComponent } from '@acorex/core/file';\nimport { Component, effect, inject, input, signal, untracked, ViewEncapsulation } from '@angular/core';\nimport { AXFileViewerService } from '../file-viewer.service';\nimport type { AXFileViewerViewPayload } from '../file-viewer.types';\nimport { shouldLoadViewerSlide } from './viewer-src';\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'\" draggable=\"false\" />\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 private loadedId: string | null = null;\n\n #resolve = effect(() => {\n const p = this.payload();\n if (!shouldLoadViewerSlide(p, this.service.selectedIndex())) return;\n if (this.loadedId === p.item.id && untracked(() => this.src())) return;\n\n const itemId = p.item.id;\n this.loading.set(this.loadedId !== itemId || !untracked(() => this.src()));\n void this.service\n .resolveUrl(p.item, 'url')\n .then((url) => {\n this.loadedId = itemId;\n this.src.set(url ?? null);\n })\n .finally(() => this.loading.set(false));\n });\n}\n","import { AXLoadingComponent } from '@acorex/components/loading';\nimport type { AXFileTypeViewComponent } from '@acorex/core/file';\nimport { Component, effect, ElementRef, inject, input, signal, untracked, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AXFileViewerService } from '../file-viewer.service';\nimport type { AXFileViewerViewPayload } from '../file-viewer.types';\nimport { shouldLoadViewerSlide } from './viewer-src';\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 #mediaEl controls preload=\"metadata\" [src]=\"src()\" [draggable]=\"false\"></video>\n }\n `,\n})\nexport class AXFileViewerVideoComponent implements AXFileTypeViewComponent<AXFileViewerViewPayload> {\n readonly payload = input.required<AXFileViewerViewPayload>();\n private readonly service = inject(AXFileViewerService);\n private readonly mediaEl = viewChild<ElementRef<HTMLVideoElement>>('mediaEl');\n readonly src = signal<string | null>(null);\n readonly loading = signal(false);\n private loadedId: string | null = null;\n\n #resolve = effect(() => {\n const p = this.payload();\n if (!shouldLoadViewerSlide(p, this.service.selectedIndex())) return;\n if (this.loadedId === p.item.id && untracked(() => this.src())) return;\n\n const itemId = p.item.id;\n this.loading.set(this.loadedId !== itemId || !untracked(() => this.src()));\n void this.service\n .resolveUrl(p.item, 'url')\n .then((url) => {\n this.loadedId = itemId;\n this.src.set(url ?? null);\n })\n .finally(() => this.loading.set(false));\n });\n\n #pauseInactive = effect(() => {\n const media = this.mediaEl()?.nativeElement;\n if (media && !this.payload().active) {\n media.pause();\n }\n });\n}\n","import { AXLoadingComponent } from '@acorex/components/loading';\nimport type { AXFileTypeViewComponent } from '@acorex/core/file';\nimport { Component, effect, ElementRef, inject, input, signal, untracked, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AXFileViewerService } from '../file-viewer.service';\nimport type { AXFileViewerViewPayload } from '../file-viewer.types';\nimport { shouldLoadViewerSlide } from './viewer-src';\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 #mediaEl controls preload=\"metadata\" [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 private readonly mediaEl = viewChild<ElementRef<HTMLAudioElement>>('mediaEl');\n readonly src = signal<string | null>(null);\n readonly loading = signal(false);\n private loadedId: string | null = null;\n\n #resolve = effect(() => {\n const p = this.payload();\n if (!shouldLoadViewerSlide(p, this.service.selectedIndex())) return;\n if (this.loadedId === p.item.id && untracked(() => this.src())) return;\n\n const itemId = p.item.id;\n this.loading.set(this.loadedId !== itemId || !untracked(() => this.src()));\n void this.service\n .resolveUrl(p.item, 'url')\n .then((url) => {\n this.loadedId = itemId;\n this.src.set(url ?? null);\n })\n .finally(() => this.loading.set(false));\n });\n\n #pauseInactive = effect(() => {\n const media = this.mediaEl()?.nativeElement;\n if (media && !this.payload().active) {\n media.pause();\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, untracked, 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';\nimport { shouldLoadViewerSlide } from './viewer-src';\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 private loadedId: string | null = null;\n\n #resolve = effect(() => {\n const p = this.payload();\n if (!shouldLoadViewerSlide(p, this.service.selectedIndex())) return;\n if (this.loadedId === p.item.id && untracked(() => this.safeSrc())) return;\n\n const itemId = p.item.id;\n this.loading.set(this.loadedId !== itemId || !untracked(() => this.safeSrc()));\n void this.service\n .resolveUrl(p.item, 'url')\n .then((url) => {\n this.loadedId = itemId;\n this.safeSrc.set(url ? this.sanitizer.bypassSecurityTrustResourceUrl(url) : null);\n })\n .finally(() => this.loading.set(false));\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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"}
|