{"version":3,"file":"kif-lib-file-viewer.mjs","sources":["../../../projects/kif-lib/file-viewer/file-viewer.component.ts","../../../projects/kif-lib/file-viewer/file-viewer.component.html","../../../projects/kif-lib/file-viewer/file-viewer.module.ts","../../../projects/kif-lib/file-viewer/public-api.ts","../../../projects/kif-lib/file-viewer/kif-lib-file-viewer.ts"],"sourcesContent":["import { ChangeDetectorRef, Component, Inject, OnInit, ViewChild, AfterViewInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { IFileView } from './interface/file-view.interface';\nimport { Download, ExternalLink, Minus, Plus, Printer, X, ZoomIn } from 'lucide-angular';\nimport { NgxExtendedPdfViewerComponent } from 'ngx-extended-pdf-viewer';\n\n@Component({\n    selector: 'kit-file-viewer',\n    templateUrl: './file-viewer.component.html',\n    styleUrls: ['./file-viewer.component.scss'],\n})\nexport class FileViewerComponent implements OnInit, AfterViewInit {\n    title = 'my-lib-test';\n    readonly xIcon = X;\n    readonly downloadIcon = Download;\n    readonly externalLinkIcon = ExternalLink;\n    readonly printIcon = Printer;\n    readonly plusIcon = Plus;\n    readonly zoomInIcon = ZoomIn;\n    readonly minusIcon = Minus;\n    fileData: IFileView = {\n        url: 'https://energia.gob.cl/sites/default/files/empresas_que_deben_cumplir_con_reporte_energetico_2022_segun_d.e._163.pdf',\n        type: 'pdf',\n        title: 'Ejemplo de PDF',\n    };\n\n    @ViewChild('pdfViewer', { static: false }) pdfViewer!: NgxExtendedPdfViewerComponent;\n\n    currentPage: number = 1;\n    totalPages: number = 0;\n\n    // Zoom-related properties\n    public isMobile = 'ontouchstart' in document.documentElement;\n    public minZoom = 0.33;\n    public maxZoom = 3;\n    public zoomLevels = ['auto', 'page-actual', 'page-fit', 'page-width', 0.2, 0.25, 0.33, 0.5, 0.75, 1, 1.25, 1.5, 2, 2.5, 3, 3.5, 4];\n    public zoomSetting: number = 50;\n    public currentZoomFactor!: number;\n\n    constructor(\n        private dialogRef: MatDialogRef<FileViewerComponent>,\n        @Inject(MAT_DIALOG_DATA) public data: IFileView,\n        private sanitizer: DomSanitizer,\n        private cdr: ChangeDetectorRef,\n    ) {}\n\n    ngOnInit(): void {\n        if (this.data) {\n            this.fileData = this.data;\n        }\n    }\n\n    public updateZoomFactor(zoom: number): void {\n        this.currentZoomFactor = zoom;\n    }\n\n    zoomIn(): void {\n        if (this.pdfViewer) {\n            this.zoomSetting += 10; // Increment zoom\n        } else {\n            console.error('El componente PDF Viewer no está inicializado o el zoom máximo ha sido alcanzado.');\n        }\n    }\n\n    zoomOut(): void {\n        if (this.pdfViewer) {\n            this.zoomSetting -= 10; // Decrement zoom\n        } else {\n            console.error('El componente PDF Viewer no está inicializado o el zoom máximo ha sido alcanzado.');\n        }\n    }\n\n    resetZoom(): void {\n        this.zoomSetting = 50;\n    }\n\n    navigateToPage(pageNumber: number): void {\n        if (this.pdfViewer) {\n            this.pdfViewer.page = pageNumber;\n        }\n    }\n\n    closeModal(): void {\n        this.dialogRef.close();\n    }\n\n    openInNewTab(): void {\n        const url = this.fileData.url;\n        window.open(url, '_blank');\n    }\n\n    downloadPdf(): void {\n        const link = document.createElement('a');\n        link.href = this.fileData.url;\n        link.download = 'documento.pdf';\n        link.click();\n    }\n\n    printPdf(): void {\n        window.print(); // Use the PDF viewer's print functionality\n    }\n    /**\n     * Lifecycle hook that is called after the view is initialized.\n     * Ensures pdfViewer is initialized before subscribing to its events.\n     */\n    public ngAfterViewInit(): void {\n        this.handleViewerEvents();\n    }\n\n    private handleViewerEvents(): void {\n        if (this.pdfViewer) {\n            this.pdfViewer.pageChange.subscribe((pageNumber) => {\n                this.currentPage = pageNumber;\n                this.cdr.detectChanges();\n            });\n            this.pdfViewer.pagesLoaded.subscribe((event) => {\n                this.totalPages = event.pagesCount;\n                this.cdr.detectChanges();\n            });\n            this.pdfViewer.pageChange.subscribe((event) => {\n                this.currentPage = event < 1 ? 1 : event;\n                this.cdr.detectChanges(); // Forzar la detección de cambios\n            });\n        } else {\n            console.error('pdfViewer is not initialized');\n        }\n    }\n\n    downloadFile(): void {\n        const link = document.createElement('a');\n        link.href = this.fileData.url;\n\n        if (this.fileData.type === 'image') {\n            link.download = 'imagen.png'; // Nombre del archivo para la imagen\n        } \n        link.click();\n    }\n}\n","@if (data.url && data.type === 'pdf') {\n  <div id=\"outerContainer\">\n  <div class=\"pdf-container\">\n    <ngx-extended-pdf-viewer\n      #pdfViewer\n      [customToolbar]=\"additionalButtons\"\n      (currentZoomFactor)=\"updateZoomFactor($event)\"\n      useBrowserLocale=\"true\"\n      [src]=\"fileData.url\"\n        [zoom]=\"zoomSetting\"\n  [minZoom]=\"minZoom\" [maxZoom]=\"maxZoom\"\n    ></ngx-extended-pdf-viewer>\n\n   \n  </div>\n</div>\n<div class=\"content-footer\">\n  <div class=\"d-flex justify-content-between align-items-center w-100\">\n    <span>{{ 'Página ' + currentPage + ' de ' + totalPages }}</span>\n    <div class=\"d-flex align-items-center gap-2\">\n      <button (click)=\"zoomOut()\" type=\"button\" class=\"bg-transparent border-0 p-0 outline-none\" style=\"outline: none;\" tabindex=\"0\" aria-label=\"Zoom Out\">\n        <lucide-angular [img]=\"minusIcon\" size=\"24\" color=\"#ffffff\"></lucide-angular>\n      </button>\n\n      <button (click)=\"resetZoom()\" type=\"button\" class=\"bg-transparent border-0 p-0 outline-none\" style=\"outline: none;\" tabindex=\"0\" aria-label=\"Zoom In\">\n        <lucide-angular [img]=\"zoomInIcon\" size=\"24\" color=\"#ffffff\"></lucide-angular>\n      </button>\n\n      <button (click)=\"zoomIn()\" type=\"button\" class=\"bg-transparent border-0 p-0 outline-none\" style=\"outline: none;\" tabindex=\"0\" aria-label=\"Reset Zoom\">\n        <lucide-angular [img]=\"plusIcon\" size=\"24\" color=\"#ffffff\"></lucide-angular>\n      </button>\n    </div>\n  </div>\n</div>\n <ng-template #additionalButtons class=\"hiden\">\n      <div id=\"toolbarViewer\" class=\"file-viewer-header\">\n        <div id=\"toolbarViewerLeft\"  style=\"padding-left: 48px;\">\n            <div class=\"d-flex align-items-center gap-3\">\n        \n            <button (click)=\"closeModal()\" (keydown.enter)=\"closeModal()\" type=\"button\"\n                class=\"bg-transparent border-0 p-0 outline-none\" style=\"outline: none;\" tabindex=\"0\" aria-label=\"Close\">\n                <lucide-angular [img]=\"xIcon\" size=\"32\" color=\"#ffffff\"></lucide-angular>\n            </button>    <span class=\"text-title-file\">{{ data.title }}</span>\n            \n        </div>\n        </div>\n        <div id=\"toolbarViewerRight\" style=\"padding-right: 48px;\" class=\"d-flex align-items-center gap-3\">\n          <button (click)=\"openInNewTab()\"  type=\"button\"\n              class=\"bg-transparent border-0 p-0 outline-none\" style=\"outline: none;\" tabindex=\"0\" aria-label=\"Close\">  <lucide-angular [img]=\"externalLinkIcon\" size=\"24\" color=\"#ffffff\"></lucide-angular></button>\n  \n            <button (click)=\"downloadPdf()\"  type=\"button\"\n                class=\"bg-transparent border-0 p-0 outline-none\" style=\"outline: none;\" tabindex=\"0\" aria-label=\"Close\">  <lucide-angular [img]=\"downloadIcon\" size=\"24\" color=\"#ffffff\"></lucide-angular></button>\n            <button (click)=\"printPdf()\"  type=\"button\"\n                class=\"bg-transparent border-0 p-0 outline-none\" style=\"outline: none;\" tabindex=\"0\" aria-label=\"Close\">  <lucide-angular [img]=\"printIcon\" size=\"24\" color=\"#ffffff\"></lucide-angular></button>\n        </div>\n      </div>\n    </ng-template>\n}\n\n@if (data.url && data.type === 'image') {\n  <div class=\"w-100\">\n <div  class=\"file-viewer-header d-flex justify-content-between align-items-center\">\n        <div  style=\"padding-left: 48px;\">\n            <div class=\"d-flex align-items-center gap-3\">\n        \n            <button (click)=\"closeModal()\" (keydown.enter)=\"closeModal()\" type=\"button\"\n                class=\"bg-transparent border-0 p-0 outline-none\" style=\"outline: none;\" tabindex=\"0\" aria-label=\"Close\">\n                <lucide-angular [img]=\"xIcon\" size=\"32\" color=\"#ffffff\"></lucide-angular>\n            </button>    <span class=\"text-title-file\">{{ data.title }}</span>\n\n        </div>\n        </div>\n        <div style=\"padding-right: 48px;\" class=\"d-flex align-items-center gap-3\">\n            <button (click)=\"downloadPdf()\"  type=\"button\"\n                class=\"bg-transparent border-0 p-0 outline-none\" style=\"outline: none;\" tabindex=\"0\" aria-label=\"Close\">  <lucide-angular [img]=\"downloadIcon\" size=\"24\" color=\"#ffffff\"></lucide-angular></button>\n      </div>\n\n  </div>\n    <div class=\"content-image w-100 d-flex justify-content-center align-items-center\">\n    <img [src]=\"data.url\" [alt]=\"data.title\" class=\"img-fluid\" />\n  </div>\n  </div>\n\n}","import { NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { LucideAngularModule, X, Download, ExternalLink, Printer, Plus, ZoomIn, Minus  } from 'lucide-angular';\nimport { FileViewerComponent } from './file-viewer.component';\nimport { NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer';\nimport { MatDividerModule } from '@angular/material/divider';\n\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatButtonModule,\n        MatProgressBarModule,\n        LucideAngularModule.pick({\n            X,\n            Download,\n            ExternalLink,\n            Printer,\n            Plus,\n            ZoomIn,\n            Minus\n        }),\n        NgxExtendedPdfViewerModule,\n        MatDividerModule\n    ],\n    declarations: [FileViewerComponent],\n    exports: [FileViewerComponent],\n    schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\n})\nexport class KifileViewerModule {}\n","/*\n * Public API Surface of kif-lib-input\n */\nexport * from './file-viewer.component';\nexport * from './file-viewer.module';\nexport * from './interface';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}