@atlaskit/editor-plugin-extension
Version:
editor-plugin-extension plugin for @atlaskit/editor-core
32 lines • 1.59 kB
JavaScript
import { getExtensionModuleNode } from '@atlaskit/editor-common/extensions';
import { updateState } from '../editor-commands/commands';
import { getSelectedExtension } from './utils';
const maybeGetExtensionModuleNode = async (view, extensionProvider) => {
const nodeWithPos = getSelectedExtension(view.state, true);
if (!nodeWithPos) {
throw new Error('There is no selection');
}
const {
extensionType,
extensionKey
} = nodeWithPos.node.attrs;
const extensionModuleNode = await getExtensionModuleNode(extensionProvider, extensionType, extensionKey);
const newNodeWithPos = getSelectedExtension(view.state, true);
if (newNodeWithPos && newNodeWithPos.node.attrs.extensionType === extensionType && newNodeWithPos.node.attrs.extensionKey === extensionKey && newNodeWithPos.pos === nodeWithPos.pos && extensionModuleNode) {
return extensionModuleNode;
}
};
export const updateEditButton = async (view, extensionProvider) => {
try {
const extensionModuleNode = await maybeGetExtensionModuleNode(view, extensionProvider);
const updateMethod = extensionModuleNode === null || extensionModuleNode === void 0 ? void 0 : extensionModuleNode.update;
updateState({
showEditButton: !!updateMethod,
showCopyButton: !(extensionModuleNode !== null && extensionModuleNode !== void 0 && extensionModuleNode.hideCopyButton),
updateExtension: updateMethod && Promise.resolve(updateMethod) || undefined
})(view.state, view.dispatch);
return updateMethod;
} catch {
// this exception is not important for this case, fail silently
}
};