@atlaskit/editor-plugin-paste
Version:
Paste plugin for @atlaskit/editor-core
32 lines • 1.34 kB
JavaScript
import { SUPPORTED_LANGUAGES } from '@atlaskit/code/constants';
import { mapSlice } from '@atlaskit/editor-common/utils';
function safelyGetVSCodeLanguage(editorData) {
try {
var vscodeData = editorData ? JSON.parse(editorData) : undefined;
return vscodeData === null || vscodeData === void 0 ? void 0 : vscodeData.mode;
} catch (_unused) {}
}
export function handleVSCodeBlock(_ref) {
var _event$clipboardData;
var state = _ref.state,
slice = _ref.slice,
text = _ref.text,
event = _ref.event;
var vscodeData = event === null || event === void 0 || (_event$clipboardData = event.clipboardData) === null || _event$clipboardData === void 0 ? void 0 : _event$clipboardData.getData('vscode-editor-data');
var language = safelyGetVSCodeLanguage(vscodeData);
if (text && language && SUPPORTED_LANGUAGES.some(function (l) {
return l.alias[0] === language;
})) {
var schema = state.schema;
slice = mapSlice(slice, function (node) {
var _schema$nodes$codeBlo;
if (node.type.name === ((_schema$nodes$codeBlo = schema.nodes.codeBlock) === null || _schema$nodes$codeBlo === void 0 ? void 0 : _schema$nodes$codeBlo.name)) {
return schema.nodes.codeBlock.createChecked({
language: language
}, schema.text(text));
}
return node;
});
}
return slice;
}