/*** Resolves the next enabled action index for standard menu keyboard navigation. */ export function resolveNextMenuIndex( items: readonly { disabled?: boolean }[], currentIndex: number, key: string, ): number { const enabledIndexes = items.flatMap((item, index) => (item.disabled ? [] : [index])); if (enabledIndexes.length === 0) return -1; if (key === 'Home') return enabledIndexes.at(0) ?? -1; if (key === 'End') return enabledIndexes.at(-1) ?? -1; const activeEnabledIndex = enabledIndexes.indexOf(currentIndex); const nextEnabledIndex = activeEnabledIndex === -1 ? 0 : key === 'ArrowUp' ? (activeEnabledIndex - 1 + enabledIndexes.length) % enabledIndexes.length : (activeEnabledIndex + 1) % enabledIndexes.length; return enabledIndexes.at(nextEnabledIndex) ?? -1; }