import { findTabbableDescendants } from './tabbable' export function scopeTab(node: HTMLElement, event: KeyboardEvent) { const tabbable = findTabbableDescendants(node) if (!tabbable.length) { event.preventDefault() return } const finalTabbable = tabbable[event.shiftKey ? 0 : tabbable.length - 1] const leavingFinalTabbable = finalTabbable === document.activeElement || node === document.activeElement if (!leavingFinalTabbable) { return } event.preventDefault() const target = tabbable[event.shiftKey ? tabbable.length - 1 : 0] if (target) { target.focus() } }