masonry-snap-grid-layout
Version:
A performant, responsive masonry layout library with smooth animations, dynamic columns, and zero dependencies.
40 lines (37 loc) • 1.61 kB
TypeScript
import * as react_jsx_runtime from 'react/jsx-runtime';
import React from 'react';
import { a as MasonrySnapGridLayoutOptions, b as MasonrySnapGridRef } from './MasonrySnapGridLayout-CPmdhc_q.js';
/**
* Props for the MasonrySnapGrid React component.
*
* @template T - The type of items in the masonry layout.
*/
interface MasonrySnapGridProps<T> extends Omit<MasonrySnapGridLayoutOptions<T>, 'items' | 'renderItem'> {
/** Array of data items to be rendered into the masonry grid. */
items: T[];
/** Function that renders a single data item as a React node. */
renderItem: (item: T) => React.ReactNode;
/** Optional class name for the container. */
className?: string;
/** Optional inline styles for the container. */
style?: React.CSSProperties;
}
/**
* Internal component that bridges MasonrySnapGridLayout with React.
*
* - Manages lifecycle of the underlying MasonrySnapGridLayout instance.
* - Uses ReactDOM.createRoot to render React nodes into non-React DOM elements.
* - Handles cleanup to avoid memory leaks.
*/
declare const MasonrySnapGridInner: <T>({ items, renderItem, className, style, ...options }: MasonrySnapGridProps<T>, ref: React.ForwardedRef<MasonrySnapGridRef>) => react_jsx_runtime.JSX.Element;
/**
* MasonrySnapGrid
*
* React wrapper component for MasonrySnapGridLayout.
*
* @template T - The type of items in the masonry layout.
*/
declare const MasonrySnapGrid: <T>(props: MasonrySnapGridProps<T> & {
ref?: React.ForwardedRef<MasonrySnapGridRef>;
}) => ReturnType<typeof MasonrySnapGridInner>;
export { MasonrySnapGrid as default };