@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
JavaScript
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