@atlaskit/editor-plugin-code-block-advanced
Version:
CodeBlockAdvanced plugin for @atlaskit/editor-core
202 lines (199 loc) • 5.95 kB
JavaScript
"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)));
};