react-layout-masonry
Version:
Responsive masonry layout for React
39 lines (38 loc) • 1.82 kB
text/typescript
import * as react_jsx_runtime1 from "react/jsx-runtime";
import { ComponentPropsWithRef, ComponentPropsWithoutRef, ElementType, PropsWithChildren, ReactNode } from "react";
//#region src/types.d.ts
type BreakPoints = Record<number, number> | Array<number | undefined>;
type BreakPointsArray = Array<number | undefined>;
type BreakPointSpec = BreakPoints | BreakPointsArray;
type Columns = number | BreakPointSpec;
type AsProp<T extends ElementType> = {
as?: T;
};
type PropsToOmit<T extends ElementType, P> = keyof (AsProp<T> & P);
type PolymorphicComponentProp<T extends ElementType, Props = {}> = PropsWithChildren<Props & AsProp<T>> & Omit<ComponentPropsWithoutRef<T>, PropsToOmit<T, Props>>;
type PolymorphicComponentPropWithRef<T extends ElementType, Props = {}> = PolymorphicComponentProp<T, Props> & {
ref?: PolymorphicRef<T>;
};
type PolymorphicRef<T extends ElementType> = ComponentPropsWithRef<T>['ref'];
type MasonryOwnProps<T extends ElementType> = {
columns?: Columns;
gap?: number;
columnProps?: PolymorphicComponentPropWithRef<T, {}>;
};
type MasonryProps<T extends ElementType> = PolymorphicComponentPropWithRef<T, MasonryOwnProps<T>>;
//#endregion
//#region src/Masonry.d.ts
declare const Masonry: <T extends ElementType = "div">(props: MasonryProps<T>) => react_jsx_runtime1.JSX.Element;
//#endregion
//#region src/useMasonry.d.ts
declare const useMasonry: (children: ReactNode, columns?: Columns) => ReactNode[][];
//#endregion
//#region src/context.d.ts
interface MasonryItemContextValues {
column: number;
position: number;
}
declare const useMasonryItem: () => MasonryItemContextValues;
//#endregion
export { BreakPointSpec, BreakPoints, BreakPointsArray, Columns, MasonryProps, PolymorphicRef, Masonry as default, useMasonry, useMasonryItem };
//# sourceMappingURL=index.d.cts.map