preact-spatial-navigation
Version:
A powerful Preact library for TV-style spatial navigation with LRUD algorithm, virtualized lists/grids, and smart TV support
117 lines (103 loc) • 4.35 kB
text/typescript
/**
* Preact Spatial Navigation Library
*
* A reusable library for TV-style spatial navigation in Preact applications,
* powered by @bam.tech/lrud.
*/
// Import Chrome 38 compatibility polyfills
import './utils/chrome38Compatibility';
// Export Direction enum from lrud
export { Directions } from '@bam.tech/lrud';
// Root Component
export {
SpatialNavigationRoot,
SpatialNavigationProvider, // Legacy name for backward compatibility
} from './components/SpatialNavigationRoot';
// Core Navigation Components
export { SpatialNavigationNode } from './components/SpatialNavigationNode';
export { SpatialNavigationView } from './components/SpatialNavigationView';
export { SpatialNavigationFocusableView } from './components/SpatialNavigationFocusableView';
export { SpatialNavigationScrollView } from './components/SpatialNavigationScrollView';
export { DefaultFocus } from './context/DefaultFocusContext';
// Virtualized Components (LRUD-based implementation from react-tv-space-navigation)
export { SpatialNavigationVirtualizedList } from './components/virtualizedList/SpatialNavigationVirtualizedList';
export { SpatialNavigationVirtualizedGrid } from './components/virtualizedGrid/SpatialNavigationVirtualizedGrid';
// Device Type Provider
export {
SpatialNavigationDeviceTypeProvider,
useDeviceType
} from './context/DeviceTypeContext';
// Contexts and Hooks
export { useSpatialNavigator, useSpatialNavigatorContext } from './context/SpatialNavigatorContext';
export { useLockSpatialNavigation } from './context/LockSpatialNavigationContext';
export { useSpatialNavigatorFocusableAccessibilityProps } from './hooks/useSpatialNavigatorFocusableAccessibilityProps';
// Legacy Components - REMOVED after migration to @bam.tech/lrud
// Grid and List components are no longer available
// Use SpatialNavigationView or SpatialNavigationFocusableView instead
// Legacy Hooks (deprecated - will be removed in future version)
/** @deprecated Use SpatialNavigationNode with render props pattern instead */
export { useFocusable } from './hooks/useFocusable';
// Utilities
export { navigationEventBus } from './utils/eventBus';
export {
generateSectionId,
isElementFocused,
focusElement,
blurElement,
} from './utils/helpers';
export {
configureRemoteControl,
createKeyboardRemoteControl,
TV_REMOTE_KEYS,
createLGRemoteControl,
} from './utils/remoteControl';
// Export the main namespace object
import { configureRemoteControl as _configureRemoteControl } from './utils/remoteControl';
export const SpatialNavigation = {
configureRemoteControl: _configureRemoteControl,
};
// Types
export type {
Direction,
Orientation,
NodeOrientation,
FocusableNodeState,
NonFocusableNodeState,
SpatialNavigationRootProps,
SpatialNavigationNodeProps,
SpatialNavigationNodeFocusableProps,
SpatialNavigationNodeNonFocusableProps,
SpatialNavigationNodeRef,
SpatialNavigationViewProps,
SpatialNavigationFocusableViewProps,
SpatialNavigationScrollViewProps,
SpatialNavigationContextValue,
// Legacy types (deprecated)
FocusableConfig,
UseFocusableReturn,
SpatialNavigationProviderProps,
FocusDetail,
// GridProps, ListProps, SectionConfig, GridConfig, ListConfig - REMOVED
} from './types';
export type { NavigationEvents } from './utils/eventBus';
export type { DeviceType, DeviceTypeContextValue } from './context/DeviceTypeContext';
export type { DefaultFocusProps } from './context/DefaultFocusContext';
export type { RemoteControlConfiguration } from './utils/remoteControl';
export type { VirtualizedListProps } from './components/virtualizedList/VirtualizedList';
export type { ViewportPadding } from './components/virtualizedList/VirtualizedListWithSize';
export type {
SpatialNavigationVirtualizedListRef,
SpatialNavigationVirtualizedListWithScrollProps,
PointerScrollProps,
} from './components/virtualizedList/SpatialNavigationVirtualizedListWithScroll';
export type {
SpatialNavigationVirtualizedGridRef
} from './components/virtualizedGrid/SpatialNavigationVirtualizedGrid';
export type { ScrollBehavior } from './components/virtualizedList/types';
export type {
AccessibilityOptions,
AccessibilityProps
} from './hooks/useSpatialNavigatorFocusableAccessibilityProps';
export type {
UseLockSpatialNavigationReturn
} from './hooks/useLockSpatialNavigation';