import { useCallback } from "react"; import { getClassString } from "../getClassString"; /** * Добавляет функцию генерации класса для элементов * @param baseClass - базовый класс (блок) * @returns {TGetCNFunction} Возвращает функцию `getCN`, которая формирует className по базе блока, элементу, модификаторам и утилитарным классам. * @example * import { useCN } from "@delement/ui/utils/react/useCN"; * * const App = () => { * const { getCN } = useCN("myAppBaseClass"); * return ( *
* *

Title with two blocks

*
* ) * } */ export type TGetCNFunction = ReturnType["getCN"]; /* eslint-disable-next-line */ /** * */ export const useCN = (baseClass: string = "") => { const getCN = useCallback((elem: string = "", mod: Record = {}, utilClasses: string[] = []) => { if (typeof baseClass === "string" && baseClass.length) { const cn = getClassString(baseClass, elem, mod); return utilClasses.length ? [ cn, ...utilClasses ].join(" ") : cn; } else { return ""; } }, [ baseClass ]); return { getCN }; };