import getExplicitRole from '../aria/get-explicit-role';

/**
 * Determine if a `HTMLTableCellElement` is a data cell
 * @method isDataCell
 * @memberof axe.commons.table
 * @instance
 * @param  {HTMLTableCellElement} node The table cell to test
 * @return {Boolean}
 */
function isDataCell(cell) {
  // @see http://www.whatwg.org/specs/web-apps/current-work/multipage/tables.html#empty-cell
  if (!cell.children.length && !cell.textContent.trim()) {
    return false;
  }
  const role = getExplicitRole(cell);
  if (role) {
    return ['cell', 'gridcell'].includes(role);
  } else {
    return cell.nodeName.toUpperCase() === 'TD';
  }
}

export default isDataCell;
