UNPKG

@atlaskit/editor-core

Version:

A package contains Atlassian editor core functionality

86 lines 3.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var HAS_BASE64_FILE_SUPPORT = typeof File !== 'undefined' && typeof FileReader !== 'undefined' && typeof FileList !== 'undefined' && typeof Blob !== 'undefined'; var getPasteFiles = function (clipboardData) { if (!clipboardData) { return []; } var items = Array.prototype.reduce.call(clipboardData.items || [], function (filesArr, item) { if (item.kind === 'file') { filesArr.push(item.getAsFile()); } return filesArr; }, []); return items.concat(Array.prototype.slice.call(clipboardData.files || [], 0)); }; var Converter = (function () { function Converter(supportedTypes, maxFileSizeInBytes) { this.HAS_BASE64_FILE_SUPPORT = HAS_BASE64_FILE_SUPPORT; this.supportedTypes = supportedTypes; this.maxFileSizeInBytes = maxFileSizeInBytes; } Converter.prototype.convert = function (files, fn, errFn) { var _this = this; if (fn === void 0) { fn = function (base64src) { }; } if (errFn === void 0) { errFn = function (file) { }; } if (files && files[0]) { files.forEach(function (file) { var mimeType = file.type; if (file.size > _this.maxFileSizeInBytes || !_this.supportedTypes.some(function (fileType) { return mimeType.indexOf(fileType) !== -1; })) { errFn(file); } var reader = new FileReader(); reader.onerror = function (e) { errFn(file); }; var onLoadBinaryString = function (readerEvt) { var binarySrc = btoa(readerEvt.target.result); fn("data:" + mimeType + ";base64," + binarySrc); }; var onLoadDataUrl = function (readerEvt) { fn(readerEvt.target.result); }; if ('readAsDataURL' in reader) { reader.onload = onLoadDataUrl; reader.readAsDataURL(file); } else { reader.onload = onLoadBinaryString; reader.readAsBinaryString(file); } }); } }; return Converter; }()); exports.Converter = Converter; function dropHandler(converter, e, fn) { if (!converter.HAS_BASE64_FILE_SUPPORT || !(e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files.length)) { return false; } var files = Array.prototype.slice.call(e.dataTransfer.files); converter.convert(files, function (src) { return fn({ src: src }); }); return true; } exports.dropHandler = dropHandler; function pasteHandler(converter, e, fn) { var pastedFiles = getPasteFiles(e.clipboardData); if (!converter.HAS_BASE64_FILE_SUPPORT || !pastedFiles.length) { return false; } if (pastedFiles.length) { converter.convert(pastedFiles, function (src) { fn({ src: src }); }); return true; } return false; } exports.pasteHandler = pasteHandler; //# sourceMappingURL=base64fileconverter.js.map