@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.
53 lines • 6.43 kB
JavaScript
import { Injectable } from '@angular/core';
import { Subject, from } from 'rxjs';
import * as i0 from "@angular/core";
export class FileReaderService {
constructor() {
this.responseSubject = new Subject();
}
async readFileData(file, fileType) {
try {
const response = await fetch(file.url);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const result = { type: 'success' };
switch (fileType) {
case 'arraybuffer':
result.data = await response.arrayBuffer();
break;
case 'text':
result.text = await response.text();
break;
case 'json':
const text = await response.text();
try {
result.json = JSON.parse(text);
}
catch (parseError) {
throw new Error(`JSON parse failed: ${parseError.message}`);
}
break;
}
return result;
}
catch (error) {
return {
type: 'error',
error: error instanceof Error ? error.message : 'Unknown error'
};
}
}
readFile(file, fileType = 'arraybuffer') {
return from(this.readFileData(file, fileType));
}
ngOnDestroy() {
this.responseSubject.complete();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileReaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileReaderService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileReaderService, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1yZWFkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmd4LWZpbGUtcHJldmlldy9zcmMvbGliL3NlcnZpY2VzL2ZpbGUtcmVhZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQWEsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFZL0MsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVVLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQXNCLENBQUM7S0EyQzdEO0lBMUNTLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBaUIsRUFBRSxRQUF5QztRQUNyRixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDNUQsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUF1QixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUV2RCxRQUFRLFFBQVEsRUFBRSxDQUFDO2dCQUNqQixLQUFLLGFBQWE7b0JBQ2hCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQzNDLE1BQU07Z0JBQ1IsS0FBSyxNQUFNO29CQUNULE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3BDLE1BQU07Z0JBQ1IsS0FBSyxNQUFNO29CQUNULE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNuQyxJQUFJLENBQUM7d0JBQ0gsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNqQyxDQUFDO29CQUFDLE9BQU8sVUFBZSxFQUFFLENBQUM7d0JBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO29CQUM5RCxDQUFDO29CQUNELE1BQU07WUFDVixDQUFDO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPO2dCQUNMLElBQUksRUFBRSxPQUFPO2dCQUNiLEtBQUssRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlO2FBQ2hFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFpQixFQUFFLFdBQTRDLGFBQWE7UUFDbkYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQzsrR0EzQ1UsaUJBQWlCO21IQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tfSBmcm9tICdyeGpzJztcbmltcG9ydCB7UHJldmlld0ZpbGV9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVSZWFkZXJSZXNwb25zZSB7XG4gIHR5cGU6ICdzdWNjZXNzJyB8ICdlcnJvcic7XG4gIGRhdGE/OiBBcnJheUJ1ZmZlcjtcbiAgdGV4dD86IHN0cmluZztcbiAganNvbj86IGFueTtcbiAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGaWxlUmVhZGVyU2VydmljZSB7XG4gIHByaXZhdGUgcmVzcG9uc2VTdWJqZWN0ID0gbmV3IFN1YmplY3Q8RmlsZVJlYWRlclJlc3BvbnNlPigpO1xuICBwcml2YXRlIGFzeW5jIHJlYWRGaWxlRGF0YShmaWxlOiBQcmV2aWV3RmlsZSwgZmlsZVR5cGU6ICdhcnJheWJ1ZmZlcicgfCAndGV4dCcgfCAnanNvbicpOiBQcm9taXNlPEZpbGVSZWFkZXJSZXNwb25zZT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGZpbGUudXJsKTtcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBIVFRQIGVycm9yISBzdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQ6IEZpbGVSZWFkZXJSZXNwb25zZSA9IHsgdHlwZTogJ3N1Y2Nlc3MnIH07XG5cbiAgICAgIHN3aXRjaCAoZmlsZVR5cGUpIHtcbiAgICAgICAgY2FzZSAnYXJyYXlidWZmZXInOlxuICAgICAgICAgIHJlc3VsdC5kYXRhID0gYXdhaXQgcmVzcG9uc2UuYXJyYXlCdWZmZXIoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgcmVzdWx0LnRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdC5qc29uID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICAgICAgICB9IGNhdGNoIChwYXJzZUVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSlNPTiBwYXJzZSBmYWlsZWQ6ICR7cGFyc2VFcnJvci5tZXNzYWdlfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJlYWRGaWxlKGZpbGU6IFByZXZpZXdGaWxlLCBmaWxlVHlwZTogJ2FycmF5YnVmZmVyJyB8ICd0ZXh0JyB8ICdqc29uJyA9ICdhcnJheWJ1ZmZlcicpOiBPYnNlcnZhYmxlPEZpbGVSZWFkZXJSZXNwb25zZT4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMucmVhZEZpbGVEYXRhKGZpbGUsIGZpbGVUeXBlKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlc3BvbnNlU3ViamVjdC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=