Это не битовые карты, а битовые операции, маскирование.
Component.State = {
DISABLED: 1,
FOCUSED: 2,
HOVERED: 4,
ACTIVE: 8,
HAS_ICON: 16
}
Переводим всё в двоичные числа:
DISABLED: 00000001,
FOCUSED: 00000010,
HOVERED: 00000100,
ACTIVE: 00001000,
HAS_ICON: 00010000
Видишь как бит с единицей смещается?
Теперь применяем битовую операцию ИЛИ к выбранным значениям:
HOVERED | FOCUSED =
00000100 (4)
+
00000010 (2)
=
00000110 (6)
Мы смешали два значения и получили новое, в котором храним новое состояние.
Теперь, чтобы проверить, что в состоянии x=6 = 00000110 есть какое-то значение, нам надо проверить его битовой операцией И и сравнить с нулём:
Есть ли в x FOCUSED?
if (x & FOCUSED > 0) => есть, иначе нет: 00000110 & 00000100 = 00000100 > 0 => значение ЕСТЬ!
Есть ли в x DISABLED?
if (x & DISABLED > 0) => есть, иначе нет: 00000110 & 00000001 = 00000000 = 0 => значения НЕТ!