UNPKG

@atlaskit/editor-plugin-media

Version:

Media plugin for @atlaskit/editor-core

192 lines (188 loc) 6.32 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _mediaPicker = require("@atlaskit/media-picker"); var PickerFacade = exports.default = /*#__PURE__*/function () { function PickerFacade(pickerType, config, pickerConfig, analyticsName) { var _this = this; (0, _classCallCheck2.default)(this, PickerFacade); (0, _defineProperty2.default)(this, "onDragListeners", []); (0, _defineProperty2.default)(this, "onStartListeners", []); (0, _defineProperty2.default)(this, "eventListeners", {}); (0, _defineProperty2.default)(this, "handleUploadPreviewUpdate", function (event) { var file = event.file, preview = event.preview; //check if upload-error was called before upload-preview-update var isErroredFile = _this.erroredFiles.has(file.id); var _ref = (0, _mediaPicker.isImagePreview)(preview) ? preview : { dimensions: undefined, scaleFactor: undefined }, dimensions = _ref.dimensions, scaleFactor = _ref.scaleFactor; var state = { id: file.id, fileName: file.name, fileSize: file.size, fileMimeType: file.type, collection: file.collectionName, dimensions: dimensions, scaleFactor: scaleFactor, status: isErroredFile ? 'error' : undefined }; _this.eventListeners[file.id] = []; _this.onStartListeners.forEach(function (cb) { return cb(state, function (evt) { return _this.subscribeStateChanged(file, evt); }, _this.analyticsName || _this.pickerType); }); }); (0, _defineProperty2.default)(this, "subscribeStateChanged", function (file, onStateChanged) { var subscribers = _this.eventListeners[file.id]; if (!subscribers) { return; } subscribers.push(onStateChanged); }); (0, _defineProperty2.default)(this, "handleUploadError", function (_ref2) { var error = _ref2.error, fileId = _ref2.fileId; var listeners = _this.eventListeners[fileId]; _this.erroredFiles.add(fileId); if (!listeners) { return; } listeners.forEach(function (cb) { return cb({ id: fileId, status: 'error', error: error && { description: error.description, name: error.name } }); }); // remove listeners delete _this.eventListeners[fileId]; }); (0, _defineProperty2.default)(this, "handleMobileUploadEnd", function (event) { var file = event.file; var listeners = _this.eventListeners[file.id]; if (!listeners) { return; } listeners.forEach(function (cb) { return cb({ id: file.id, status: 'mobile-upload-end', fileMimeType: file.type, collection: file.collectionName, publicId: file.publicId }); }); }); (0, _defineProperty2.default)(this, "handleReady", function (event) { var file = event.file; var listeners = _this.eventListeners[file.id]; if (!listeners) { return; } listeners.forEach(function (cb) { return cb({ id: file.id, status: 'ready' }); }); // remove listeners delete _this.eventListeners[file.id]; }); this.config = config; this.pickerConfig = pickerConfig; this.pickerType = pickerType; this.analyticsName = analyticsName; this.erroredFiles = new Set(); } (0, _createClass2.default)(PickerFacade, [{ key: "init", value: function () { var _init = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { var picker; return _regenerator.default.wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: if (this.pickerType === 'customMediaPicker') { picker = this.picker = this.pickerConfig; } if (picker) { _context.next = 3; break; } return _context.abrupt("return", this); case 3: picker.on('upload-preview-update', this.handleUploadPreviewUpdate); picker.on('upload-end', this.handleReady); picker.on('upload-error', this.handleUploadError); picker.on('mobile-upload-end', this.handleMobileUploadEnd); return _context.abrupt("return", this); case 8: case "end": return _context.stop(); } }, _callee, this); })); function init() { return _init.apply(this, arguments); } return init; }() }, { key: "type", get: function get() { return this.pickerType; } }, { key: "mediaPicker", get: function get() { return this.picker; } }, { key: "destroy", value: function destroy() { var picker = this.picker; if (!picker) { return; } picker.removeAllListeners('upload-preview-update'); picker.removeAllListeners('upload-end'); picker.removeAllListeners('upload-error'); this.onStartListeners = []; this.onDragListeners = []; } }, { key: "setUploadParams", value: function setUploadParams(params) { if (this.picker) { this.picker.setUploadParams(params); } } }, { key: "onNewMedia", value: function onNewMedia(cb) { this.onStartListeners.push(cb); } }, { key: "onDrag", value: function onDrag(cb) { this.onDragListeners.push(cb); } }]); return PickerFacade; }();