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.

53 lines 6.43 kB
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=