feat: refactor sidebar to nested draggable lists with long-press gesture arbitration

This commit is contained in:
Mohamed Boudra
2026-03-04 10:27:01 +07:00
parent bf1cded8a1
commit 3c066f5dd9
14 changed files with 830 additions and 327 deletions
+21
View File
@@ -0,0 +1,21 @@
export function mergeWithRemainder(input: {
currentOrder: string[]
reorderedVisibleKeys: string[]
}): string[] {
const reorderedSet = new Set(input.reorderedVisibleKeys)
const remainder = input.currentOrder.filter((key) => !reorderedSet.has(key))
return [...input.reorderedVisibleKeys, ...remainder]
}
export function hasVisibleOrderChanged(input: {
currentOrder: string[]
reorderedVisibleKeys: string[]
}): boolean {
const visibleSet = new Set(input.reorderedVisibleKeys)
const currentVisible = input.currentOrder.filter((key) => visibleSet.has(key))
if (currentVisible.length !== input.reorderedVisibleKeys.length) {
return true
}
return input.reorderedVisibleKeys.some((key, index) => currentVisible[index] !== key)
}