{"version":3,"file":"useSSGRender.mjs","sources":[""],"sourcesContent":["import type { ReactElement } from \"react\";\r\nimport { createElement, useMemo } from \"react\";\r\nimport { useAppContext } from \"./useAppContext\";\r\nimport { _getComponentCfgForStaticMarkup } from \"../_getComponentCfgForStaticMarkup\";\r\n\r\ntype TSSGRenderResult = ReactElement<Record<string, unknown>> | null;\n\r\ntype TStaticProps = {\r\n  children?: unknown;\r\n};\r\n\r\n/**\n * Хук позволяет получить компонент для его рендера в режиме `SSG`.\n * Компонент преобразуется в элемент `div` с атрибутом и строчным JSON-конфигом, куда далее `react-dom` рендерит непосредственно компонент.\n * @template TProps - тип пропсов целевого React-компонента (объект с его пользовательскими полями)\n * @returns {TSSGRenderResult} Возвращает React-элемент-контейнер для статической разметки в режиме `SSG`, в остальных режимах возвращает `null`.\n * @example\n * import { useSSGRender } from \"@delement/ui/utils/react\";\n *\n * const App = () => {\n *   return useSSGRender(\n *     \"data-js-component\",\n *     { id: \"card\", children: \"content\" },\n *     \"section\",\n *     \"myStaticContainer\"\n *   );\n * };\n */\nexport const useSSGRender = <TProps extends object>(\n  attr: string,\r\n  props: TProps & TStaticProps,\r\n  tagName: string = \"div\",\r\n  className: string = \"staticContainer\"\r\n): TSSGRenderResult => {\r\n\r\n  const { mode } = useAppContext();\r\n\r\n  return useMemo(() => {\r\n    if (mode === \"SSG\") {\r\n      const templateProps = {\r\n        [attr]: _getComponentCfgForStaticMarkup(props),\r\n        children: props?.children,\r\n        className,\r\n      };\r\n      return createElement(tagName, templateProps);\r\n    } else {\r\n      return null;\r\n    }\r\n  }, [ mode, attr, props, tagName, className ]);\r\n\r\n};\r\n"],"names":["useSSGRender","attr","props","tagName","className","mode","useAppContext","useMemo","templateProps","_getComponentCfgForStaticMarkup","children","createElement"],"mappings":";;;;;;;;;;;;;;;;;GA4BO,MAAMA,aAAe,CAC1BC,KACAC,MACAC,QAAkB,MAClBC,UAAoB,qBAGpB,MAAMC,KAAEA,MAASC,gBAEjB,OAAOC,QAAQ,KACb,GAAIF,OAAS,MAAO,CAClB,MAAMG,cAAgB,CACpBP,CAACA,MAAOQ,gCAAgCP,OACxCQ,SAAUR,OAAOQ,SACjBN,qBAEF,OAAOO,cAAcR,QAASK,cAChC,MACE,OAAO,MAER,CAAEH,KAAMJ,KAAMC,MAAOC,QAASC"}