/** `field` de la columna de acciones (selectores CSS, exclusión de clic en fila). */
export const PERSONA_TABLA_FIELD_ACCIONES = 'acciones';

/** Ancho fijo de la columna checkbox; debe coincidir con `left` de la columna Persona (sticky). */
export const PERSONA_TABLA_COL_SELECT_WIDTH_PX = 60;

/** Clase en la fila del DataGrid cuando la persona está seleccionada (checkbox). */
export const PERSONA_TABLA_ROW_SELECTED_CLASS = 'anima-listapersonas__row--selected';

/**
 * Si el clic cayó en UI que no debe alternar selección al usar `onRowClick` en la fila.
 * @param {EventTarget | null} target — `event.target`
 * @returns {boolean}
 */
export function isPersonaTableRowClickIgnoredForSelection(target) {
  if (!target || typeof target.closest !== 'function') return true;
  if (target.closest(`.MuiDataGrid-cell[data-field="${PERSONA_TABLA_FIELD_ACCIONES}"]`)) return true;
  if (target.closest('input[type="checkbox"]')) return true;
  if (target.closest('label')) return true;
  if (target.closest('button')) return true;
  if (target.closest('a[href]')) return true;
  return false;
}

/** Coincide id con el Set aunque difiera string vs número (p. ej. DataGrid vs `row.id`). */
export function selectedSetHasId(selectedIdSet, id) {
  if (selectedIdSet == null || id == null) return false;
  if (selectedIdSet.has(id)) return true;
  if (selectedIdSet.has(String(id))) return true;
  const n = Number(id);
  if (id !== '' && !Number.isNaN(n) && selectedIdSet.has(n)) return true;
  return false;
}
