react-vertical-feed
Version:
A React component for creating vertical media feeds (videos) similar to TikTok or Instagram
41 lines (40 loc) • 1.58 kB
TypeScript
import React from 'react';
export interface VideoItem {
src: string;
id?: string;
metadata?: Record<string, unknown>;
controls?: boolean;
autoPlay?: boolean;
muted?: boolean;
playsInline?: boolean;
loop?: boolean;
poster?: string;
preload?: 'none' | 'metadata' | 'auto';
}
export interface VerticalFeedRef {
scrollToItem: (index: number, behavior?: ScrollBehavior) => void;
getCurrentItem: () => number;
}
export interface VerticalFeedProps {
items: VideoItem[];
onEndReached?: () => void;
loadingComponent?: React.ReactNode;
errorComponent?: React.ReactNode;
className?: string;
style?: React.CSSProperties;
onItemVisible?: (item: VideoItem, index: number) => void;
onItemHidden?: (item: VideoItem, index: number) => void;
onItemClick?: (item: VideoItem, index: number) => void;
threshold?: number;
scrollBehavior?: ScrollBehavior;
renderItemOverlay?: (item: VideoItem, index: number) => React.ReactNode;
/** Distance from bottom to trigger onEndReached (default: 100) */
endReachedThreshold?: number;
/** Callback when video playback fails */
onVideoError?: (item: VideoItem, index: number, error: Error) => void;
/** Callback when current visible item changes */
onCurrentItemChange?: (index: number) => void;
/** Default preload strategy for videos (default: 'metadata') */
defaultPreload?: 'none' | 'metadata' | 'auto';
}
export declare const VerticalFeed: React.ForwardRefExoticComponent<VerticalFeedProps & React.RefAttributes<VerticalFeedRef>>;