UNPKG

@dotglitch/ngx-common

Version:

Angular components and utilities that are commonly used.

42 lines 7.64 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "./fetch.service"; /** * Service that listens for global keyboard events */ export class FileService { constructor(fetch) { this.fetch = fetch; this.chooseFile = (accept, multiple = false, formMetadata = {}) => { return new Promise(r => { const inEl = document.createElement('input'); inEl.setAttribute('type', 'file'); if (multiple) inEl.setAttribute('multiple', ''); if (accept) inEl.setAttribute('accept', accept); inEl.click(); let formData = new FormData(); inEl.addEventListener('change', () => { Object.keys(inEl.files).forEach(k => { const file = inEl.files[k]; const name = file.name; formData.append(name, file); }); formData.append("data", JSON.stringify(formMetadata)); inEl.remove(); r(formData); }); }); }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FileService, deps: [{ token: i1.Fetch }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FileService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FileService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.Fetch }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy9zZXJ2aWNlcy9maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBSTNDOztHQUVHO0FBSUgsTUFBTSxPQUFPLFdBQVc7SUFFcEIsWUFBb0IsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87UUFFaEMsZUFBVSxHQUFHLENBQUMsTUFBZSxFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQUUsWUFBWSxHQUFHLEVBQUUsRUFBSSxFQUFFO1lBQ3BFLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25CLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLFFBQVE7b0JBQ1IsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLElBQUksTUFBTTtvQkFDTixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFFeEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUViLElBQUksUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBRTlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO29CQUNqQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ2hDLE1BQU0sSUFBSSxHQU1OLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBRWxCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBQ3ZCLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQVcsQ0FBQyxDQUFDO29CQUN2QyxDQUFDLENBQUMsQ0FBQztvQkFDSCxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7b0JBQ3RELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDZCxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUM7SUFqQ2tDLENBQUM7OEdBRjVCLFdBQVc7a0hBQVgsV0FBVyxjQUZSLE1BQU07OzJGQUVULFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmV0Y2ggfSBmcm9tICcuL2ZldGNoLnNlcnZpY2UnO1xuXG5cbi8qKlxuICogU2VydmljZSB0aGF0IGxpc3RlbnMgZm9yIGdsb2JhbCBrZXlib2FyZCBldmVudHNcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZldGNoOiBGZXRjaCkgeyB9XG5cbiAgICBjaG9vc2VGaWxlID0gKGFjY2VwdD86IHN0cmluZywgbXVsdGlwbGUgPSBmYWxzZSwgZm9ybU1ldGFkYXRhID0ge30sICkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UociA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbkVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgICAgIGluRWwuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2ZpbGUnKTtcbiAgICAgICAgICAgIGlmIChtdWx0aXBsZSlcbiAgICAgICAgICAgICAgICBpbkVsLnNldEF0dHJpYnV0ZSgnbXVsdGlwbGUnLCAnJyk7XG4gICAgICAgICAgICBpZiAoYWNjZXB0KVxuICAgICAgICAgICAgICAgIGluRWwuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCBhY2NlcHQpO1xuXG4gICAgICAgICAgICBpbkVsLmNsaWNrKCk7XG5cbiAgICAgICAgICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgICAgICBpbkVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhpbkVsLmZpbGVzKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0TW9kaWZpZWQ6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RNb2RpZmllZERhdGU6IERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIH0gPSBpbkVsLmZpbGVzW2tdO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChuYW1lLCBmaWxlIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKFwiZGF0YVwiLCBKU09OLnN0cmluZ2lmeShmb3JtTWV0YWRhdGEpKTtcbiAgICAgICAgICAgICAgICBpbkVsLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIHIoZm9ybURhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvLyB1cGxvYWRGaWxlID0gKGNvbmZpZzogTmd4RmlsZU1hbmFnZXJDb25maWd1cmF0aW9uLCBjdXJyZW50RGlyZWN0b3J5OiBzdHJpbmcsIHRhcmdldFBhdGg/OiBzdHJpbmcpID0+IHtcbiAgICAvLyAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHIgPT4ge1xuICAgIC8vICAgICAgICAgY29uc3QgaW5FbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgLy8gICAgICAgICBpbkVsLnNldEF0dHJpYnV0ZSgndHlwZScsICdmaWxlJyk7XG4gICAgLy8gICAgICAgICBpbkVsLnNldEF0dHJpYnV0ZSgnbXVsdGlwbGUnLCAnJyk7XG4gICAgLy8gICAgICAgICBpbkVsLmNsaWNrKCk7XG5cbiAgICAvLyAgICAgICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgLy8gICAgICAgICBpbkVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHtcbiAgICAvLyAgICAgICAgICAgICBPYmplY3Qua2V5cyhpbkVsLmZpbGVzKS5mb3JFYWNoKGsgPT4ge1xuICAgIC8vICAgICAgICAgICAgICAgICBjb25zdCBmaWxlOiB7XG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBsYXN0TW9kaWZpZWQ6IG51bWJlcixcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGxhc3RNb2RpZmllZERhdGU6IERhdGUsXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBzaXplOiBudW1iZXIsXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmc7XG4gICAgLy8gICAgICAgICAgICAgICAgIH0gPSBpbkVsLmZpbGVzW2tdO1xuXG4gICAgLy8gICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWU7XG4gICAgLy8gICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChuYW1lLCBmaWxlIGFzIGFueSk7XG4gICAgLy8gICAgICAgICAgICAgfSk7XG4gICAgLy8gICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKFwiZGF0YVwiLCBKU09OLnN0cmluZ2lmeSh7XG4gICAgLy8gICAgICAgICAgICAgICAgIHBhdGg6IGN1cnJlbnREaXJlY3RvcnlcbiAgICAvLyAgICAgICAgICAgICB9KSk7XG5cbiAgICAvLyAgICAgICAgICAgICBjb25zdCB1cmwgPSBjb25maWcuYXBpU2V0dGluZ3MudXBsb2FkRW50cnlVcmxUZW1wbGF0ZVxuICAgIC8vICAgICAgICAgICAgICAgICA/IGNvbmZpZy5hcGlTZXR0aW5ncy51cGxvYWRFbnRyeVVybFRlbXBsYXRlKHRhcmdldFBhdGggPz8gY3VycmVudERpcmVjdG9yeSlcbiAgICAvLyAgICAgICAgICAgICAgICAgOiBjb25maWcuYXBpU2V0dGluZ3MudXBsb2FkRW50cnlVcmw7XG5cbiAgICAvLyAgICAgICAgICAgICByKHRoaXMuZmV0Y2gucG9zdCh1cmwsIGZvcm1EYXRhKS50aGVuKHJlcyA9PiB7XG4gICAgLy8gICAgICAgICAgICAgICAgIGluRWwucmVtb3ZlKCk7XG4gICAgLy8gICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgLy8gICAgICAgICAgICAgfSkpO1xuICAgIC8vICAgICAgICAgfSk7XG4gICAgLy8gICAgIH0pO1xuICAgIC8vIH07XG59XG4iXX0=