@dotglitch/ngx-common
Version:
Angular components and utilities that are commonly used.
42 lines • 7.64 kB
JavaScript
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=