@atlaskit/editor-plugin-extension
Version:
editor-plugin-extension plugin for @atlaskit/editor-core
68 lines • 3.08 kB
JavaScript
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
import _regeneratorRuntime from "@babel/runtime/regenerator";
import { getExtensionModuleNode } from '@atlaskit/editor-common/extensions';
import { updateState } from '../editor-commands/commands';
import { getSelectedExtension } from './utils';
var maybeGetUpdateMethodFromExtensionProvider = /*#__PURE__*/function () {
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(view, extensionProvider) {
var nodeWithPos, _nodeWithPos$node$att, extensionType, extensionKey, extensionModuleNode, newNodeWithPos;
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
nodeWithPos = 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 getExtensionModuleNode(extensionProvider, extensionType, extensionKey);
case 6:
extensionModuleNode = _context.sent;
newNodeWithPos = 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);
};
}();
export var updateEditButton = /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(view, extensionProvider) {
var updateMethod;
return _regeneratorRuntime.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;
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);
};
}();