UNPKG

@atlaskit/editor-plugin-media

Version:

Media plugin for @atlaskit/editor-core

747 lines (746 loc) 32.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.MediaNodeUpdater = 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 _v = _interopRequireDefault(require("uuid/v4")); var _analytics = require("@atlaskit/editor-common/analytics"); var _mediaSingle = require("@atlaskit/editor-common/media-single"); var _mediaClient = require("@atlaskit/media-client"); var _mediaClientReact = require("@atlaskit/media-client-react"); var _helpers = require("../commands/helpers"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var MediaNodeUpdater = exports.MediaNodeUpdater = /*#__PURE__*/function () { function MediaNodeUpdater(props) { var _this = this; (0, _classCallCheck2.default)(this, MediaNodeUpdater); // Updates the node with contextId if it doesn't have one already // TODO [MS-2258]: remove updateContextId in order to only use updateMediaSingleFileAttrs (0, _defineProperty2.default)(this, "updateContextId", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { var attrs, id, objectId; return _regenerator.default.wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: attrs = _this.getAttrs(); if (!(!attrs || attrs.type !== 'file')) { _context.next = 3; break; } return _context.abrupt("return"); case 3: id = attrs.id; _context.next = 6; return _this.getObjectId(); case 6: objectId = _context.sent; (0, _helpers.updateAllMediaSingleNodesAttrs)(id, { __contextId: objectId })(_this.props.view.state, _this.props.view.dispatch); case 8: case "end": return _context.stop(); } }, _callee); }))); (0, _defineProperty2.default)(this, "updateNodeContextId", /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(getPos) { var attrs, objectId; return _regenerator.default.wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: attrs = _this.getAttrs(); if (!((attrs === null || attrs === void 0 ? void 0 : attrs.type) !== 'file')) { _context2.next = 3; break; } return _context2.abrupt("return"); case 3: _context2.next = 5; return _this.getObjectId(); case 5: objectId = _context2.sent; (0, _helpers.updateCurrentMediaNodeAttrs)({ __contextId: objectId }, { node: _this.props.node, getPos: getPos })(_this.props.view.state, _this.props.view.dispatch); case 7: case "end": return _context2.stop(); } }, _callee2); })); return function (_x) { return _ref2.apply(this, arguments); }; }()); (0, _defineProperty2.default)(this, "hasFileAttributesDefined", function (attrs) { return attrs && attrs.type === 'file' && attrs.__fileName && attrs.__fileMimeType && attrs.__fileSize && attrs.__contextId; }); (0, _defineProperty2.default)(this, "getNewFileAttrsForNode", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() { var attrs, mediaProvider, mediaClientConfig, mediaClient, fileState, id, collectionName, contextId, _fileState, name, mimeType, size, newAttrs; return _regenerator.default.wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: attrs = _this.getAttrs(); _context3.next = 3; return _this.props.mediaProvider; case 3: mediaProvider = _context3.sent; if (!(!mediaProvider || !mediaProvider.uploadParams || !attrs || attrs.type !== 'file' || _this.hasFileAttributesDefined(attrs))) { _context3.next = 6; break; } return _context3.abrupt("return"); case 6: mediaClientConfig = mediaProvider.viewMediaClientConfig; mediaClient = (0, _mediaClientReact.getMediaClient)(mediaClientConfig); id = attrs.id, collectionName = attrs.collection; _context3.prev = 9; _context3.next = 12; return mediaClient.file.getCurrentState(id, { collectionName: collectionName }); case 12: fileState = _context3.sent; if (!(fileState.status === 'error')) { _context3.next = 15; break; } return _context3.abrupt("return"); case 15: _context3.next = 20; break; case 17: _context3.prev = 17; _context3.t0 = _context3["catch"](9); return _context3.abrupt("return"); case 20: _context3.t1 = _this.getNodeContextId(); if (_context3.t1) { _context3.next = 25; break; } _context3.next = 24; return _this.getObjectId(); case 24: _context3.t1 = _context3.sent; case 25: contextId = _context3.t1; _fileState = fileState, name = _fileState.name, mimeType = _fileState.mimeType, size = _fileState.size; newAttrs = { __fileName: name, __fileMimeType: mimeType, __fileSize: size, __contextId: contextId }; if (hasPrivateAttrsChanged(attrs, newAttrs)) { _context3.next = 30; break; } return _context3.abrupt("return"); case 30: return _context3.abrupt("return", newAttrs); case 31: case "end": return _context3.stop(); } }, _callee3, null, [[9, 17]]); }))); (0, _defineProperty2.default)(this, "updateMediaSingleFileAttrs", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() { var newAttrs, _ref5, id; return _regenerator.default.wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: _context4.next = 2; return _this.getNewFileAttrsForNode(); case 2: newAttrs = _context4.sent; _ref5 = _this.getAttrs(), id = _ref5.id; if (id && newAttrs) { (0, _helpers.updateAllMediaSingleNodesAttrs)(id, newAttrs)(_this.props.view.state, _this.props.view.dispatch); } case 5: case "end": return _context4.stop(); } }, _callee4); }))); (0, _defineProperty2.default)(this, "updateNodeAttrs", /*#__PURE__*/function () { var _ref6 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(getPos) { var newAttrs; return _regenerator.default.wrap(function _callee5$(_context5) { while (1) switch (_context5.prev = _context5.next) { case 0: _context5.next = 2; return _this.getNewFileAttrsForNode(); case 2: newAttrs = _context5.sent; if (newAttrs) { (0, _helpers.updateCurrentMediaNodeAttrs)(newAttrs, { node: _this.props.node, getPos: getPos })(_this.props.view.state, _this.props.view.dispatch); } case 4: case "end": return _context5.stop(); } }, _callee5); })); return function (_x2) { return _ref6.apply(this, arguments); }; }()); (0, _defineProperty2.default)(this, "getAttrs", function () { var attrs = _this.props.node.attrs; if (attrs) { return attrs; } return undefined; }); (0, _defineProperty2.default)(this, "getObjectId", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() { var contextIdentifierProvider; return _regenerator.default.wrap(function _callee6$(_context6) { while (1) switch (_context6.prev = _context6.next) { case 0: _context6.next = 2; return _this.props.contextIdentifierProvider; case 2: contextIdentifierProvider = _context6.sent; return _context6.abrupt("return", (contextIdentifierProvider === null || contextIdentifierProvider === void 0 ? void 0 : contextIdentifierProvider.objectId) || null); case 4: case "end": return _context6.stop(); } }, _callee6); }))); (0, _defineProperty2.default)(this, "uploadExternalMedia", /*#__PURE__*/function () { var _ref8 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(getPos) { var node, mediaProvider, uploadMediaClientConfig, mediaClient, collection, uploader, uploadableFileUpfrontIds, dimensions, pos; return _regenerator.default.wrap(function _callee7$(_context7) { while (1) switch (_context7.prev = _context7.next) { case 0: node = _this.props.node; _context7.next = 3; return _this.props.mediaProvider; case 3: mediaProvider = _context7.sent; if (!(node && mediaProvider)) { _context7.next = 24; break; } uploadMediaClientConfig = mediaProvider.uploadMediaClientConfig; if (!(!uploadMediaClientConfig || !node.attrs.url)) { _context7.next = 8; break; } return _context7.abrupt("return"); case 8: mediaClient = (0, _mediaClientReact.getMediaClient)(uploadMediaClientConfig); collection = mediaProvider.uploadParams && mediaProvider.uploadParams.collection; _context7.prev = 10; _context7.next = 13; return mediaClient.file.uploadExternal(node.attrs.url, collection); case 13: uploader = _context7.sent; uploadableFileUpfrontIds = uploader.uploadableFileUpfrontIds, dimensions = uploader.dimensions; pos = getPos(); if (!(typeof pos !== 'number')) { _context7.next = 18; break; } return _context7.abrupt("return"); case 18: (0, _helpers.replaceExternalMedia)(pos + 1, { id: uploadableFileUpfrontIds.id, collection: collection, height: dimensions.height, width: dimensions.width, occurrenceKey: uploadableFileUpfrontIds.occurrenceKey })(_this.props.view.state, _this.props.view.dispatch); _context7.next = 24; break; case 21: _context7.prev = 21; _context7.t0 = _context7["catch"](10); //keep it as external media if (_this.props.dispatchAnalyticsEvent) { _this.props.dispatchAnalyticsEvent({ action: _analytics.ACTION.UPLOAD_EXTERNAL_FAIL, actionSubject: _analytics.ACTION_SUBJECT.EDITOR, eventType: _analytics.EVENT_TYPE.OPERATIONAL }); } case 24: case "end": return _context7.stop(); } }, _callee7, null, [[10, 21]]); })); return function (_x3) { return _ref8.apply(this, arguments); }; }()); (0, _defineProperty2.default)(this, "getNodeContextId", function () { var attrs = _this.getAttrs(); if (!attrs || attrs.type !== 'file') { return null; } return attrs.__contextId || null; }); (0, _defineProperty2.default)(this, "updateDimensions", function (dimensions) { (0, _helpers.updateAllMediaSingleNodesAttrs)(dimensions.id, { height: dimensions.height, width: dimensions.width })(_this.props.view.state, _this.props.view.dispatch); }); (0, _defineProperty2.default)(this, "hasDifferentContextId", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() { var nodeContextId, currentContextId; return _regenerator.default.wrap(function _callee8$(_context8) { while (1) switch (_context8.prev = _context8.next) { case 0: nodeContextId = _this.getNodeContextId(); _context8.next = 3; return _this.getObjectId(); case 3: currentContextId = _context8.sent; if (!(nodeContextId && currentContextId && nodeContextId !== currentContextId)) { _context8.next = 6; break; } return _context8.abrupt("return", true); case 6: return _context8.abrupt("return", false); case 7: case "end": return _context8.stop(); } }, _callee8); }))); (0, _defineProperty2.default)(this, "isNodeFromDifferentCollection", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() { var mediaProvider, currentCollectionName, attrs, nodeCollection, __contextId, contextId; return _regenerator.default.wrap(function _callee9$(_context9) { while (1) switch (_context9.prev = _context9.next) { case 0: _context9.next = 2; return _this.props.mediaProvider; case 2: mediaProvider = _context9.sent; if (!(!mediaProvider || !mediaProvider.uploadParams)) { _context9.next = 5; break; } return _context9.abrupt("return", false); case 5: currentCollectionName = mediaProvider.uploadParams.collection; attrs = _this.getAttrs(); if (!(!attrs || attrs.type !== 'file')) { _context9.next = 9; break; } return _context9.abrupt("return", false); case 9: nodeCollection = attrs.collection, __contextId = attrs.__contextId; _context9.t0 = __contextId; if (_context9.t0) { _context9.next = 15; break; } _context9.next = 14; return _this.getObjectId(); case 14: _context9.t0 = _context9.sent; case 15: contextId = _context9.t0; if (!(contextId && currentCollectionName !== nodeCollection)) { _context9.next = 18; break; } return _context9.abrupt("return", true); case 18: return _context9.abrupt("return", false); case 19: case "end": return _context9.stop(); } }, _callee9); }))); (0, _defineProperty2.default)(this, "copyNodeFromBlobUrl", /*#__PURE__*/function () { var _ref11 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(getPos) { var attrs, url, mediaAttrs, mediaProvider, currentCollectionName, contextId, id, collection, height, width, mimeType, name, size, uploadMediaClientConfig, mediaClient, auth, source, destination, mediaFile, pos; return _regenerator.default.wrap(function _callee10$(_context10) { while (1) switch (_context10.prev = _context10.next) { case 0: attrs = _this.getAttrs(); if (!(!attrs || attrs.type !== 'external')) { _context10.next = 3; break; } return _context10.abrupt("return"); case 3: url = attrs.url; mediaAttrs = (0, _mediaClient.getAttrsFromUrl)(url); if (mediaAttrs) { _context10.next = 7; break; } return _context10.abrupt("return"); case 7: _context10.next = 9; return _this.props.mediaProvider; case 9: mediaProvider = _context10.sent; if (!(!mediaProvider || !mediaProvider.uploadParams)) { _context10.next = 12; break; } return _context10.abrupt("return"); case 12: currentCollectionName = mediaProvider.uploadParams.collection; contextId = mediaAttrs.contextId, id = mediaAttrs.id, collection = mediaAttrs.collection, height = mediaAttrs.height, width = mediaAttrs.width, mimeType = mediaAttrs.mimeType, name = mediaAttrs.name, size = mediaAttrs.size; uploadMediaClientConfig = mediaProvider.uploadMediaClientConfig; if (!(!uploadMediaClientConfig || !uploadMediaClientConfig.getAuthFromContext)) { _context10.next = 17; break; } return _context10.abrupt("return"); case 17: mediaClient = (0, _mediaClientReact.getMediaClient)(uploadMediaClientConfig); _context10.next = 20; return uploadMediaClientConfig.getAuthFromContext(contextId); case 20: auth = _context10.sent; source = { id: id, collection: collection, authProvider: function authProvider() { return Promise.resolve(auth); } }; destination = { collection: currentCollectionName, authProvider: uploadMediaClientConfig.authProvider, occurrenceKey: (0, _v.default)() }; _context10.next = 25; return mediaClient.file.copyFile(source, destination); case 25: mediaFile = _context10.sent; pos = getPos(); if (!(typeof pos !== 'number')) { _context10.next = 29; break; } return _context10.abrupt("return"); case 29: (0, _helpers.replaceExternalMedia)(pos + 1, { id: mediaFile.id, collection: currentCollectionName, height: height, width: width, __fileName: name, __fileMimeType: mimeType, __fileSize: size })(_this.props.view.state, _this.props.view.dispatch); case 30: case "end": return _context10.stop(); } }, _callee10); })); return function (_x4) { return _ref11.apply(this, arguments); }; }()); // Copies the pasted node into the current collection using a getPos handler (0, _defineProperty2.default)(this, "copyNodeFromPos", /*#__PURE__*/function () { var _ref12 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(getPos, traceContext) { var attrs, copiedAttrs; return _regenerator.default.wrap(function _callee11$(_context11) { while (1) switch (_context11.prev = _context11.next) { case 0: attrs = _this.getAttrs(); if (!((attrs === null || attrs === void 0 ? void 0 : attrs.type) !== 'file')) { _context11.next = 3; break; } return _context11.abrupt("return"); case 3: _context11.next = 5; return _this.copyFile(attrs.id, attrs.collection, traceContext); case 5: copiedAttrs = _context11.sent; if (copiedAttrs) { _context11.next = 8; break; } return _context11.abrupt("return"); case 8: (0, _helpers.updateCurrentMediaNodeAttrs)(copiedAttrs, { node: _this.props.node, getPos: getPos })(_this.props.view.state, _this.props.view.dispatch); case 9: case "end": return _context11.stop(); } }, _callee11); })); return function (_x5, _x6) { return _ref12.apply(this, arguments); }; }()); // Copies the pasted node into the current collection (0, _defineProperty2.default)(this, "copyNode", /*#__PURE__*/function () { var _ref13 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(traceContext) { var attrs, view, copiedAttrs; return _regenerator.default.wrap(function _callee12$(_context12) { while (1) switch (_context12.prev = _context12.next) { case 0: attrs = _this.getAttrs(); view = _this.props.view; if (!((attrs === null || attrs === void 0 ? void 0 : attrs.type) !== 'file')) { _context12.next = 4; break; } return _context12.abrupt("return"); case 4: _context12.next = 6; return _this.copyFile(attrs.id, attrs.collection, traceContext); case 6: copiedAttrs = _context12.sent; if (copiedAttrs) { _context12.next = 9; break; } return _context12.abrupt("return"); case 9: (0, _helpers.updateMediaSingleNodeAttrs)(attrs.id, copiedAttrs)(view.state, view.dispatch); case 10: case "end": return _context12.stop(); } }, _callee12); })); return function (_x7) { return _ref13.apply(this, arguments); }; }()); (0, _defineProperty2.default)(this, "copyFile", /*#__PURE__*/function () { var _ref14 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(id, collection, traceContext) { var mediaProvider, nodeContextId, uploadMediaClientConfig, mediaClient, auth, objectId, source, currentCollectionName, destination, mediaFile; return _regenerator.default.wrap(function _callee13$(_context13) { while (1) switch (_context13.prev = _context13.next) { case 0: _context13.next = 2; return _this.props.mediaProvider; case 2: mediaProvider = _context13.sent; if (mediaProvider !== null && mediaProvider !== void 0 && mediaProvider.uploadParams) { _context13.next = 5; break; } return _context13.abrupt("return"); case 5: nodeContextId = _this.getNodeContextId(); uploadMediaClientConfig = mediaProvider.uploadMediaClientConfig; if (!(!(uploadMediaClientConfig !== null && uploadMediaClientConfig !== void 0 && uploadMediaClientConfig.getAuthFromContext) || !nodeContextId)) { _context13.next = 9; break; } return _context13.abrupt("return"); case 9: mediaClient = (0, _mediaClientReact.getMediaClient)(uploadMediaClientConfig); _context13.next = 12; return uploadMediaClientConfig.getAuthFromContext(nodeContextId); case 12: auth = _context13.sent; _context13.next = 15; return _this.getObjectId(); case 15: objectId = _context13.sent; source = { id: id, collection: collection, authProvider: function authProvider() { return Promise.resolve(auth); } }; currentCollectionName = mediaProvider.uploadParams.collection; destination = { collection: currentCollectionName, authProvider: uploadMediaClientConfig.authProvider, occurrenceKey: (0, _v.default)() }; _context13.next = 21; return mediaClient.file.copyFile(source, destination, undefined, traceContext); case 21: mediaFile = _context13.sent; return _context13.abrupt("return", { id: mediaFile.id, collection: currentCollectionName, __contextId: objectId }); case 23: case "end": return _context13.stop(); } }, _callee13); })); return function (_x8, _x9, _x10) { return _ref14.apply(this, arguments); }; }()); this.props = props; } (0, _createClass2.default)(MediaNodeUpdater, [{ key: "setProps", value: function setProps(newComponentProps) { this.props = _objectSpread(_objectSpread({}, this.props), newComponentProps); } }, { key: "isMediaBlobUrl", value: function isMediaBlobUrl() { var attrs = this.getAttrs(); return !!(attrs && attrs.type === 'external' && (0, _mediaClient.isMediaBlobUrl)(attrs.url)); } }, { key: "getRemoteDimensions", value: function () { var _getRemoteDimensions = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14() { var mediaProvider, mediaOptions, attrs, height, width, id, collection, viewMediaClientConfig, mediaClient, currentState, imageMetadata; return _regenerator.default.wrap(function _callee14$(_context14) { while (1) switch (_context14.prev = _context14.next) { case 0: _context14.next = 2; return this.props.mediaProvider; case 2: mediaProvider = _context14.sent; mediaOptions = this.props.mediaOptions; attrs = this.getAttrs(); if (!(!mediaProvider || !attrs)) { _context14.next = 7; break; } return _context14.abrupt("return", false); case 7: height = attrs.height, width = attrs.width; if (!(attrs.type === 'external' || !attrs.id)) { _context14.next = 10; break; } return _context14.abrupt("return", false); case 10: id = attrs.id, collection = attrs.collection; if (!(height && width)) { _context14.next = 13; break; } return _context14.abrupt("return", false); case 13: if (!(mediaOptions && !mediaOptions.allowRemoteDimensionsFetch)) { _context14.next = 15; break; } return _context14.abrupt("return", { id: id, height: _mediaSingle.DEFAULT_IMAGE_HEIGHT, width: _mediaSingle.DEFAULT_IMAGE_WIDTH }); case 15: viewMediaClientConfig = mediaProvider.viewMediaClientConfig; mediaClient = (0, _mediaClientReact.getMediaClient)(viewMediaClientConfig); _context14.next = 19; return mediaClient.file.getCurrentState(id, { collectionName: collection }); case 19: currentState = _context14.sent; if ((0, _mediaClient.isImageRepresentationReady)(currentState)) { _context14.next = 22; break; } return _context14.abrupt("return", false); case 22: _context14.next = 24; return mediaClient.getImageMetadata(id, { collection: collection }); case 24: imageMetadata = _context14.sent; if (!(!imageMetadata || !imageMetadata.original)) { _context14.next = 27; break; } return _context14.abrupt("return", false); case 27: return _context14.abrupt("return", { id: id, height: imageMetadata.original.height || _mediaSingle.DEFAULT_IMAGE_HEIGHT, width: imageMetadata.original.width || _mediaSingle.DEFAULT_IMAGE_WIDTH }); case 28: case "end": return _context14.stop(); } }, _callee14, this); })); function getRemoteDimensions() { return _getRemoteDimensions.apply(this, arguments); } return getRemoteDimensions; }() }, { key: "handleExternalMedia", value: function () { var _handleExternalMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15(getPos) { return _regenerator.default.wrap(function _callee15$(_context15) { while (1) switch (_context15.prev = _context15.next) { case 0: if (!this.isMediaBlobUrl()) { _context15.next = 12; break; } _context15.prev = 1; _context15.next = 4; return this.copyNodeFromBlobUrl(getPos); case 4: _context15.next = 10; break; case 6: _context15.prev = 6; _context15.t0 = _context15["catch"](1); _context15.next = 10; return this.uploadExternalMedia(getPos); case 10: _context15.next = 14; break; case 12: _context15.next = 14; return this.uploadExternalMedia(getPos); case 14: case "end": return _context15.stop(); } }, _callee15, this, [[1, 6]]); })); function handleExternalMedia(_x11) { return _handleExternalMedia.apply(this, arguments); } return handleExternalMedia; }() }]); return MediaNodeUpdater; }(); var hasPrivateAttrsChanged = function hasPrivateAttrsChanged(currentAttrs, newAttrs) { return currentAttrs.__fileName !== newAttrs.__fileName || currentAttrs.__fileMimeType !== newAttrs.__fileMimeType || currentAttrs.__fileSize !== newAttrs.__fileSize || currentAttrs.__contextId !== newAttrs.__contextId; };