UNPKG

@atlaskit/editor-plugin-paste

Version:

Paste plugin for @atlaskit/editor-core

33 lines 1.25 kB
import { SUPPORTED_LANGUAGES } from '@atlaskit/code/constants'; import { mapSlice } from '@atlaskit/editor-common/utils'; function safelyGetVSCodeLanguage(editorData) { try { const vscodeData = editorData ? JSON.parse(editorData) : undefined; return vscodeData === null || vscodeData === void 0 ? void 0 : vscodeData.mode; } catch {} } export function handleVSCodeBlock({ state, slice, text, event }) { var _event$clipboardData; const vscodeData = event === null || event === void 0 ? void 0 : (_event$clipboardData = event.clipboardData) === null || _event$clipboardData === void 0 ? void 0 : _event$clipboardData.getData('vscode-editor-data'); const language = safelyGetVSCodeLanguage(vscodeData); if (text && language && SUPPORTED_LANGUAGES.some(l => l.alias[0] === language)) { const { schema } = state; slice = mapSlice(slice, 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 }, schema.text(text)); } return node; }); } return slice; }