static findCommonAncestor(el, selector) {
    let retval = null;
    while (el) {
      if (el.classList.length && el.classList.contains(selector)) {
        retval = el;
        break;
      }

      el = el.parentNode;
    }

    return retval;
  }
/**
   * @param {DOM_element} el The element to find ancestor with selector from
   * @param {String} selector The selector of ancestor
   * @returns {DOM_element} The ancestor element that is closest to el
   */
@param {DOM_element} el The element to find ancestor with selector from
@param {String} selector The selector of ancestor
@returns {DOM_element} The ancestor element that is closest to el
@param { DOM_element } el The element to find ancestor with selector from @param { String } selector The selector of ancestor @returns { DOM_element } The ancestor element that is closest to el
static findCommonAncestor(el, selector) {
    let retval = null;
    while (el) {
      if (el.classList.length && el.classList.contains(selector)) {
        retval = el;
        break;
      }
      el = el.parentNode;
    }
    return retval;
  }
static findCommonAncestor ( el , selector ) { let retval = null ; while ( el ) { if ( el . classList . length && el . classList . contains ( selector ) ) { retval = el ; break ; } el = el . parentNode ; } return retval ; }
@param {DOM_element} el The element to find ancestor with selector from
 @param {String} selector The selector of ancestor
 @returns {DOM_element} The ancestor element that is closest to el
@param { DOM_element } el The element to find ancestor with selector from @param { String } selector The selector of ancestor @returns { DOM_element } The ancestor element that is closest to el