feat(tgu-ui): Shift+клик ближе к якорю сжимает выделение полосы
This commit is contained in:
@@ -40,15 +40,17 @@ export function selectionAfterCheck(
|
||||
}
|
||||
|
||||
/**
|
||||
* Новое множество выбора после жеста «полоса от первого к последнему»: добавляет всех членов
|
||||
* полосы между fromKey и toKey включительно (в порядке времени). Это ВЫДЕЛЕНИЕ, не toggle —
|
||||
* существующий выбор сохраняется. Жест ограничен одной полосой: вызывающий передаёт members
|
||||
* именно её (один КА, один крен, подряд по времени); граница полосы — гарантия «нельзя выделить
|
||||
* не полосу». Если fromKey или toKey не из members — выбор не меняется (страховка). Вход не мутируется.
|
||||
* Новое множество выбора после жеста «полоса от первого к последнему»: выбор полосы становится
|
||||
* РОВНО диапазоном [fromKey..toKey] (в порядке времени). Члены полосы вне диапазона снимаются —
|
||||
* так Shift+клик по слоту ближе к якорю «сжимает» выделение. Выбор за пределами полосы (другие
|
||||
* полосы/КА) сохраняется: снимаем/добавляем только ключи из members. Жест ограничен одной полосой:
|
||||
* вызывающий передаёт members именно её (один КА, один крен, подряд по времени); граница полосы —
|
||||
* гарантия «нельзя выделить не полосу». Если fromKey или toKey не из members — выбор не меняется
|
||||
* (страховка). Вход не мутируется.
|
||||
*
|
||||
* @param current Текущее множество выбранных ключей.
|
||||
* @param members Ключи членов полосы в порядке времени.
|
||||
* @param fromKey Ключ первого клика (якорь).
|
||||
* @param fromKey Ключ якоря (первый клик).
|
||||
* @param toKey Ключ второго клика.
|
||||
*/
|
||||
export function selectStripRange(
|
||||
@@ -63,7 +65,10 @@ export function selectStripRange(
|
||||
if (from < 0 || to < 0) return next
|
||||
const lo = Math.min(from, to)
|
||||
const hi = Math.max(from, to)
|
||||
for (let i = lo; i <= hi; i++) next.add(members[i]!)
|
||||
members.forEach((key, i) => {
|
||||
if (i >= lo && i <= hi) next.add(key)
|
||||
else next.delete(key)
|
||||
})
|
||||
return next
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user