0
- 1
- 2
- 3
- 4
- 5
updateStateByHotkey(items, keyCode, isModifierPressed) {
const getNewState = stateGetter => items.every(item => stateGetter(item) !== isModifierPressed) === isModifierPressed;
// Под switch'ем для каждой горячей клавиши
this.setItemsX(items, getNewState(item => item.x));
}
ES6.
Нежелание подумать над менее запутанной реализацией заставило подумать над реализацией вот этого вот. Под Modifier'ом имеется в виду Ctrl или Command.
СПОЙЛЕР:
Горячие клавиши, переключающие состояние, идут парами - без Ctrl и с ним.
Если все элементы находятся в одном и том же состоянии, оба варианта делают одно и то же - переключают это состояние.
Если элементы в разных состояниях, то без Ctrl оно включает состояние во всех элементах, а с Ctrl - выключает.
Значения состояния и isModifierPressed, отличные от true или false, вроде бы, исключены.
Запостил: Kozel,
26 Июня 2018
Xo4y_EbaTbc9l 26.06.2018 11:34 # 0
Спасибо.
guest8 26.06.2018 14:11 # −999
Kozel 26.06.2018 17:38 # 0
1024-- 26.06.2018 19:23 # 0
Когда пишешь, радуешься универсальности getNewState. А потом оказывается, что её никто переиспользовать не будет, и заинлайненная версия проще и читается лучше.
Xo4y_EbaTbc9l 26.06.2018 19:37 # +1
COTOHuHCKuu_nemyx 22.03.2019 14:41 # 0