@atlaskit/editor-plugin-floating-toolbar
Version:
Floating toolbar plugin for @atlaskit/editor-core
28 lines (27 loc) • 1.22 kB
JavaScript
import { getNodeCopiedAnalyticsPayload } from '@atlaskit/editor-common/clipboard';
import { copyDomNode, getSelectedNodeOrNodeParentByNodeType, toDOM } from '@atlaskit/editor-common/copy-button';
export var copyNode = function copyNode(nodeType, editorAnalyticsApi, inputMethod) {
return function (_ref) {
var tr = _ref.tr;
// const { tr, schema } = state;
// This command should only be triggered by the Copy button in the floating toolbar
// which is only visible when selection is inside the target node
var contentNodeWithPos = getSelectedNodeOrNodeParentByNodeType({
nodeType: nodeType,
selection: tr.selection
});
if (!contentNodeWithPos) {
return tr;
}
var schema = tr.doc.type.schema;
var copyToClipboardTr = tr;
var domNode = toDOM(contentNodeWithPos.node, schema);
copyDomNode(domNode, contentNodeWithPos.node.type, tr.selection);
if (editorAnalyticsApi) {
var analyticsPayload = getNodeCopiedAnalyticsPayload(contentNodeWithPos.node, inputMethod);
editorAnalyticsApi.attachAnalyticsEvent(analyticsPayload)(copyToClipboardTr);
}
copyToClipboardTr.setMeta('scrollIntoView', false);
return copyToClipboardTr;
};
};