Katochimoto/x-bubbles

View on GitHub
src/core/common/click.js

Summary

Maintainability
A
0 mins
Test Coverage
const events = require('../events');
const bubbleset = require('../bubbleset');
const { PROPS } = require('../constant');

/**
 * @param {Event} event
 * @param {Object} sharedData
 * @param {HTMLElement} [sharedData.nodeEditor]
 * @param {HTMLElement} [sharedData.nodeBubble]
 * @param {boolean} [sharedData.isDblclick]
 * @returns {?boolean}
 */
module.exports = function (event, sharedData) {
    const nodeEditor = bubbleset.closestNodeSet(event.target);
    if (!nodeEditor) {
        return events.prevent(event);
    }

    sharedData.nodeEditor = nodeEditor;
    sharedData.nodeBubble = bubbleset.closestNodeBubble(event.target);
    sharedData.isDblclick = false;

    if (sharedData.nodeBubble) {
        const clickTime = Date.now();
        sharedData.isDblclick = nodeEditor[ PROPS.CLICK_TIME ] && (clickTime - nodeEditor[ PROPS.CLICK_TIME ]) < 200;

        nodeEditor[ PROPS.CLICK_TIME ] = clickTime;
    }
};