@atlaskit/editor-core
Version:
A package contains Atlassian editor core functionality
32 lines • 1.29 kB
JavaScript
import { browser } from '../prosemirror';
import { keyCodes } from '../keymaps';
/**
* Sends a key to ProseMirror content area, simulating user key press.
* Accepts key descriptions similar to Keymap, i.e. 'Shift-Ctrl-L'
*/
export default function sendKeyToPm(editorView, keys) {
var parts = keys.split(/-(?!'?$)/);
var modKey = parts.indexOf('Mod') !== -1;
var cmdKey = parts.indexOf('Cmd') !== -1;
var ctrlKey = parts.indexOf('Ctrl') !== -1;
var shiftKey = parts.indexOf('Shift') !== -1;
var altKey = parts.indexOf('Alt') !== -1;
var key = parts[parts.length - 1];
// all of the browsers are using the same keyCode for alphabetical keys
// and it's the uppercased character code in real world
var code = keyCodes[key] ? keyCodes[key] : (key.toUpperCase()).charCodeAt(0);
var event = new CustomEvent('keydown', {
bubbles: true,
cancelable: true,
});
event.key = key.replace(/Space/g, ' ');
event.shiftKey = shiftKey;
event.altKey = altKey;
event.ctrlKey = ctrlKey || (!browser.mac && modKey);
event.metaKey = cmdKey || (browser.mac && modKey);
event.keyCode = code;
event.which = code;
event.view = window;
editorView.dispatchEvent(event);
}
//# sourceMappingURL=send-key-to-pm.js.map