UNPKG

@r3l/app

Version:
116 lines (90 loc) 3.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useDrop = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _utils = require("../../../utils"); var useDrop = function useDrop(insertImages) { var _useState = (0, _react.useState)([]), _useState2 = (0, _slicedToArray2.default)(_useState, 2), imageUrls = _useState2[0], setImageUrls = _useState2[1]; var _useState3 = (0, _react.useState)(false), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), uploading = _useState4[0], setUploading = _useState4[1]; var onDrop = (0, _react.useCallback)(function (acceptedFiles) { // Do something with the files setUploading(true); var imageUrlPromises = acceptedFiles.map( /*#__PURE__*/function () { var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(file) { var binaryStr, url, allImageUrls; return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.prev = 0; _context.next = 3; return readFileAsync(file); case 3: binaryStr = _context.sent; if (!(binaryStr == null || !(binaryStr instanceof ArrayBuffer))) { _context.next = 6; break; } throw new Error('Error processing file'); case 6: _context.next = 8; return (0, _utils.uploadFile)(binaryStr, file.type); case 8: url = _context.sent; insertImages("![your image will appear here](".concat(url, ")")); return _context.abrupt("return", url); case 13: _context.prev = 13; _context.t0 = _context["catch"](0); (0, _utils.UAlert)("Error uploading image: ".concat(_context.t0.message)); setUploading(false); case 17: _context.next = 19; return Promise.all(imageUrlPromises); case 19: allImageUrls = _context.sent; setImageUrls(allImageUrls); setUploading(false); case 22: case "end": return _context.stop(); } } }, _callee, null, [[0, 13]]); })); return function (_x) { return _ref.apply(this, arguments); }; }()); }, []); return [onDrop, uploading, imageUrls]; }; exports.useDrop = useDrop; function readFileAsync(file) { return new Promise(function (resolve, reject) { var reader = new FileReader(); reader.onload = function () { return resolve(reader.result); }; reader.onabort = function () { return reject(new Error('File reading was aborted')); }; reader.onerror = function (err) { return reject(err); }; reader.readAsArrayBuffer(file); }); } //# sourceMappingURL=hooks.js.map