UNPKG

@atlaskit/editor-plugin-code-block-advanced

Version:

CodeBlockAdvanced plugin for @atlaskit/editor-core

55 lines (52 loc) 2.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.shiftArrowUpWorkaround = exports.shiftArrowDownWorkaround = void 0; var _state = require("@atlaskit/editor-prosemirror/state"); var shiftArrowUpWorkaround = exports.shiftArrowUpWorkaround = function shiftArrowUpWorkaround(view, event) { var _doc$resolve$nodeBefo; var _view$state = view.state, doc = _view$state.doc, _view$state$selection = _view$state.selection, $head = _view$state$selection.$head, $anchor = _view$state$selection.$anchor, tr = _view$state.tr, codeBlock = _view$state.schema.nodes.codeBlock; // Position we want to check (directly after our current position) var pos = Math.max($head.pos - 1, 1); var isNodeBefore = ((_doc$resolve$nodeBefo = doc.resolve(pos).nodeBefore) === null || _doc$resolve$nodeBefo === void 0 ? void 0 : _doc$resolve$nodeBefo.type) === codeBlock; var maybeProblematicNode = isNodeBefore ? doc.resolve(pos).nodeBefore : doc.resolve(pos).node(); if ((maybeProblematicNode === null || maybeProblematicNode === void 0 ? void 0 : maybeProblematicNode.type) === codeBlock) { var nodeSize = maybeProblematicNode.nodeSize; var startPos = isNodeBefore ? pos : $head.pos; tr.setSelection(_state.TextSelection.create(doc, $anchor.pos, Math.max(startPos - nodeSize, 0))); view.dispatch(tr); event.preventDefault(); return true; } return false; }; var shiftArrowDownWorkaround = exports.shiftArrowDownWorkaround = function shiftArrowDownWorkaround(view, event) { var _doc$resolve$nodeAfte; var _view$state2 = view.state, doc = _view$state2.doc, _view$state2$selectio = _view$state2.selection, $head = _view$state2$selectio.$head, $anchor = _view$state2$selectio.$anchor, tr = _view$state2.tr, codeBlock = _view$state2.schema.nodes.codeBlock; // Position we want to check (directly after our current position) var pos = $head.pos + 1; var isNodeAfter = ((_doc$resolve$nodeAfte = doc.resolve(pos).nodeAfter) === null || _doc$resolve$nodeAfte === void 0 ? void 0 : _doc$resolve$nodeAfte.type) === codeBlock; var maybeProblematicNode = isNodeAfter ? doc.resolve(pos).nodeAfter : doc.resolve(pos).node(); if ((maybeProblematicNode === null || maybeProblematicNode === void 0 ? void 0 : maybeProblematicNode.type) === codeBlock) { var nodeSize = maybeProblematicNode.nodeSize; var startPos = isNodeAfter ? pos : $head.pos; tr.setSelection(_state.TextSelection.create(doc, $anchor.pos, Math.min(startPos + nodeSize, doc.content.size))); view.dispatch(tr); event.preventDefault(); return true; } return false; };