UNPKG

@eternalheart/ngx-file-preview

Version:

A powerful Angular file preview component library supporting multiple file formats including images, videos, PDFs, Office documents, text files and more.

56 lines 6.71 kB
import { ChangeDetectorRef, Directive, inject, Input } from '@angular/core'; import { FileReaderService, PreviewService } from "../../services"; import { firstValueFrom } from "rxjs"; import * as i0 from "@angular/core"; export class BasePreviewComponent { constructor() { this.fileReader = inject(FileReaderService); this.previewService = inject(PreviewService); this.cdr = inject(ChangeDetectorRef); } get isLoading() { return this.previewService.getLoadingObservable(); } t(key, ...args) { return this.previewService?.getLangParser()?.t(key, ...args); } async loadFile(fileType) { if (!this.file) return; this.startLoading(); try { const content = await firstValueFrom(this.fileReader.readFile(this.file, fileType)); await this.handleFileContent(content); } catch (error) { console.error('Failed to read file:', error); } finally { this.stopLoading(); } } startLoading() { this.previewService.setLoading(true); this.cdr.markForCheck(); } stopLoading() { this.previewService.setLoading(false); this.cdr.markForCheck(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BasePreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.12", type: BasePreviewComponent, isStandalone: true, inputs: { file: "file", themeMode: ["themeMode", "themeMode", (value) => value], autoThemeConfig: "autoThemeConfig" }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BasePreviewComponent, decorators: [{ type: Directive, args: [{ standalone: true, }] }], propDecorators: { file: [{ type: Input }], themeMode: [{ type: Input, args: [{ transform: (value) => value }] }], autoThemeConfig: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmd4LWZpbGUtcHJldmlldy9zcmMvbGliL3ByZXZpZXctdHlwZXMvYmFzZS1wcmV2aWV3L2Jhc2UtcHJldmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBcUIsaUJBQWlCLEVBQUUsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFLcEMsTUFBTSxPQUFnQixvQkFBb0I7SUFIMUM7UUFRWSxlQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkMsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBa0MzQztJQWhDQyxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsQ0FBQyxDQUFDLEdBQVcsRUFBRSxHQUFHLElBQXlCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVTLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBMEM7UUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUN2QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFJUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVTLFdBQVc7UUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDOytHQXhDbUIsb0JBQW9CO21HQUFwQixvQkFBb0Isb0ZBRXJCLENBQUMsS0FBdUIsRUFBYSxFQUFFLENBQUMsS0FBTTs7NEZBRjdDLG9CQUFvQjtrQkFIekMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBRVUsSUFBSTtzQkFBWixLQUFLO2dCQUM4RCxTQUFTO3NCQUE1RSxLQUFLO3VCQUFDLEVBQUMsU0FBUyxFQUFFLENBQUMsS0FBdUIsRUFBYSxFQUFFLENBQUMsS0FBTSxFQUFDO2dCQUN6RCxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXV0b1RoZW1lQ29uZmlnLCBQcmV2aWV3RmlsZSwgVGhlbWVNb2RlfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge0ZpbGVSZWFkZXJSZXNwb25zZSwgRmlsZVJlYWRlclNlcnZpY2UsIFByZXZpZXdTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXNcIjtcbmltcG9ydCB7Zmlyc3RWYWx1ZUZyb219IGZyb20gXCJyeGpzXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUHJldmlld0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGZpbGUhOiBQcmV2aWV3RmlsZTtcbiAgQElucHV0KHt0cmFuc2Zvcm06ICh2YWx1ZTogVGhlbWVNb2RlIHwgbnVsbCk6IFRoZW1lTW9kZSA9PiB2YWx1ZSF9KSB0aGVtZU1vZGUhOiBUaGVtZU1vZGU7XG4gIEBJbnB1dCgpIGF1dG9UaGVtZUNvbmZpZz86IEF1dG9UaGVtZUNvbmZpZztcblxuICBwcm90ZWN0ZWQgZmlsZVJlYWRlciA9IGluamVjdChGaWxlUmVhZGVyU2VydmljZSk7XG4gIHByb3RlY3RlZCBwcmV2aWV3U2VydmljZSA9IGluamVjdChQcmV2aWV3U2VydmljZSk7XG4gIHByb3RlY3RlZCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIGdldCBpc0xvYWRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJldmlld1NlcnZpY2UuZ2V0TG9hZGluZ09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcsIC4uLmFyZ3M6IChzdHJpbmcgfCBudW1iZXIpW10pIHtcbiAgICByZXR1cm4gdGhpcy5wcmV2aWV3U2VydmljZT8uZ2V0TGFuZ1BhcnNlcigpPy50KGtleSwgLi4uYXJncyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbG9hZEZpbGUoZmlsZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ3RleHQnIHwgJ2pzb24nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmZpbGUpIHJldHVybjtcbiAgICB0aGlzLnN0YXJ0TG9hZGluZygpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5maWxlUmVhZGVyLnJlYWRGaWxlKHRoaXMuZmlsZSwgZmlsZVR5cGUpKTtcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlRmlsZUNvbnRlbnQoY29udGVudCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byByZWFkIGZpbGU6JywgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnN0b3BMb2FkaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGhhbmRsZUZpbGVDb250ZW50KGNvbnRlbnQ6IEZpbGVSZWFkZXJSZXNwb25zZSk6IFByb21pc2U8YW55PjtcblxuICBwcm90ZWN0ZWQgc3RhcnRMb2FkaW5nKCkge1xuICAgIHRoaXMucHJldmlld1NlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0b3BMb2FkaW5nKCkge1xuICAgIHRoaXMucHJldmlld1NlcnZpY2Uuc2V0TG9hZGluZyhmYWxzZSlcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIl19