import "./style.pcss"; import type { ReactNode, ReactElement, FC, SourceHTMLAttributes, } from "react"; import type { IPicture, TMediaQueries } from "./config/types"; import { getMediaQuery } from "./lib/index"; import { constants } from "../../constants"; import type { IComponentBaseProps } from "../../types/components/index"; import { useCN } from "../../utils/react/useCN"; const Sources: FC<{ data: IPicture["sources"]; }> = ({ data, }): ReactNode => { switch (true) { case Array.isArray(data): { return data.map((source) => { const media = getMediaQuery(source.media); return ; }); } case typeof data === "object" && !!data: { return Object.entries(data).map(([ query, source ]: [ string, SourceHTMLAttributes ]) => { const media = !!constants.mediaQueries[query as keyof TMediaQueries] ? getMediaQuery(query) : query; return ; }); } default: { return null; } } }; /** * Компонент адаптивного изображения с разными источниками * @returns {ReactElement} */ const Picture: FC = ({ baseClass = "picture", extraClasses = {}, extraAttrs = {}, children = null, sources = [] as IPicture["sources"], }): ReactElement => { const { getCN } = useCN(baseClass); return ( {children} ); }; export type { IPicture }; export { Picture };