Как понять и реализовать битовую карту?
так будет нагляднее

states = {
  DISABLED: 0b001,   // так можно писать двоичные числа
  FOCUSED: 0b010,
  HOVERED: 0b100,
}

(states.DISABLED | states.HOVERED).toString(2)  // .toString(2) - переводит в двоичную
// "101"   // поставлены 1 и 3 биты
это как распределение прав в админке
Например:
когда админ имеет права на: 
чтение|запись|редактирование|создание|удаление 
1|1|1|1|1
Переводим 11111 -> 31 (права супер юзера)

например обычный пользователь имеет права на только "чтение" то это будет выглядеть так:
1|0|0|0|0, где первая цифра и есть чтение (only read)
Переводим 10000 -> 16 (права обычного юзера)

И так далее по сумме определяешь кто есть кто