export function itemById(v: T[], id: string) {
return v.find((node) => node.id === id)
}
export function indexOfId(v: T[], id: string) {
const item = itemById(v, id)
return item ? v.indexOf(item) : -1
}
export function nextById(v: T[], id: string, loop = true) {
let idx = indexOfId(v, id)
idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1)
return v[idx]
}
export function prevById(v: T[], id: string, loop = true) {
let idx = indexOfId(v, id)
if (idx === -1) return loop ? v[v.length - 1] : null
idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1)
return v[idx]
}