Katochimoto/x-bubbles

View on GitHub
src/core/editor/keypress.js

Summary

Maintainability
A
1 hr
Test Coverage
const events = require('../events');
const bubble = require('../bubble');
const cursor = require('../cursor');
const { KEY } = require('../constant');

/**
 * @param {Event} event
 */
module.exports = function (event) {
    const code = events.keyCode(event);
    const nodeEditor = event.currentTarget;

    if (code === KEY.Enter) {
        event.preventDefault();
        if (!nodeEditor.options('disableControls')) {
            bubble.bubbling(nodeEditor);
            cursor.restore(nodeEditor);
        }

    } else {
        const separator = nodeEditor.options('separator');
        if (separator && separator.test(String.fromCharCode(code))) {
            const separatorCond = nodeEditor.options('separatorCond');

            if (!separatorCond || separatorCond(nodeEditor.inputValue)) {
                event.preventDefault();
                bubble.bubbling(nodeEditor);
                cursor.restore(nodeEditor);
            }
        }
    }
};