react-native-trays
Version:
Production-grade, Family inspired, React Native Tray System library
29 lines (27 loc) • 911 B
text/typescript
/**
* hooks.ts
*
* Provides custom React hooks for interacting with the tray stack context and managing trays.
*/
import { useContext } from 'react';
import type { TrayProps, TrayContextType } from './types';
import { TrayContext } from './context';
/**
* useTrays
*
* Custom React hook to access tray stack manipulation functions for a specific stack.
* Throws an error if used outside of TrayProvider.
*
* @template T - The tray props type.
* @param stackId - The stack identifier to access.
* @returns Tray context functions for the given stack.
*/
export const useTrays = <T extends TrayProps>(
stackId: string
): TrayContextType<T> => {
const getContext = useContext(TrayContext);
if (!getContext) throw new Error('useTrays must be used within TrayProvider');
const ctx = getContext(stackId);
if (!ctx) throw new Error('useTrays must be used within TrayProvider');
return ctx;
};