@atlaskit/editor-core
Version:
A package contains Atlassian editor core functionality
35 lines • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var prosemirror_1 = require("../prosemirror");
var keymaps_1 = require("../keymaps");
/**
* Sends a key to ProseMirror content area, simulating user key press.
* Accepts key descriptions similar to Keymap, i.e. 'Shift-Ctrl-L'
*/
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 = keymaps_1.keyCodes[key] ? keymaps_1.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 || (!prosemirror_1.browser.mac && modKey);
event.metaKey = cmdKey || (prosemirror_1.browser.mac && modKey);
event.keyCode = code;
event.which = code;
event.view = window;
editorView.dispatchEvent(event);
}
exports.default = sendKeyToPm;
//# sourceMappingURL=send-key-to-pm.js.map