code: function makeHoverEvent($el, options) {
    let timeout = null;
    let active = false;
    let wasTriggeredByMouse = false;
  
    $el.on('mouseover', () => {
      if (options.preventMouseover && options.preventMouseover()) return;
      clearTimeout(timeout);
      timeout = delay(() => {
        if (active) return;
        options.enter();
        wasTriggeredByMouse = true;
        active = true;
      }, options.delay);
    });
  
    $el.on('mouseout', () => {
      if (!wasTriggeredByMouse) return;
      clearTimeout(timeout);
      timeout = delay(() => {
        if (!active) return;
        if (options.exit) options.exit();
        active = false;
      }, options.delay);
    });
  
    const $clickTarget = options.$clickTarget || $el;
    $clickTarget.on('click', () => {
      if (active && (!wasTriggeredByMouse)) {
        if (options.exit) options.exit();
        active = false;
      } else if (!active) {
        options.enter();
        wasTriggeredByMouse = false;
        active = true;
      }
    });
  
    $el.on('clickOutside', () => {
      if (!active) return;
      if (options.exit) options.exit();
      active = false;
    });
  }
docs: ----------------------------------------------------------------------------- Hover Events