UNPKG

js-uploader

Version:
61 lines 2.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FilePicker = void 0; var rxjs_1 = require("rxjs"); var operators_1 = require("rxjs/operators"); var shared_1 = require("../../shared"); var FilePicker = /** @class */ (function () { function FilePicker(opts) { var _this = this; var $el = opts.$el, multiple = opts.multiple, directory = opts.directory, accept = opts.accept; if (!$el) { throw new Error(); } this.$el = $el instanceof HTMLInputElement ? $el : this.createInput(opts); // const reduceFile = () => // scheduled(this.$el.files as FileList, asapScheduler) // .pipe( // reduce((acc: File[], val) => { // acc.push(val) // return acc // }, []), // ) // .toPromise() this.setInputAttr(multiple, directory, accept); this.file$ = rxjs_1.fromEvent(this.$el, 'change').pipe(operators_1.delayWhen(function () { return rxjs_1.from(new Promise(setTimeout)); }), operators_1.filter(function () { var _a; return !!((_a = _this.$el.files) === null || _a === void 0 ? void 0 : _a.length); }), // mergeMap(() => from(reduceFile())), operators_1.map(function () { return Array.from(_this.$el.files); }), operators_1.tap(function (files) { _this.$el.value = ''; shared_1.Logger.info('FilePicker -> constructor -> files', files); })); } FilePicker.prototype.createInput = function (opts) { var $input = document.querySelector(opts.$el) || null; if (!$input) { var id = String(opts.$el).replace(/^[#.]*/, ''); $input = document.createElement('input'); $input.id = id; Object.assign($input.style, { visibility: 'hidden', position: 'absolute', width: '1px', height: '1px', top: '-1px', left: '-1px', }); document.body.append($input); } $input.setAttribute('type', 'file'); return $input; }; FilePicker.prototype.setInputAttr = function (multiple, directory, accept) { if (accept === void 0) { accept = []; } this.$el.setAttribute('type', 'file'); multiple && this.$el.setAttribute('multiple', 'multiple'); directory && this.$el.setAttribute('webkitdirectory', 'webkitdirectory'); (accept === null || accept === void 0 ? void 0 : accept.length) && this.$el.setAttribute('accept', accept.join()); }; return FilePicker; }()); exports.FilePicker = FilePicker; //# sourceMappingURL=FilePicker.js.map