@atlaskit/editor-plugin-paste
Version:
Paste plugin for @atlaskit/editor-core
38 lines (37 loc) • 1.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.handleVSCodeBlock = handleVSCodeBlock;
var _constants = require("@atlaskit/code/constants");
var _utils = require("@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) {}
}
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 && _constants.SUPPORTED_LANGUAGES.some(function (l) {
return l.alias[0] === language;
})) {
var schema = state.schema;
slice = (0, _utils.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;
}