UNPKG

universal-choose-image

Version:
80 lines (70 loc) 2.26 kB
"use strict"; exports.__esModule = true; exports.default = void 0; function inputCreateAndAppend(multiple, accept) { var inputElement = document.createElement('INPUT'); inputElement.name = 'file'; inputElement.id = 'input-' + Math.random() * 1e8; inputElement.type = 'file'; multiple ? inputElement.setAttribute('multiple', 'multiple') : null; inputElement.style.display = 'none'; inputElement.setAttribute('accept', accept || 'image/*'); document.body.appendChild(inputElement); return inputElement; } function transformBase64(files) { return new Promise(function (resolve, reject) { !files.length ? reject() : null; var base64Array = []; var count = 0; files.forEach(function (file, index) { var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function (e) { // @ts-ignore base64Array[index] = e.target.result; }; reader.onloadend = function () { count++; if (count === files.length) { resolve(base64Array); } }; }); }); } var choose = function (options) { if (options === void 0) { options = {}; } return new Promise(function (resolve, reject) { var _options = options, _options$count = _options.count, count = _options$count === void 0 ? 1 : _options$count; var inputElement = inputCreateAndAppend(count > 1, options.accept); inputElement.addEventListener('change', function (e) { var files = e.target.files && Array.from(e.target.files).slice(0, count); if (options.disableConvert) { resolve({ data: [], files: files }); inputElement.remove && inputElement.remove(); } else { transformBase64(files).then(function (base64Array) { return resolve({ data: base64Array, files: files }); }).catch(reject).finally(function () { return inputElement.remove && inputElement.remove(); }); } }, false); var MouseEvents = document.createEvent('MouseEvents'); MouseEvents.initEvent('click', true, true); inputElement.dispatchEvent(MouseEvents); }); }; var _default = choose; exports.default = _default;