UNPKG

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

Version:

CodeBlockAdvanced plugin for @atlaskit/editor-core

202 lines (199 loc) 5.95 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.keymapExtension = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _commands = require("@codemirror/commands"); var _view = require("@codemirror/view"); var _browser = require("@atlaskit/editor-common/browser"); var _commands2 = require("@atlaskit/editor-prosemirror/commands"); var _prosemirrorHistory = require("@atlaskit/prosemirror-history"); var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals"); var _backspace = require("./backspace"); var _maybeEscape = require("./maybeEscape"); var keymapExtension = exports.keymapExtension = function keymapExtension(_ref) { var view = _ref.view, getNode = _ref.getNode, getPos = _ref.getPos, selectCodeBlockNode = _ref.selectCodeBlockNode, onMaybeNodeSelection = _ref.onMaybeNodeSelection, customFindReplace = _ref.customFindReplace; return _view.keymap.of(codeBlockKeymap({ view: view, getNode: getNode, getPos: getPos, selectCodeBlockNode: selectCodeBlockNode, onMaybeNodeSelection: onMaybeNodeSelection, customFindReplace: customFindReplace })); }; var codeBlockKeymap = function codeBlockKeymap(_ref2) { var view = _ref2.view, getNode = _ref2.getNode, getPos = _ref2.getPos, selectCodeBlockNode = _ref2.selectCodeBlockNode, onMaybeNodeSelection = _ref2.onMaybeNodeSelection, customFindReplace = _ref2.customFindReplace; var browser = (0, _browser.getBrowserInfo)(); return [{ key: 'ArrowUp', run: function run(cm) { return (0, _maybeEscape.maybeEscapeKeymap)({ unit: 'line', dir: -1, cm: cm, view: view, getNode: getNode, getPos: getPos, selectCodeBlockNode: selectCodeBlockNode, onMaybeNodeSelection: onMaybeNodeSelection }); } }, { key: 'ArrowLeft', run: function run(cm) { return (0, _maybeEscape.maybeEscapeKeymap)({ unit: 'char', dir: -1, cm: cm, view: view, getNode: getNode, getPos: getPos, selectCodeBlockNode: selectCodeBlockNode, onMaybeNodeSelection: onMaybeNodeSelection }); } }, { key: 'ArrowDown', run: function run(cm) { return (0, _maybeEscape.maybeEscapeKeymap)({ unit: 'line', dir: 1, cm: cm, view: view, getNode: getNode, getPos: getPos, selectCodeBlockNode: selectCodeBlockNode, onMaybeNodeSelection: onMaybeNodeSelection }); } }, { key: 'Ctrl-a', mac: 'Cmd-a', run: function run(cm) { var isFullBlockSelection = cm.state.selection.main.from === 0 && cm.state.selection.main.to === getNode().content.size; // Allow codemirror to handle if (!isFullBlockSelection) { return false; } // Move the selection and focus into prosemirror onMaybeNodeSelection(); view.focus(); (0, _commands2.selectAll)(view.state, view.dispatch); return true; } }, { key: 'ArrowRight', run: function run(cm) { return (0, _maybeEscape.maybeEscapeKeymap)({ unit: 'char', dir: 1, cm: cm, view: view, getNode: getNode, getPos: getPos, selectCodeBlockNode: selectCodeBlockNode, onMaybeNodeSelection: onMaybeNodeSelection }); } }, { key: 'Ctrl-f', mac: 'Cmd-f', run: function run() { // Pass synthetic event to prosemirror if (customFindReplace) { view.dispatchEvent(new KeyboardEvent('keydown', { key: 'f', code: 'KeyF', metaKey: browser.mac ? true : false, ctrlKey: browser.mac ? false : true })); return true; } return false; } }, { key: 'Ctrl-Enter', run: function run() { if (!(0, _commands2.exitCode)(view.state, view.dispatch)) { return false; } view.focus(); return true; } }, { key: 'Ctrl-z', mac: 'Cmd-z', run: function run() { return (0, _prosemirrorHistory.undo)(view.state, view.dispatch); } }, { key: 'Shift-Ctrl-z', mac: 'Shift-Cmd-z', run: function run() { return (0, _prosemirrorHistory.redo)(view.state, view.dispatch); } }, { key: 'Ctrl-y', mac: 'Cmd-y', run: function run() { return (0, _prosemirrorHistory.redo)(view.state, view.dispatch); } }, { key: 'Backspace', run: function run(cm) { return (0, _backspace.backspaceKeymap)({ cm: cm, view: view, getNode: getNode, getPos: getPos }); } }, { key: 'Ctrl-Alt-]', mac: 'Cmd-Alt-]', run: function run() { // Pass synthetic event to prosemirror if ((0, _expValEquals.expValEquals)('platform_editor_breakout_resizing', 'isEnabled', true)) { view.dispatchEvent(new KeyboardEvent('keydown', { key: ']', code: 'BracketRight', metaKey: browser.mac ? true : false, ctrlKey: browser.mac ? false : true, altKey: true })); return true; } return false; } }, { key: 'Ctrl-Alt-[', mac: 'Cmd-Alt-[', run: function run() { // Pass synthetic event to prosemirror if ((0, _expValEquals.expValEquals)('platform_editor_breakout_resizing', 'isEnabled', true)) { view.dispatchEvent(new KeyboardEvent('keydown', { key: ']', code: 'BracketLeft', metaKey: browser.mac ? true : false, ctrlKey: browser.mac ? false : true, altKey: true })); return true; } return false; } }].concat((0, _toConsumableArray2.default)(_commands.defaultKeymap.concat(_commands.indentWithTab))); };