@atlaskit/editor-plugin-extension
Version:
editor-plugin-extension plugin for @atlaskit/editor-core
75 lines (74 loc) • 3.4 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.updateEditButton = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _extensions = require("@atlaskit/editor-common/extensions");
var _commands = require("../editor-commands/commands");
var _utils = require("./utils");
var maybeGetUpdateMethodFromExtensionProvider = /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(view, extensionProvider) {
var nodeWithPos, _nodeWithPos$node$att, extensionType, extensionKey, extensionModuleNode, newNodeWithPos;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
nodeWithPos = (0, _utils.getSelectedExtension)(view.state, true);
if (nodeWithPos) {
_context.next = 3;
break;
}
throw new Error('There is no selection');
case 3:
_nodeWithPos$node$att = nodeWithPos.node.attrs, extensionType = _nodeWithPos$node$att.extensionType, extensionKey = _nodeWithPos$node$att.extensionKey;
_context.next = 6;
return (0, _extensions.getExtensionModuleNode)(extensionProvider, extensionType, extensionKey);
case 6:
extensionModuleNode = _context.sent;
newNodeWithPos = (0, _utils.getSelectedExtension)(view.state, true);
if (!(newNodeWithPos && newNodeWithPos.node.attrs.extensionType === extensionType && newNodeWithPos.node.attrs.extensionKey === extensionKey && newNodeWithPos.pos === nodeWithPos.pos && extensionModuleNode)) {
_context.next = 10;
break;
}
return _context.abrupt("return", extensionModuleNode.update);
case 10:
case "end":
return _context.stop();
}
}, _callee);
}));
return function maybeGetUpdateMethodFromExtensionProvider(_x, _x2) {
return _ref.apply(this, arguments);
};
}();
var updateEditButton = exports.updateEditButton = /*#__PURE__*/function () {
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(view, extensionProvider) {
var updateMethod;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
_context2.prev = 0;
_context2.next = 3;
return maybeGetUpdateMethodFromExtensionProvider(view, extensionProvider);
case 3:
updateMethod = _context2.sent;
(0, _commands.updateState)({
showEditButton: !!updateMethod,
updateExtension: updateMethod && Promise.resolve(updateMethod) || undefined
})(view.state, view.dispatch);
return _context2.abrupt("return", updateMethod);
case 8:
_context2.prev = 8;
_context2.t0 = _context2["catch"](0);
case 10:
case "end":
return _context2.stop();
}
}, _callee2, null, [[0, 8]]);
}));
return function updateEditButton(_x3, _x4) {
return _ref2.apply(this, arguments);
};
}();