Katochimoto/x-bubbles

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

Summary

Maintainability
A
25 mins
Test Coverage
const events = require('../events');
const utils = require('../utils');
const bubble = require('../bubble');
const select = require('../select');
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')) {
            editBubbleKeyboardEvent(nodeEditor);
        }

    } else if (code === KEY.Space) {
        if (editBubbleKeyboardEvent(nodeEditor)) {
            event.preventDefault();
        }
    }
};

function editBubbleKeyboardEvent(nodeEditor) {
    const selection = utils.getSelection(nodeEditor);

    if (!selection || !selection.rangeCount) {
        const list = select.get(nodeEditor);

        if (list.length === 1) {
            return bubble.edit(nodeEditor, list[0]);
        }
    }

    return false;
}