export const getNormalizedIndex = ( subFocus: number | 'first' | 'last', registeredIndexes: number ): number => subFocus === 'first' ? 0 : subFocus === 'last' ? registeredIndexes - 1 : subFocus export const shouldPreventNavigation = ( direction: 'right' | 'left', subFocus: number | 'first' | 'last', registeredIndexes: number ): boolean => { const index = getNormalizedIndex(subFocus, registeredIndexes) if (direction === 'right') { return registeredIndexes > 0 && index < registeredIndexes - 1 } else { return registeredIndexes > 0 && index > 0 } } export const getNextSubFocusIndex = ( direction: 'right' | 'left', current: number | 'first' | 'last', registeredIndexes: number ): number => { const indexNormalized = getNormalizedIndex(current, registeredIndexes) if (registeredIndexes > 0) { if (direction === 'right') { if (indexNormalized < registeredIndexes - 1) { return indexNormalized + 1 } return registeredIndexes - 1 } else { if (indexNormalized > 0) { return indexNormalized - 1 } return 0 } } return -1 }