{"version":3,"file":"useCN.mjs","sources":[""],"sourcesContent":["import { useCallback } from \"react\";\nimport { getClassString } from \"../getClassString\";\n\r\n/**\n * Добавляет функцию генерации класса для элементов\n * @param baseClass - базовый класс (блок)\n * @returns {TGetCNFunction} Возвращает функцию `getCN`, которая формирует className по базе блока, элементу, модификаторам и утилитарным классам.\n * @example\n * import { useCN } from \"@delement/ui/utils/react/useCN\";\r\n *\r\n * const App = () => {\r\n *  const { getCN } = useCN(\"myAppBaseClass\");\r\n *  return (\r\n *     <div className={getCN()}>\r\n *       <ul className={getCN(\"list\", {}, [ \"isResetList\" ])}>\r\n *        <li className={getCN(\"item\", { isMyItem: true })}></li>\r\n *       </ul>\r\n *       <h1 className={getCN(\"title h2\")}>Title with two blocks</h1>\r\n *     </div>\r\n *   )\n * }\n */\nexport type TGetCNFunction = ReturnType<typeof useCN>[\"getCN\"];\n\n/* eslint-disable-next-line */\n/**\n *\n */\nexport const useCN = (baseClass: string = \"\") => {\n\r\n  const getCN = useCallback((elem: string = \"\", mod: Record<string, boolean | string> = {}, utilClasses: string[] = []) => {\r\n    if (typeof baseClass === \"string\" && baseClass.length) {\r\n      const cn = getClassString(baseClass, elem, mod);\r\n      return utilClasses.length ? [ cn, ...utilClasses ].join(\" \") : cn;\r\n    } else {\r\n      return \"\";\r\n    }\r\n  }, [ baseClass ]);\r\n\r\n  return { getCN };\r\n};\r\n\r\n"],"names":["useCN","baseClass","getCN","useCallback","elem","mod","utilClasses","length","cn","getClassString","join"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;SA4BaA,MAAQ,CAACC,UAAoB,MAExC,MAAMC,MAAQC,YAAY,CAACC,KAAe,GAAIC,IAAwC,CAAA,EAAIC,YAAwB,MAChH,UAAWL,YAAc,UAAYA,UAAUM,OAAQ,CACrD,MAAMC,GAAKC,eAAeR,UAAWG,KAAMC,KAC3C,OAAOC,YAAYC,OAAS,CAAEC,MAAOF,aAAcI,KAAK,KAAOF,EACjE,MACE,MAAO,IAER,CAAEP,YAEL,MAAO,CAAEC"}