react-intlayer 8.1.2 → 8.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/dist/cjs/IntlayerNode.cjs +1 -17
  2. package/dist/cjs/IntlayerNode.cjs.map +1 -1
  3. package/dist/cjs/UI/ContentSelector.cjs +1 -96
  4. package/dist/cjs/UI/ContentSelector.cjs.map +1 -1
  5. package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -29
  6. package/dist/cjs/client/IntlayerProvider.cjs +1 -92
  7. package/dist/cjs/client/IntlayerProvider.cjs.map +1 -1
  8. package/dist/cjs/client/format/index.cjs +1 -20
  9. package/dist/cjs/client/format/useCompact.cjs +1 -29
  10. package/dist/cjs/client/format/useCompact.cjs.map +1 -1
  11. package/dist/cjs/client/format/useCurrency.cjs +1 -43
  12. package/dist/cjs/client/format/useCurrency.cjs.map +1 -1
  13. package/dist/cjs/client/format/useDate.cjs +1 -45
  14. package/dist/cjs/client/format/useDate.cjs.map +1 -1
  15. package/dist/cjs/client/format/useIntl.cjs +1 -45
  16. package/dist/cjs/client/format/useIntl.cjs.map +1 -1
  17. package/dist/cjs/client/format/useList.cjs +1 -40
  18. package/dist/cjs/client/format/useList.cjs.map +1 -1
  19. package/dist/cjs/client/format/useNumber.cjs +1 -41
  20. package/dist/cjs/client/format/useNumber.cjs.map +1 -1
  21. package/dist/cjs/client/format/usePercentage.cjs +1 -37
  22. package/dist/cjs/client/format/usePercentage.cjs.map +1 -1
  23. package/dist/cjs/client/format/useRelativeTime.cjs +1 -37
  24. package/dist/cjs/client/format/useRelativeTime.cjs.map +1 -1
  25. package/dist/cjs/client/format/useUnit.cjs +1 -36
  26. package/dist/cjs/client/format/useUnit.cjs.map +1 -1
  27. package/dist/cjs/client/index.cjs +1 -34
  28. package/dist/cjs/client/t.cjs +1 -40
  29. package/dist/cjs/client/t.cjs.map +1 -1
  30. package/dist/cjs/client/useDictionary.cjs +1 -27
  31. package/dist/cjs/client/useDictionary.cjs.map +1 -1
  32. package/dist/cjs/client/useDictionaryAsync.cjs +1 -24
  33. package/dist/cjs/client/useDictionaryAsync.cjs.map +1 -1
  34. package/dist/cjs/client/useDictionaryDynamic.cjs +1 -25
  35. package/dist/cjs/client/useDictionaryDynamic.cjs.map +1 -1
  36. package/dist/cjs/client/useI18n.cjs +1 -45
  37. package/dist/cjs/client/useI18n.cjs.map +1 -1
  38. package/dist/cjs/client/useIntlayer.cjs +1 -42
  39. package/dist/cjs/client/useIntlayer.cjs.map +1 -1
  40. package/dist/cjs/client/useLoadDynamic.cjs +1 -27
  41. package/dist/cjs/client/useLoadDynamic.cjs.map +1 -1
  42. package/dist/cjs/client/useLocale.cjs +1 -60
  43. package/dist/cjs/client/useLocale.cjs.map +1 -1
  44. package/dist/cjs/client/useLocaleBase.cjs +1 -26
  45. package/dist/cjs/client/useLocaleBase.cjs.map +1 -1
  46. package/dist/cjs/client/useLocaleStorage.cjs +1 -61
  47. package/dist/cjs/client/useLocaleStorage.cjs.map +1 -1
  48. package/dist/cjs/client/useRewriteURL.cjs +1 -42
  49. package/dist/cjs/client/useRewriteURL.cjs.map +1 -1
  50. package/dist/cjs/client/useTraduction.cjs +1 -35
  51. package/dist/cjs/client/useTraduction.cjs.map +1 -1
  52. package/dist/cjs/editor/ContentSelectorWrapper.cjs +1 -55
  53. package/dist/cjs/editor/ContentSelectorWrapper.cjs.map +1 -1
  54. package/dist/cjs/editor/IntlayerEditorProvider.cjs +1 -61
  55. package/dist/cjs/editor/IntlayerEditorProvider.cjs.map +1 -1
  56. package/dist/cjs/editor/index.cjs +1 -4
  57. package/dist/cjs/editor/useEditedContentRenderer.cjs +1 -40
  58. package/dist/cjs/editor/useEditedContentRenderer.cjs.map +1 -1
  59. package/dist/cjs/getDictionary.cjs +1 -19
  60. package/dist/cjs/getDictionary.cjs.map +1 -1
  61. package/dist/cjs/getIntlayer.cjs +1 -19
  62. package/dist/cjs/getIntlayer.cjs.map +1 -1
  63. package/dist/cjs/html/HTMLProvider.cjs +1 -18
  64. package/dist/cjs/html/HTMLProvider.cjs.map +1 -1
  65. package/dist/cjs/html/HTMLRenderer.cjs +1 -59
  66. package/dist/cjs/html/HTMLRenderer.cjs.map +1 -1
  67. package/dist/cjs/html/HTMLRendererPlugin.cjs +1 -36
  68. package/dist/cjs/html/HTMLRendererPlugin.cjs.map +1 -1
  69. package/dist/cjs/html/index.cjs +1 -12
  70. package/dist/cjs/index.cjs +1 -52
  71. package/dist/cjs/markdown/MarkdownProvider.cjs +1 -77
  72. package/dist/cjs/markdown/MarkdownProvider.cjs.map +1 -1
  73. package/dist/cjs/markdown/MarkdownRenderer.cjs +1 -199
  74. package/dist/cjs/markdown/MarkdownRenderer.cjs.map +1 -1
  75. package/dist/cjs/markdown/MarkdownRendererPlugin.cjs +1 -33
  76. package/dist/cjs/markdown/MarkdownRendererPlugin.cjs.map +1 -1
  77. package/dist/cjs/markdown/index.cjs +1 -25
  78. package/dist/cjs/markdown/processor.cjs +1 -66
  79. package/dist/cjs/markdown/processor.cjs.map +1 -1
  80. package/dist/cjs/markdown/runtime.cjs +1 -43
  81. package/dist/cjs/markdown/runtime.cjs.map +1 -1
  82. package/dist/cjs/plugins.cjs +1 -179
  83. package/dist/cjs/plugins.cjs.map +1 -1
  84. package/dist/cjs/reactElement/renderReactElement.cjs +1 -52
  85. package/dist/cjs/reactElement/renderReactElement.cjs.map +1 -1
  86. package/dist/cjs/server/IntlayerServerProvider.cjs +1 -34
  87. package/dist/cjs/server/IntlayerServerProvider.cjs.map +1 -1
  88. package/dist/cjs/server/format/index.cjs +1 -18
  89. package/dist/cjs/server/format/useCompact.cjs +1 -27
  90. package/dist/cjs/server/format/useCompact.cjs.map +1 -1
  91. package/dist/cjs/server/format/useCurrency.cjs +1 -38
  92. package/dist/cjs/server/format/useCurrency.cjs.map +1 -1
  93. package/dist/cjs/server/format/useDate.cjs +1 -43
  94. package/dist/cjs/server/format/useDate.cjs.map +1 -1
  95. package/dist/cjs/server/format/useIntl.cjs +1 -44
  96. package/dist/cjs/server/format/useIntl.cjs.map +1 -1
  97. package/dist/cjs/server/format/useList.cjs +1 -35
  98. package/dist/cjs/server/format/useList.cjs.map +1 -1
  99. package/dist/cjs/server/format/useNumber.cjs +1 -39
  100. package/dist/cjs/server/format/useNumber.cjs.map +1 -1
  101. package/dist/cjs/server/format/usePercentage.cjs +1 -35
  102. package/dist/cjs/server/format/usePercentage.cjs.map +1 -1
  103. package/dist/cjs/server/format/useRelativeTime.cjs +1 -35
  104. package/dist/cjs/server/format/useRelativeTime.cjs.map +1 -1
  105. package/dist/cjs/server/format/useUnit.cjs +1 -34
  106. package/dist/cjs/server/format/useUnit.cjs.map +1 -1
  107. package/dist/cjs/server/index.cjs +1 -24
  108. package/dist/cjs/server/serverContext.cjs +1 -58
  109. package/dist/cjs/server/serverContext.cjs.map +1 -1
  110. package/dist/cjs/server/t.cjs +1 -35
  111. package/dist/cjs/server/t.cjs.map +1 -1
  112. package/dist/cjs/server/useDictionary.cjs +1 -17
  113. package/dist/cjs/server/useDictionary.cjs.map +1 -1
  114. package/dist/cjs/server/useDictionaryAsync.cjs +1 -21
  115. package/dist/cjs/server/useDictionaryAsync.cjs.map +1 -1
  116. package/dist/cjs/server/useDictionaryDynamic.cjs +1 -22
  117. package/dist/cjs/server/useDictionaryDynamic.cjs.map +1 -1
  118. package/dist/cjs/server/useI18n.cjs +1 -38
  119. package/dist/cjs/server/useI18n.cjs.map +1 -1
  120. package/dist/cjs/server/useIntlayer.cjs +1 -17
  121. package/dist/cjs/server/useIntlayer.cjs.map +1 -1
  122. package/dist/cjs/server/useLoadDynamic.cjs +1 -14
  123. package/dist/cjs/server/useLoadDynamic.cjs.map +1 -1
  124. package/dist/cjs/server/useLocale.cjs +1 -24
  125. package/dist/cjs/server/useLocale.cjs.map +1 -1
  126. package/dist/esm/IntlayerNode.mjs +1 -15
  127. package/dist/esm/IntlayerNode.mjs.map +1 -1
  128. package/dist/esm/UI/ContentSelector.mjs +1 -94
  129. package/dist/esm/UI/ContentSelector.mjs.map +1 -1
  130. package/dist/esm/client/IntlayerProvider.mjs +1 -86
  131. package/dist/esm/client/IntlayerProvider.mjs.map +1 -1
  132. package/dist/esm/client/format/index.mjs +1 -11
  133. package/dist/esm/client/format/useCompact.mjs +1 -27
  134. package/dist/esm/client/format/useCompact.mjs.map +1 -1
  135. package/dist/esm/client/format/useCurrency.mjs +1 -41
  136. package/dist/esm/client/format/useCurrency.mjs.map +1 -1
  137. package/dist/esm/client/format/useDate.mjs +1 -43
  138. package/dist/esm/client/format/useDate.mjs.map +1 -1
  139. package/dist/esm/client/format/useIntl.mjs +1 -43
  140. package/dist/esm/client/format/useIntl.mjs.map +1 -1
  141. package/dist/esm/client/format/useList.mjs +1 -38
  142. package/dist/esm/client/format/useList.mjs.map +1 -1
  143. package/dist/esm/client/format/useNumber.mjs +1 -39
  144. package/dist/esm/client/format/useNumber.mjs.map +1 -1
  145. package/dist/esm/client/format/usePercentage.mjs +1 -35
  146. package/dist/esm/client/format/usePercentage.mjs.map +1 -1
  147. package/dist/esm/client/format/useRelativeTime.mjs +1 -35
  148. package/dist/esm/client/format/useRelativeTime.mjs.map +1 -1
  149. package/dist/esm/client/format/useUnit.mjs +1 -34
  150. package/dist/esm/client/format/useUnit.mjs.map +1 -1
  151. package/dist/esm/client/index.mjs +1 -14
  152. package/dist/esm/client/t.mjs +1 -38
  153. package/dist/esm/client/t.mjs.map +1 -1
  154. package/dist/esm/client/useDictionary.mjs +1 -25
  155. package/dist/esm/client/useDictionary.mjs.map +1 -1
  156. package/dist/esm/client/useDictionaryAsync.mjs +1 -21
  157. package/dist/esm/client/useDictionaryAsync.mjs.map +1 -1
  158. package/dist/esm/client/useDictionaryDynamic.mjs +1 -22
  159. package/dist/esm/client/useDictionaryDynamic.mjs.map +1 -1
  160. package/dist/esm/client/useI18n.mjs +1 -43
  161. package/dist/esm/client/useI18n.mjs.map +1 -1
  162. package/dist/esm/client/useIntlayer.mjs +1 -40
  163. package/dist/esm/client/useIntlayer.mjs.map +1 -1
  164. package/dist/esm/client/useLoadDynamic.mjs +1 -25
  165. package/dist/esm/client/useLoadDynamic.mjs.map +1 -1
  166. package/dist/esm/client/useLocale.mjs +1 -57
  167. package/dist/esm/client/useLocale.mjs.map +1 -1
  168. package/dist/esm/client/useLocaleBase.mjs +1 -23
  169. package/dist/esm/client/useLocaleBase.mjs.map +1 -1
  170. package/dist/esm/client/useLocaleStorage.mjs +1 -54
  171. package/dist/esm/client/useLocaleStorage.mjs.map +1 -1
  172. package/dist/esm/client/useRewriteURL.mjs +1 -39
  173. package/dist/esm/client/useRewriteURL.mjs.map +1 -1
  174. package/dist/esm/client/useTraduction.mjs +1 -33
  175. package/dist/esm/client/useTraduction.mjs.map +1 -1
  176. package/dist/esm/editor/ContentSelectorWrapper.mjs +1 -53
  177. package/dist/esm/editor/ContentSelectorWrapper.mjs.map +1 -1
  178. package/dist/esm/editor/IntlayerEditorProvider.mjs +1 -58
  179. package/dist/esm/editor/IntlayerEditorProvider.mjs.map +1 -1
  180. package/dist/esm/editor/index.mjs +1 -3
  181. package/dist/esm/editor/useEditedContentRenderer.mjs +1 -37
  182. package/dist/esm/editor/useEditedContentRenderer.mjs.map +1 -1
  183. package/dist/esm/getDictionary.mjs +1 -17
  184. package/dist/esm/getDictionary.mjs.map +1 -1
  185. package/dist/esm/getIntlayer.mjs +1 -17
  186. package/dist/esm/getIntlayer.mjs.map +1 -1
  187. package/dist/esm/html/HTMLProvider.mjs +1 -15
  188. package/dist/esm/html/HTMLProvider.mjs.map +1 -1
  189. package/dist/esm/html/HTMLRenderer.mjs +1 -54
  190. package/dist/esm/html/HTMLRenderer.mjs.map +1 -1
  191. package/dist/esm/html/HTMLRendererPlugin.mjs +1 -34
  192. package/dist/esm/html/HTMLRendererPlugin.mjs.map +1 -1
  193. package/dist/esm/html/index.mjs +1 -5
  194. package/dist/esm/index.mjs +1 -21
  195. package/dist/esm/markdown/MarkdownProvider.mjs +1 -74
  196. package/dist/esm/markdown/MarkdownProvider.mjs.map +1 -1
  197. package/dist/esm/markdown/MarkdownRenderer.mjs +1 -195
  198. package/dist/esm/markdown/MarkdownRenderer.mjs.map +1 -1
  199. package/dist/esm/markdown/MarkdownRendererPlugin.mjs +1 -30
  200. package/dist/esm/markdown/MarkdownRendererPlugin.mjs.map +1 -1
  201. package/dist/esm/markdown/index.mjs +1 -7
  202. package/dist/esm/markdown/processor.mjs +1 -58
  203. package/dist/esm/markdown/processor.mjs.map +1 -1
  204. package/dist/esm/markdown/runtime.mjs +1 -39
  205. package/dist/esm/markdown/runtime.mjs.map +1 -1
  206. package/dist/esm/plugins.mjs +1 -172
  207. package/dist/esm/plugins.mjs.map +1 -1
  208. package/dist/esm/reactElement/renderReactElement.mjs +1 -50
  209. package/dist/esm/reactElement/renderReactElement.mjs.map +1 -1
  210. package/dist/esm/server/IntlayerServerProvider.mjs +1 -28
  211. package/dist/esm/server/IntlayerServerProvider.mjs.map +1 -1
  212. package/dist/esm/server/format/index.mjs +1 -10
  213. package/dist/esm/server/format/useCompact.mjs +1 -25
  214. package/dist/esm/server/format/useCompact.mjs.map +1 -1
  215. package/dist/esm/server/format/useCurrency.mjs +1 -36
  216. package/dist/esm/server/format/useCurrency.mjs.map +1 -1
  217. package/dist/esm/server/format/useDate.mjs +1 -41
  218. package/dist/esm/server/format/useDate.mjs.map +1 -1
  219. package/dist/esm/server/format/useIntl.mjs +1 -41
  220. package/dist/esm/server/format/useIntl.mjs.map +1 -1
  221. package/dist/esm/server/format/useList.mjs +1 -33
  222. package/dist/esm/server/format/useList.mjs.map +1 -1
  223. package/dist/esm/server/format/useNumber.mjs +1 -37
  224. package/dist/esm/server/format/useNumber.mjs.map +1 -1
  225. package/dist/esm/server/format/usePercentage.mjs +1 -33
  226. package/dist/esm/server/format/usePercentage.mjs.map +1 -1
  227. package/dist/esm/server/format/useRelativeTime.mjs +1 -33
  228. package/dist/esm/server/format/useRelativeTime.mjs.map +1 -1
  229. package/dist/esm/server/format/useUnit.mjs +1 -32
  230. package/dist/esm/server/format/useUnit.mjs.map +1 -1
  231. package/dist/esm/server/index.mjs +1 -12
  232. package/dist/esm/server/serverContext.mjs +1 -54
  233. package/dist/esm/server/serverContext.mjs.map +1 -1
  234. package/dist/esm/server/t.mjs +1 -33
  235. package/dist/esm/server/t.mjs.map +1 -1
  236. package/dist/esm/server/useDictionary.mjs +1 -16
  237. package/dist/esm/server/useDictionary.mjs.map +1 -1
  238. package/dist/esm/server/useDictionaryAsync.mjs +1 -18
  239. package/dist/esm/server/useDictionaryAsync.mjs.map +1 -1
  240. package/dist/esm/server/useDictionaryDynamic.mjs +1 -19
  241. package/dist/esm/server/useDictionaryDynamic.mjs.map +1 -1
  242. package/dist/esm/server/useI18n.mjs +1 -37
  243. package/dist/esm/server/useI18n.mjs.map +1 -1
  244. package/dist/esm/server/useIntlayer.mjs +1 -16
  245. package/dist/esm/server/useIntlayer.mjs.map +1 -1
  246. package/dist/esm/server/useLoadDynamic.mjs +1 -11
  247. package/dist/esm/server/useLoadDynamic.mjs.map +1 -1
  248. package/dist/esm/server/useLocale.mjs +1 -21
  249. package/dist/esm/server/useLocale.mjs.map +1 -1
  250. package/dist/types/IntlayerNode.d.ts +1 -1
  251. package/dist/types/client/format/useDate.d.ts +1 -1
  252. package/dist/types/client/useDictionary.d.ts +2 -2
  253. package/dist/types/client/useDictionary.d.ts.map +1 -1
  254. package/dist/types/client/useDictionaryDynamic.d.ts +2 -2
  255. package/dist/types/client/useDictionaryDynamic.d.ts.map +1 -1
  256. package/dist/types/client/useI18n.d.ts +3 -3
  257. package/dist/types/client/useI18n.d.ts.map +1 -1
  258. package/dist/types/client/useIntlayer.d.ts +2 -2
  259. package/dist/types/client/useIntlayer.d.ts.map +1 -1
  260. package/dist/types/editor/ContentSelectorWrapper.d.ts +1 -1
  261. package/dist/types/editor/ContentSelectorWrapper.d.ts.map +1 -1
  262. package/dist/types/getDictionary.d.ts +1 -1
  263. package/dist/types/getIntlayer.d.ts +1 -1
  264. package/dist/types/getIntlayer.d.ts.map +1 -1
  265. package/dist/types/html/HTMLComponentTypes.d.ts +1 -1
  266. package/dist/types/html/HTMLRenderer.d.ts.map +1 -1
  267. package/dist/types/index.d.ts +1 -1
  268. package/dist/types/markdown/MarkdownRendererPlugin.d.ts.map +1 -1
  269. package/dist/types/markdown/processor.d.ts +1 -1
  270. package/dist/types/markdown/runtime.d.ts +1 -1
  271. package/dist/types/plugins.d.ts +1 -1
  272. package/dist/types/plugins.d.ts.map +1 -1
  273. package/dist/types/server/format/useCompact.d.ts +1 -1
  274. package/dist/types/server/format/useCurrency.d.ts +1 -1
  275. package/dist/types/server/format/useDate.d.ts +1 -1
  276. package/dist/types/server/format/useList.d.ts +1 -1
  277. package/dist/types/server/format/useNumber.d.ts +1 -1
  278. package/dist/types/server/format/usePercentage.d.ts +1 -1
  279. package/dist/types/server/format/useRelativeTime.d.ts +1 -1
  280. package/dist/types/server/format/useUnit.d.ts +1 -1
  281. package/dist/types/server/useDictionary.d.ts +2 -2
  282. package/dist/types/server/useDictionary.d.ts.map +1 -1
  283. package/dist/types/server/useDictionaryAsync.d.ts +2 -2
  284. package/dist/types/server/useDictionaryAsync.d.ts.map +1 -1
  285. package/dist/types/server/useDictionaryDynamic.d.ts +2 -2
  286. package/dist/types/server/useDictionaryDynamic.d.ts.map +1 -1
  287. package/dist/types/server/useI18n.d.ts +3 -3
  288. package/dist/types/server/useI18n.d.ts.map +1 -1
  289. package/dist/types/server/useIntlayer.d.ts +2 -2
  290. package/dist/types/server/useIntlayer.d.ts.map +1 -1
  291. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"getIntlayer.cjs","names":["intlayerNodePlugins","reactNodePlugins","insertionPlugin","markdownPlugin","htmlPlugin"],"sources":["../../src/getIntlayer.ts"],"sourcesContent":["import { getIntlayer as getIntlayerCore, type Plugins } from '@intlayer/core';\nimport type {\n DeclaredLocales,\n DictionaryKeys,\n DictionaryRegistryContent,\n LocalesValues,\n} from '@intlayer/types';\nimport {\n type DeepTransformContent,\n htmlPlugin,\n insertionPlugin,\n intlayerNodePlugins,\n markdownPlugin,\n reactNodePlugins,\n} from './plugins';\n\nexport const getIntlayer = <\n T extends DictionaryKeys,\n L extends LocalesValues = DeclaredLocales,\n>(\n key: T,\n locale?: L,\n additionalPlugins?: Plugins[]\n): DeepTransformContent<DictionaryRegistryContent<T>, L> => {\n const plugins: Plugins[] = [\n intlayerNodePlugins,\n reactNodePlugins,\n insertionPlugin,\n markdownPlugin,\n htmlPlugin,\n ...(additionalPlugins ?? []),\n ];\n\n return getIntlayerCore(key, locale, plugins) as any;\n};\n"],"mappings":";;;;;;AAgBA,MAAa,eAIX,KACA,QACA,sBAC0D;AAU1D,wCAAuB,KAAK,QATD;EACzBA;EACAC;EACAC;EACAC;EACAC;EACA,GAAI,qBAAqB,EAAE;EAC5B,CAE2C"}
1
+ {"version":3,"file":"getIntlayer.cjs","names":["intlayerNodePlugins","reactNodePlugins","insertionPlugin","markdownPlugin","htmlPlugin"],"sources":["../../src/getIntlayer.ts"],"sourcesContent":["import {\n getIntlayer as getIntlayerCore,\n type Plugins,\n} from '@intlayer/core/interpreter';\nimport type {\n DeclaredLocales,\n DictionaryKeys,\n DictionaryRegistryContent,\n LocalesValues,\n} from '@intlayer/types';\nimport {\n type DeepTransformContent,\n htmlPlugin,\n insertionPlugin,\n intlayerNodePlugins,\n markdownPlugin,\n reactNodePlugins,\n} from './plugins';\n\nexport const getIntlayer = <\n T extends DictionaryKeys,\n L extends LocalesValues = DeclaredLocales,\n>(\n key: T,\n locale?: L,\n additionalPlugins?: Plugins[]\n): DeepTransformContent<DictionaryRegistryContent<T>, L> => {\n const plugins: Plugins[] = [\n intlayerNodePlugins,\n reactNodePlugins,\n insertionPlugin,\n markdownPlugin,\n htmlPlugin,\n ...(additionalPlugins ?? []),\n ];\n\n return getIntlayerCore(key, locale, plugins) as any;\n};\n"],"mappings":"4LAmBA,MAAa,GAIX,EACA,EACA,KAWA,EAAA,EAAA,aAAuB,EAAK,EATD,CACzBA,EAAAA,oBACAC,EAAAA,iBACAC,EAAAA,gBACAC,EAAAA,eACAC,EAAAA,WACA,GAAI,GAAqB,EAAE,CAC5B,CAE2C"}
@@ -1,19 +1,2 @@
1
- 'use client';
2
-
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
- const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
5
- let react = require("react");
6
- let react_jsx_runtime = require("react/jsx-runtime");
7
-
8
- //#region src/html/HTMLProvider.tsx
9
- const HTMLContext = (0, react.createContext)(void 0);
10
- const useHTMLContext = () => (0, react.useContext)(HTMLContext);
11
- const HTMLProvider = ({ children, components }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(HTMLContext.Provider, {
12
- value: { components },
13
- children
14
- });
15
-
16
- //#endregion
17
- exports.HTMLProvider = HTMLProvider;
18
- exports.useHTMLContext = useHTMLContext;
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../_virtual/_rolldown/runtime.cjs`);let e=require(`react`),t=require(`react/jsx-runtime`);const n=(0,e.createContext)(void 0),r=()=>(0,e.useContext)(n),i=({children:e,components:r})=>(0,t.jsx)(n.Provider,{value:{components:r},children:e});exports.HTMLProvider=i,exports.useHTMLContext=r;
19
2
  //# sourceMappingURL=HTMLProvider.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"HTMLProvider.cjs","names":[],"sources":["../../../src/html/HTMLProvider.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n type FC,\n type PropsWithChildren,\n useContext,\n} from 'react';\nimport type { HTMLComponents } from './HTMLComponentTypes';\n\ntype HTMLContextValue = {\n components?: HTMLComponents<'permissive', {}>;\n};\n\ntype HTMLProviderProps = PropsWithChildren<{\n /**\n * Component overrides for HTML tags.\n */\n components?: HTMLComponents<'permissive', {}>;\n}>;\n\nconst HTMLContext = createContext<HTMLContextValue | undefined>(undefined);\n\nexport const useHTMLContext = () => useContext(HTMLContext);\n\nexport const HTMLProvider: FC<HTMLProviderProps> = ({\n children,\n components,\n}) => (\n <HTMLContext.Provider value={{ components }}>{children}</HTMLContext.Provider>\n);\n"],"mappings":";;;;;;;;AAqBA,MAAM,uCAA0D,OAAU;AAE1E,MAAa,6CAAkC,YAAY;AAE3D,MAAa,gBAAuC,EAClD,UACA,iBAEA,2CAAC,YAAY;CAAS,OAAO,EAAE,YAAY;CAAG;EAAgC"}
1
+ {"version":3,"file":"HTMLProvider.cjs","names":[],"sources":["../../../src/html/HTMLProvider.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n type FC,\n type PropsWithChildren,\n useContext,\n} from 'react';\nimport type { HTMLComponents } from './HTMLComponentTypes';\n\ntype HTMLContextValue = {\n components?: HTMLComponents<'permissive', {}>;\n};\n\ntype HTMLProviderProps = PropsWithChildren<{\n /**\n * Component overrides for HTML tags.\n */\n components?: HTMLComponents<'permissive', {}>;\n}>;\n\nconst HTMLContext = createContext<HTMLContextValue | undefined>(undefined);\n\nexport const useHTMLContext = () => useContext(HTMLContext);\n\nexport const HTMLProvider: FC<HTMLProviderProps> = ({\n children,\n components,\n}) => (\n <HTMLContext.Provider value={{ components }}>{children}</HTMLContext.Provider>\n);\n"],"mappings":"mLAqBA,MAAM,GAAA,EAAA,EAAA,eAA0D,IAAA,GAAU,CAE7D,OAAA,EAAA,EAAA,YAAkC,EAAY,CAE9C,GAAuC,CAClD,WACA,iBAEA,EAAA,EAAA,KAAC,EAAY,SAAA,CAAS,MAAO,CAAE,aAAY,CAAG,YAAgC"}
@@ -1,60 +1,2 @@
1
- 'use client';
2
-
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
- const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
5
- const require_html_HTMLProvider = require('./HTMLProvider.cjs');
6
- let react = require("react");
7
- let react_jsx_runtime = require("react/jsx-runtime");
8
- let _intlayer_core = require("@intlayer/core");
9
-
10
- //#region src/html/HTMLRenderer.tsx
11
- const createDefaultHTMLComponents = () => {
12
- const components = {};
13
- for (const tag of _intlayer_core.HTML_TAGS) components[tag] = ({ children, ...props }) => (0, react.createElement)(tag, props, children);
14
- return components;
15
- };
16
- const defaultHTMLComponents = createDefaultHTMLComponents();
17
- /**
18
- * Renders HTML-like content to JSX with the provided components.
19
- *
20
- * This function does not use context from HTMLProvider. Use `useHTMLRenderer`
21
- * hook if you want to leverage provider context.
22
- */
23
- const renderHTML = (content, { components } = {}) => {
24
- const mergedComponents = {
25
- ...defaultHTMLComponents,
26
- ...components
27
- };
28
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react.Fragment, { children: (0, _intlayer_core.getHTML)(content, Object.fromEntries(Object.entries(mergedComponents).filter(([, Component]) => Component).map(([key, Component]) => [key, (props) => (0, react.createElement)(Component, props)]))) });
29
- };
30
- /**
31
- * Hook that returns a function to render HTML content.
32
- *
33
- * This hook considers the configuration from the `HTMLProvider` context if available,
34
- * falling back to the provided components.
35
- */
36
- const useHTMLRenderer = ({ components } = {}) => {
37
- const context = require_html_HTMLProvider.useHTMLContext();
38
- return (content) => {
39
- return renderHTML(content, { components: {
40
- ...context?.components,
41
- ...components
42
- } });
43
- };
44
- };
45
- /**
46
- * React component that renders HTML-like content to JSX.
47
- *
48
- * This component uses the components from the `HTMLProvider` context
49
- * if available.
50
- */
51
- const HTMLRenderer = ({ children = "", components }) => {
52
- return useHTMLRenderer({ components })(children);
53
- };
54
-
55
- //#endregion
56
- exports.HTMLRenderer = HTMLRenderer;
57
- exports.defaultHTMLComponents = defaultHTMLComponents;
58
- exports.renderHTML = renderHTML;
59
- exports.useHTMLRenderer = useHTMLRenderer;
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`./HTMLProvider.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`),r=require(`@intlayer/core/interpreter`),i=require(`@intlayer/core/transpiler`);const a=(()=>{let e={};for(let n of i.HTML_TAGS)e[n]=({children:e,...r})=>(0,t.createElement)(n,r,e);return e})(),o=(e,{components:i}={})=>{let o={...a,...i};return(0,n.jsx)(t.Fragment,{children:(0,r.getHTML)(e,Object.fromEntries(Object.entries(o).filter(([,e])=>e).map(([e,n])=>[e,e=>(0,t.createElement)(n,e)])))})},s=({components:t}={})=>{let n=e.useHTMLContext();return e=>o(e,{components:{...n?.components,...t}})},c=({children:e=``,components:t})=>s({components:t})(e);exports.HTMLRenderer=c,exports.defaultHTMLComponents=a,exports.renderHTML=o,exports.useHTMLRenderer=s;
60
2
  //# sourceMappingURL=HTMLRenderer.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"HTMLRenderer.cjs","names":["HTML_TAGS","Fragment","useHTMLContext"],"sources":["../../../src/html/HTMLRenderer.tsx"],"sourcesContent":["'use client';\n\nimport { getHTML, HTML_TAGS } from '@intlayer/core';\nimport { createElement, type FC, Fragment, type JSX } from 'react';\nimport type { HTMLComponents } from './HTMLComponentTypes';\nimport { useHTMLContext } from './HTMLProvider';\n\nconst createDefaultHTMLComponents = (): HTMLComponents<'permissive', {}> => {\n const components: HTMLComponents = {};\n\n for (const tag of HTML_TAGS) {\n components[tag] = ({ children, ...props }) =>\n createElement(tag, props as any, children);\n }\n\n return components as HTMLComponents<'permissive', {}>;\n};\n\nexport const defaultHTMLComponents = createDefaultHTMLComponents();\n\nexport type RenderHTMLProps = {\n /**\n * Component overrides for HTML tags.\n * Allows you to customize how specific HTML elements are rendered.\n */\n components?: HTMLComponents<'permissive', {}>;\n};\n\n/**\n * Renders HTML-like content to JSX with the provided components.\n *\n * This function does not use context from HTMLProvider. Use `useHTMLRenderer`\n * hook if you want to leverage provider context.\n */\nexport const renderHTML = (\n content: string,\n { components }: RenderHTMLProps = {}\n): JSX.Element => {\n const mergedComponents = {\n ...defaultHTMLComponents,\n ...components,\n };\n\n // Wrap all components to ensure they are rendered via React.createElement\n const wrappedComponents = Object.fromEntries(\n Object.entries(mergedComponents)\n .filter(([, Component]) => Component)\n .map(([key, Component]) => [\n key,\n (props: any) => createElement(Component as any, props),\n ])\n );\n\n return <Fragment>{getHTML(content, wrappedComponents)}</Fragment>;\n};\n\n/**\n * Hook that returns a function to render HTML content.\n *\n * This hook considers the configuration from the `HTMLProvider` context if available,\n * falling back to the provided components.\n */\nexport const useHTMLRenderer = ({ components }: RenderHTMLProps = {}) => {\n const context = useHTMLContext();\n\n return (content: string) => {\n return renderHTML(content, {\n components: {\n ...context?.components,\n ...components,\n },\n });\n };\n};\n\nexport type HTMLRendererProps = RenderHTMLProps & {\n /**\n * The HTML content to render as a string.\n */\n children: string;\n};\n\n/**\n * React component that renders HTML-like content to JSX.\n *\n * This component uses the components from the `HTMLProvider` context\n * if available.\n */\nexport const HTMLRenderer: FC<HTMLRendererProps> = ({\n children = '',\n components,\n}) => {\n const render = useHTMLRenderer({ components });\n\n return render(children);\n};\n"],"mappings":";;;;;;;;;;AAOA,MAAM,oCAAsE;CAC1E,MAAM,aAA6B,EAAE;AAErC,MAAK,MAAM,OAAOA,yBAChB,YAAW,QAAQ,EAAE,UAAU,GAAG,qCAClB,KAAK,OAAc,SAAS;AAG9C,QAAO;;AAGT,MAAa,wBAAwB,6BAA6B;;;;;;;AAgBlE,MAAa,cACX,SACA,EAAE,eAAgC,EAAE,KACpB;CAChB,MAAM,mBAAmB;EACvB,GAAG;EACH,GAAG;EACJ;AAYD,QAAO,2CAACC,wDAAkB,SATA,OAAO,YAC/B,OAAO,QAAQ,iBAAiB,CAC7B,QAAQ,GAAG,eAAe,UAAU,CACpC,KAAK,CAAC,KAAK,eAAe,CACzB,MACC,mCAA6B,WAAkB,MAAM,CACvD,CAAC,CACL,CAEoD,GAAY;;;;;;;;AASnE,MAAa,mBAAmB,EAAE,eAAgC,EAAE,KAAK;CACvE,MAAM,UAAUC,0CAAgB;AAEhC,SAAQ,YAAoB;AAC1B,SAAO,WAAW,SAAS,EACzB,YAAY;GACV,GAAG,SAAS;GACZ,GAAG;GACJ,EACF,CAAC;;;;;;;;;AAiBN,MAAa,gBAAuC,EAClD,WAAW,IACX,iBACI;AAGJ,QAFe,gBAAgB,EAAE,YAAY,CAAC,CAEhC,SAAS"}
1
+ {"version":3,"file":"HTMLRenderer.cjs","names":["HTML_TAGS","Fragment","useHTMLContext"],"sources":["../../../src/html/HTMLRenderer.tsx"],"sourcesContent":["'use client';\n\nimport { getHTML } from '@intlayer/core/interpreter';\nimport { HTML_TAGS } from '@intlayer/core/transpiler';\nimport { createElement, type FC, Fragment, type JSX } from 'react';\nimport type { HTMLComponents } from './HTMLComponentTypes';\nimport { useHTMLContext } from './HTMLProvider';\n\nconst createDefaultHTMLComponents = (): HTMLComponents<'permissive', {}> => {\n const components: HTMLComponents = {};\n\n for (const tag of HTML_TAGS) {\n components[tag] = ({ children, ...props }) =>\n createElement(tag, props as any, children);\n }\n\n return components as HTMLComponents<'permissive', {}>;\n};\n\nexport const defaultHTMLComponents = createDefaultHTMLComponents();\n\nexport type RenderHTMLProps = {\n /**\n * Component overrides for HTML tags.\n * Allows you to customize how specific HTML elements are rendered.\n */\n components?: HTMLComponents<'permissive', {}>;\n};\n\n/**\n * Renders HTML-like content to JSX with the provided components.\n *\n * This function does not use context from HTMLProvider. Use `useHTMLRenderer`\n * hook if you want to leverage provider context.\n */\nexport const renderHTML = (\n content: string,\n { components }: RenderHTMLProps = {}\n): JSX.Element => {\n const mergedComponents = {\n ...defaultHTMLComponents,\n ...components,\n };\n\n // Wrap all components to ensure they are rendered via React.createElement\n const wrappedComponents = Object.fromEntries(\n Object.entries(mergedComponents)\n .filter(([, Component]) => Component)\n .map(([key, Component]) => [\n key,\n (props: any) => createElement(Component as any, props),\n ])\n );\n\n return <Fragment>{getHTML(content, wrappedComponents)}</Fragment>;\n};\n\n/**\n * Hook that returns a function to render HTML content.\n *\n * This hook considers the configuration from the `HTMLProvider` context if available,\n * falling back to the provided components.\n */\nexport const useHTMLRenderer = ({ components }: RenderHTMLProps = {}) => {\n const context = useHTMLContext();\n\n return (content: string) => {\n return renderHTML(content, {\n components: {\n ...context?.components,\n ...components,\n },\n });\n };\n};\n\nexport type HTMLRendererProps = RenderHTMLProps & {\n /**\n * The HTML content to render as a string.\n */\n children: string;\n};\n\n/**\n * React component that renders HTML-like content to JSX.\n *\n * This component uses the components from the `HTMLProvider` context\n * if available.\n */\nexport const HTMLRenderer: FC<HTMLRendererProps> = ({\n children = '',\n components,\n}) => {\n const render = useHTMLRenderer({ components });\n\n return render(children);\n};\n"],"mappings":"wSAmBA,MAAa,OAX+D,CAC1E,IAAM,EAA6B,EAAE,CAErC,IAAK,IAAM,KAAOA,EAAAA,UAChB,EAAW,IAAQ,CAAE,WAAU,GAAG,MAAA,EAAA,EAAA,eAClB,EAAK,EAAc,EAAS,CAG9C,OAAO,KAGyD,CAgBrD,GACX,EACA,CAAE,cAAgC,EAAE,GACpB,CAChB,IAAM,EAAmB,CACvB,GAAG,EACH,GAAG,EACJ,CAYD,OAAO,EAAA,EAAA,KAACC,EAAAA,SAAAA,CAAAA,UAAAA,EAAAA,EAAAA,SAAkB,EATA,OAAO,YAC/B,OAAO,QAAQ,EAAiB,CAC7B,QAAQ,EAAG,KAAe,EAAU,CACpC,KAAK,CAAC,EAAK,KAAe,CACzB,EACC,IAAA,EAAA,EAAA,eAA6B,EAAkB,EAAM,CACvD,CAAC,CACL,CAEoD,CAAA,CAAY,EAStD,GAAmB,CAAE,cAAgC,EAAE,GAAK,CACvE,IAAM,EAAUC,EAAAA,gBAAgB,CAEhC,MAAQ,IACC,EAAW,EAAS,CACzB,WAAY,CACV,GAAG,GAAS,WACZ,GAAG,EACJ,CACF,CAAC,EAiBO,GAAuC,CAClD,WAAW,GACX,gBAEe,EAAgB,CAAE,aAAY,CAAC,CAEhC,EAAS"}
@@ -1,37 +1,2 @@
1
- 'use client';
2
-
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
- const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
5
- const require_editor_ContentSelectorWrapper = require('../editor/ContentSelectorWrapper.cjs');
6
- const require_editor_useEditedContentRenderer = require('../editor/useEditedContentRenderer.cjs');
7
- const require_html_HTMLProvider = require('./HTMLProvider.cjs');
8
- const require_html_HTMLRenderer = require('./HTMLRenderer.cjs');
9
- let react = require("react");
10
- let react_jsx_runtime = require("react/jsx-runtime");
11
- let _intlayer_core = require("@intlayer/core");
12
-
13
- //#region src/html/HTMLRendererPlugin.tsx
14
- const HTMLRendererPlugin = (props) => {
15
- const { dictionaryKey, keyPath, html, userComponents } = props;
16
- const globalComponents = require_html_HTMLProvider.useHTMLContext()?.components || {};
17
- const editedContentContext = require_editor_useEditedContentRenderer.useEditedContentRenderer({
18
- dictionaryKey: dictionaryKey ?? "",
19
- keyPath: keyPath ?? [],
20
- children: html
21
- });
22
- const contentToRender = typeof editedContentContext === "string" ? editedContentContext : html;
23
- const mergedComponents = {
24
- ...require_html_HTMLRenderer.defaultHTMLComponents,
25
- ...globalComponents,
26
- ...userComponents
27
- };
28
- const wrappedComponents = Object.fromEntries(Object.entries(mergedComponents).filter(([, Component]) => Component).map(([key, Component]) => [key, (props) => (0, react.createElement)(Component, props)]));
29
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_editor_ContentSelectorWrapper.ContentSelectorRenderer, {
30
- ...props,
31
- children: (0, _intlayer_core.getHTML)(contentToRender, wrappedComponents)
32
- });
33
- };
34
-
35
- //#endregion
36
- exports.HTMLRendererPlugin = HTMLRendererPlugin;
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../editor/ContentSelectorWrapper.cjs`),t=require(`../editor/useEditedContentRenderer.cjs`),n=require(`./HTMLProvider.cjs`),r=require(`./HTMLRenderer.cjs`);let i=require(`react`),a=require(`react/jsx-runtime`),o=require(`@intlayer/core/interpreter`);const s=s=>{let{dictionaryKey:c,keyPath:l,html:u,userComponents:d}=s,f=n.useHTMLContext()?.components||{},p=t.useEditedContentRenderer({dictionaryKey:c??``,keyPath:l??[],children:u}),m=typeof p==`string`?p:u,h={...r.defaultHTMLComponents,...f,...d},g=Object.fromEntries(Object.entries(h).filter(([,e])=>e).map(([e,t])=>[e,e=>(0,i.createElement)(t,e)]));return(0,a.jsx)(e.ContentSelectorRenderer,{...s,children:(0,o.getHTML)(m,g)})};exports.HTMLRendererPlugin=s;
37
2
  //# sourceMappingURL=HTMLRendererPlugin.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"HTMLRendererPlugin.cjs","names":["useHTMLContext","useEditedContentRenderer","defaultHTMLComponents","ContentSelectorRenderer"],"sources":["../../../src/html/HTMLRendererPlugin.tsx"],"sourcesContent":["'use client';\n\nimport { getHTML } from '@intlayer/core';\nimport type { KeyPath, Locale } from '@intlayer/types';\nimport { createElement, type FC, type ReactNode } from 'react';\nimport { ContentSelectorRenderer } from '../editor';\nimport { useEditedContentRenderer } from '../editor/useEditedContentRenderer';\nimport { useHTMLContext } from './HTMLProvider';\nimport { defaultHTMLComponents } from './HTMLRenderer';\nimport type { ReactComponentProps } from './types';\n\ntype HTMLRendererPluginProps = {\n dictionaryKey: string;\n keyPath: KeyPath[];\n html: string;\n locale?: Locale;\n userComponents?: Record<string, any>;\n};\n\nexport const HTMLRendererPlugin: FC<HTMLRendererPluginProps> = (\n props\n): ReactNode => {\n const { dictionaryKey, keyPath, html, userComponents } = props;\n const context = useHTMLContext();\n const globalComponents = context?.components || {};\n\n const editedContentContext = useEditedContentRenderer({\n dictionaryKey: dictionaryKey ?? '',\n keyPath: keyPath ?? [],\n children: html,\n });\n\n const contentToRender =\n typeof editedContentContext === 'string' ? editedContentContext : html;\n\n const mergedComponents = {\n ...defaultHTMLComponents,\n ...globalComponents,\n ...userComponents,\n };\n\n // Wrap all components to ensure they are rendered via React.createElement\n // This is important because it allows React to handle the component's lifecycle,\n // hooks, and Babel-injected variables correctly.\n const wrappedComponents = Object.fromEntries(\n Object.entries(mergedComponents)\n .filter(([, Component]) => Component)\n .map(([key, Component]) => [\n key,\n (props: ReactComponentProps) => createElement(Component, props),\n ])\n );\n\n return (\n <ContentSelectorRenderer {...props}>\n {getHTML(contentToRender, wrappedComponents)}\n </ContentSelectorRenderer>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAmBA,MAAa,sBACX,UACc;CACd,MAAM,EAAE,eAAe,SAAS,MAAM,mBAAmB;CAEzD,MAAM,mBADUA,0CAAgB,EACE,cAAc,EAAE;CAElD,MAAM,uBAAuBC,iEAAyB;EACpD,eAAe,iBAAiB;EAChC,SAAS,WAAW,EAAE;EACtB,UAAU;EACX,CAAC;CAEF,MAAM,kBACJ,OAAO,yBAAyB,WAAW,uBAAuB;CAEpE,MAAM,mBAAmB;EACvB,GAAGC;EACH,GAAG;EACH,GAAG;EACJ;CAKD,MAAM,oBAAoB,OAAO,YAC/B,OAAO,QAAQ,iBAAiB,CAC7B,QAAQ,GAAG,eAAe,UAAU,CACpC,KAAK,CAAC,KAAK,eAAe,CACzB,MACC,mCAA6C,WAAW,MAAM,CAChE,CAAC,CACL;AAED,QACE,2CAACC;EAAwB,GAAI;wCAClB,iBAAiB,kBAAkB;GACpB"}
1
+ {"version":3,"file":"HTMLRendererPlugin.cjs","names":["useHTMLContext","useEditedContentRenderer","defaultHTMLComponents","ContentSelectorRenderer"],"sources":["../../../src/html/HTMLRendererPlugin.tsx"],"sourcesContent":["'use client';\n\nimport { getHTML } from '@intlayer/core/interpreter';\nimport type { KeyPath, Locale } from '@intlayer/types';\nimport { createElement, type FC, type ReactNode } from 'react';\nimport { ContentSelectorRenderer } from '../editor';\nimport { useEditedContentRenderer } from '../editor/useEditedContentRenderer';\nimport { useHTMLContext } from './HTMLProvider';\nimport { defaultHTMLComponents } from './HTMLRenderer';\nimport type { ReactComponentProps } from './types';\n\ntype HTMLRendererPluginProps = {\n dictionaryKey: string;\n keyPath: KeyPath[];\n html: string;\n locale?: Locale;\n userComponents?: Record<string, any>;\n};\n\nexport const HTMLRendererPlugin: FC<HTMLRendererPluginProps> = (\n props\n): ReactNode => {\n const { dictionaryKey, keyPath, html, userComponents } = props;\n const context = useHTMLContext();\n const globalComponents = context?.components || {};\n\n const editedContentContext = useEditedContentRenderer({\n dictionaryKey: dictionaryKey ?? '',\n keyPath: keyPath ?? [],\n children: html,\n });\n\n const contentToRender =\n typeof editedContentContext === 'string' ? editedContentContext : html;\n\n const mergedComponents = {\n ...defaultHTMLComponents,\n ...globalComponents,\n ...userComponents,\n };\n\n // Wrap all components to ensure they are rendered via React.createElement\n // This is important because it allows React to handle the component's lifecycle,\n // hooks, and Babel-injected variables correctly.\n const wrappedComponents = Object.fromEntries(\n Object.entries(mergedComponents)\n .filter(([, Component]) => Component)\n .map(([key, Component]) => [\n key,\n (props: ReactComponentProps) => createElement(Component, props),\n ])\n );\n\n return (\n <ContentSelectorRenderer {...props}>\n {getHTML(contentToRender, wrappedComponents)}\n </ContentSelectorRenderer>\n );\n};\n"],"mappings":"uYAmBA,MAAa,EACX,GACc,CACd,GAAM,CAAE,gBAAe,UAAS,OAAM,kBAAmB,EAEnD,EADUA,EAAAA,gBAAgB,EACE,YAAc,EAAE,CAE5C,EAAuBC,EAAAA,yBAAyB,CACpD,cAAe,GAAiB,GAChC,QAAS,GAAW,EAAE,CACtB,SAAU,EACX,CAAC,CAEI,EACJ,OAAO,GAAyB,SAAW,EAAuB,EAE9D,EAAmB,CACvB,GAAGC,EAAAA,sBACH,GAAG,EACH,GAAG,EACJ,CAKK,EAAoB,OAAO,YAC/B,OAAO,QAAQ,EAAiB,CAC7B,QAAQ,EAAG,KAAe,EAAU,CACpC,KAAK,CAAC,EAAK,KAAe,CACzB,EACC,IAAA,EAAA,EAAA,eAA6C,EAAW,EAAM,CAChE,CAAC,CACL,CAED,OACE,EAAA,EAAA,KAACC,EAAAA,wBAAAA,CAAwB,GAAI,yBAClB,EAAiB,EAAkB,EACpB"}
@@ -1,12 +1 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_html_HTMLProvider = require('./HTMLProvider.cjs');
3
- const require_html_HTMLRenderer = require('./HTMLRenderer.cjs');
4
- const require_html_HTMLRendererPlugin = require('./HTMLRendererPlugin.cjs');
5
-
6
- exports.HTMLProvider = require_html_HTMLProvider.HTMLProvider;
7
- exports.HTMLRenderer = require_html_HTMLRenderer.HTMLRenderer;
8
- exports.HTMLRendererPlugin = require_html_HTMLRendererPlugin.HTMLRendererPlugin;
9
- exports.defaultHTMLComponents = require_html_HTMLRenderer.defaultHTMLComponents;
10
- exports.renderHTML = require_html_HTMLRenderer.renderHTML;
11
- exports.useHTMLContext = require_html_HTMLProvider.useHTMLContext;
12
- exports.useHTMLRenderer = require_html_HTMLRenderer.useHTMLRenderer;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./HTMLProvider.cjs`),t=require(`./HTMLRenderer.cjs`),n=require(`./HTMLRendererPlugin.cjs`);exports.HTMLProvider=e.HTMLProvider,exports.HTMLRenderer=t.HTMLRenderer,exports.HTMLRendererPlugin=n.HTMLRendererPlugin,exports.defaultHTMLComponents=t.defaultHTMLComponents,exports.renderHTML=t.renderHTML,exports.useHTMLContext=e.useHTMLContext,exports.useHTMLRenderer=t.useHTMLRenderer;
@@ -1,52 +1 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_client_useLocaleStorage = require('./client/useLocaleStorage.cjs');
3
- const require_client_IntlayerProvider = require('./client/IntlayerProvider.cjs');
4
- const require_client_t = require('./client/t.cjs');
5
- const require_client_useDictionary = require('./client/useDictionary.cjs');
6
- const require_client_useDictionaryAsync = require('./client/useDictionaryAsync.cjs');
7
- const require_client_useLoadDynamic = require('./client/useLoadDynamic.cjs');
8
- const require_client_useDictionaryDynamic = require('./client/useDictionaryDynamic.cjs');
9
- const require_client_useI18n = require('./client/useI18n.cjs');
10
- const require_getIntlayer = require('./getIntlayer.cjs');
11
- const require_client_useIntlayer = require('./client/useIntlayer.cjs');
12
- const require_client_useLocale = require('./client/useLocale.cjs');
13
- const require_client_useLocaleBase = require('./client/useLocaleBase.cjs');
14
- const require_client_useRewriteURL = require('./client/useRewriteURL.cjs');
15
- const require_html_HTMLProvider = require('./html/HTMLProvider.cjs');
16
- const require_html_HTMLRenderer = require('./html/HTMLRenderer.cjs');
17
- const require_markdown_MarkdownProvider = require('./markdown/MarkdownProvider.cjs');
18
- const require_markdown_MarkdownRenderer = require('./markdown/MarkdownRenderer.cjs');
19
- const require_getDictionary = require('./getDictionary.cjs');
20
- const require_client_format_useIntl = require('./client/format/useIntl.cjs');
21
-
22
- exports.HTMLProvider = require_html_HTMLProvider.HTMLProvider;
23
- exports.HTMLRenderer = require_html_HTMLRenderer.HTMLRenderer;
24
- exports.IntlayerClientContext = require_client_IntlayerProvider.IntlayerClientContext;
25
- exports.IntlayerProvider = require_client_IntlayerProvider.IntlayerProvider;
26
- exports.IntlayerProviderContent = require_client_IntlayerProvider.IntlayerProviderContent;
27
- exports.MarkdownProvider = require_markdown_MarkdownProvider.MarkdownProvider;
28
- exports.MarkdownRenderer = require_markdown_MarkdownRenderer.MarkdownRenderer;
29
- exports.getDictionary = require_getDictionary.getDictionary;
30
- exports.getIntlayer = require_getIntlayer.getIntlayer;
31
- exports.localeCookie = require_client_useLocaleStorage.localeCookie;
32
- exports.localeInStorage = require_client_useLocaleStorage.localeInStorage;
33
- exports.renderHTML = require_html_HTMLRenderer.renderHTML;
34
- exports.renderMarkdown = require_markdown_MarkdownRenderer.renderMarkdown;
35
- exports.setLocaleCookie = require_client_useLocaleStorage.setLocaleCookie;
36
- exports.setLocaleInStorage = require_client_useLocaleStorage.setLocaleInStorage;
37
- exports.t = require_client_t.t;
38
- exports.useDictionary = require_client_useDictionary.useDictionary;
39
- exports.useDictionaryAsync = require_client_useDictionaryAsync.useDictionaryAsync;
40
- exports.useDictionaryDynamic = require_client_useDictionaryDynamic.useDictionaryDynamic;
41
- exports.useHTMLRenderer = require_html_HTMLRenderer.useHTMLRenderer;
42
- exports.useI18n = require_client_useI18n.useI18n;
43
- exports.useIntl = require_client_format_useIntl.useIntl;
44
- exports.useIntlayer = require_client_useIntlayer.useIntlayer;
45
- exports.useIntlayerContext = require_client_IntlayerProvider.useIntlayerContext;
46
- exports.useLoadDynamic = require_client_useLoadDynamic.useLoadDynamic;
47
- exports.useLocale = require_client_useLocale.useLocale;
48
- exports.useLocaleBase = require_client_useLocaleBase.useLocaleBase;
49
- exports.useLocaleCookie = require_client_useLocaleStorage.useLocaleCookie;
50
- exports.useLocaleStorage = require_client_useLocaleStorage.useLocaleStorage;
51
- exports.useMarkdownRenderer = require_markdown_MarkdownRenderer.useMarkdownRenderer;
52
- exports.useRewriteURL = require_client_useRewriteURL.useRewriteURL;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./client/useLocaleStorage.cjs`),t=require(`./client/IntlayerProvider.cjs`),n=require(`./client/t.cjs`),r=require(`./client/useDictionary.cjs`),i=require(`./client/useDictionaryAsync.cjs`),a=require(`./client/useLoadDynamic.cjs`),o=require(`./client/useDictionaryDynamic.cjs`),s=require(`./client/useI18n.cjs`),c=require(`./getIntlayer.cjs`),l=require(`./client/useIntlayer.cjs`),u=require(`./client/useLocale.cjs`),d=require(`./client/useLocaleBase.cjs`),f=require(`./client/useRewriteURL.cjs`),p=require(`./html/HTMLProvider.cjs`),m=require(`./html/HTMLRenderer.cjs`),h=require(`./markdown/MarkdownProvider.cjs`),g=require(`./markdown/MarkdownRenderer.cjs`),_=require(`./getDictionary.cjs`),v=require(`./client/format/useIntl.cjs`);exports.HTMLProvider=p.HTMLProvider,exports.HTMLRenderer=m.HTMLRenderer,exports.IntlayerClientContext=t.IntlayerClientContext,exports.IntlayerProvider=t.IntlayerProvider,exports.IntlayerProviderContent=t.IntlayerProviderContent,exports.MarkdownProvider=h.MarkdownProvider,exports.MarkdownRenderer=g.MarkdownRenderer,exports.getDictionary=_.getDictionary,exports.getIntlayer=c.getIntlayer,exports.localeCookie=e.localeCookie,exports.localeInStorage=e.localeInStorage,exports.renderHTML=m.renderHTML,exports.renderMarkdown=g.renderMarkdown,exports.setLocaleCookie=e.setLocaleCookie,exports.setLocaleInStorage=e.setLocaleInStorage,exports.t=n.t,exports.useDictionary=r.useDictionary,exports.useDictionaryAsync=i.useDictionaryAsync,exports.useDictionaryDynamic=o.useDictionaryDynamic,exports.useHTMLRenderer=m.useHTMLRenderer,exports.useI18n=s.useI18n,exports.useIntl=v.useIntl,exports.useIntlayer=l.useIntlayer,exports.useIntlayerContext=t.useIntlayerContext,exports.useLoadDynamic=a.useLoadDynamic,exports.useLocale=u.useLocale,exports.useLocaleBase=d.useLocaleBase,exports.useLocaleCookie=e.useLocaleCookie,exports.useLocaleStorage=e.useLocaleStorage,exports.useMarkdownRenderer=g.useMarkdownRenderer,exports.useRewriteURL=f.useRewriteURL;
@@ -1,78 +1,2 @@
1
- 'use client';
2
-
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
- const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
5
- const require_markdown_processor = require('./processor.cjs');
6
- let react = require("react");
7
- let react_jsx_runtime = require("react/jsx-runtime");
8
-
9
- //#region src/markdown/MarkdownProvider.tsx
10
- const MarkdownContext = (0, react.createContext)(void 0);
11
- const useMarkdownContext = () => (0, react.useContext)(MarkdownContext);
12
- const mergeOptions = (baseOptions, options = {}, components = {}, wrapper) => {
13
- return {
14
- ...baseOptions,
15
- ...options,
16
- forceBlock: options.forceBlock ?? baseOptions.forceBlock,
17
- forceInline: options.forceInline ?? baseOptions.forceInline,
18
- preserveFrontmatter: options.preserveFrontmatter ?? baseOptions.preserveFrontmatter,
19
- tagfilter: options.tagfilter ?? baseOptions.tagfilter,
20
- wrapper: wrapper || baseOptions.wrapper,
21
- forceWrapper: !!(wrapper || baseOptions.wrapper),
22
- components: {
23
- ...baseOptions.components,
24
- ...components
25
- }
26
- };
27
- };
28
- /**
29
- * Provider for the MarkdownRenderer component.
30
- *
31
- * It will provide the `renderMarkdown` function to the context, which can be used to render markdown.
32
- *
33
- * ```tsx
34
- * const content = useIntlayer('app');
35
- *
36
- * return (
37
- * <div>
38
- * {content.markdown} // Will be rendered with the components and options provided to the MarkdownProvider
39
- * </div>
40
- * );
41
- * ```
42
- *
43
- * @example
44
- * ```tsx
45
- * <MarkdownProvider components={{ h1: CustomHeading }}>
46
- * <MarkdownRenderer>
47
- * {markdownContent}
48
- * </MarkdownRenderer>
49
- * </MarkdownProvider>
50
- * ```
51
- */
52
- const MarkdownProvider = ({ children, components, wrapper, forceBlock, forceInline, preserveFrontmatter, tagfilter, renderMarkdown: customRenderFn }) => {
53
- const baseOptions = {
54
- components,
55
- forceBlock,
56
- forceInline,
57
- wrapper,
58
- forceWrapper: !!wrapper,
59
- preserveFrontmatter,
60
- tagfilter
61
- };
62
- const defaultRenderMarkdown = (markdown, options, components, wrapper) => {
63
- return require_markdown_processor.compiler(markdown, mergeOptions(baseOptions, options, components, wrapper));
64
- };
65
- const customRenderMarkdownWrapper = (markdown, options, components, wrapper) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MarkdownContext.Provider, {
66
- value: void 0,
67
- children: customRenderFn?.(markdown, options, components, wrapper)
68
- });
69
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MarkdownContext.Provider, {
70
- value: { renderMarkdown: customRenderFn ? customRenderMarkdownWrapper : defaultRenderMarkdown },
71
- children
72
- });
73
- };
74
-
75
- //#endregion
76
- exports.MarkdownProvider = MarkdownProvider;
77
- exports.useMarkdownContext = useMarkdownContext;
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`./processor.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`);const r=(0,t.createContext)(void 0),i=()=>(0,t.useContext)(r),a=(e,t={},n={},r)=>({...e,...t,forceBlock:t.forceBlock??e.forceBlock,forceInline:t.forceInline??e.forceInline,preserveFrontmatter:t.preserveFrontmatter??e.preserveFrontmatter,tagfilter:t.tagfilter??e.tagfilter,wrapper:r||e.wrapper,forceWrapper:!!(r||e.wrapper),components:{...e.components,...n}}),o=({children:t,components:i,wrapper:o,forceBlock:s,forceInline:c,preserveFrontmatter:l,tagfilter:u,renderMarkdown:d})=>{let f={components:i,forceBlock:s,forceInline:c,wrapper:o,forceWrapper:!!o,preserveFrontmatter:l,tagfilter:u};return(0,n.jsx)(r.Provider,{value:{renderMarkdown:d?(e,t,i,a)=>(0,n.jsx)(r.Provider,{value:void 0,children:d?.(e,t,i,a)}):(t,n,r,i)=>e.compiler(t,a(f,n,r,i))},children:t})};exports.MarkdownProvider=o,exports.useMarkdownContext=i;
78
2
  //# sourceMappingURL=MarkdownProvider.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownProvider.cjs","names":["compiler"],"sources":["../../../src/markdown/MarkdownProvider.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n type FC,\n type HTMLAttributes,\n type PropsWithChildren,\n type ReactNode,\n useContext,\n} from 'react';\nimport type { HTMLComponents } from '../html/HTMLComponentTypes';\nimport { compiler, type MarkdownRendererOptions } from './processor';\n\nexport type MarkdownProviderOptions = {\n /** Forces the compiler to always output content with a block-level wrapper. */\n forceBlock?: boolean;\n /** Forces the compiler to always output content with an inline wrapper. */\n forceInline?: boolean;\n /** Whether to preserve frontmatter in the markdown content. */\n preserveFrontmatter?: boolean;\n /** Whether to use the GitHub Tag Filter for security. */\n tagfilter?: boolean;\n};\n\ntype MarkdownContextValue = {\n renderMarkdown: (\n markdown: string,\n options?: MarkdownProviderOptions,\n components?: HTMLComponents<'permissive', {}>,\n wrapper?: FC<HTMLAttributes<HTMLElement>>\n ) => ReactNode;\n};\n\ntype MarkdownProviderProps = PropsWithChildren<\n MarkdownProviderOptions & {\n components?: HTMLComponents<'permissive', {}>;\n wrapper?: FC<HTMLAttributes<HTMLElement>>;\n renderMarkdown?: (\n markdown: string,\n options?: MarkdownProviderOptions,\n components?: HTMLComponents<'permissive', {}>,\n wrapper?: FC<HTMLAttributes<HTMLElement>>\n ) => ReactNode;\n }\n>;\n\nconst MarkdownContext = createContext<MarkdownContextValue | undefined>(\n undefined\n);\n\nexport const useMarkdownContext = () => useContext(MarkdownContext);\n\nconst mergeOptions = (\n baseOptions: MarkdownRendererOptions,\n options: MarkdownProviderOptions = {},\n components: HTMLComponents<'permissive', {}> = {},\n wrapper?: FC<HTMLAttributes<HTMLElement>>\n): MarkdownRendererOptions => {\n return {\n ...baseOptions,\n ...options,\n forceBlock: options.forceBlock ?? baseOptions.forceBlock,\n forceInline: options.forceInline ?? baseOptions.forceInline,\n preserveFrontmatter:\n options.preserveFrontmatter ?? baseOptions.preserveFrontmatter,\n tagfilter: options.tagfilter ?? baseOptions.tagfilter,\n wrapper: wrapper || baseOptions.wrapper,\n\n forceWrapper: !!(wrapper || baseOptions.wrapper),\n components: { ...baseOptions.components, ...components },\n };\n};\n\n/**\n * Provider for the MarkdownRenderer component.\n *\n * It will provide the `renderMarkdown` function to the context, which can be used to render markdown.\n *\n * ```tsx\n * const content = useIntlayer('app');\n *\n * return (\n * <div>\n * {content.markdown} // Will be rendered with the components and options provided to the MarkdownProvider\n * </div>\n * );\n * ```\n *\n * @example\n * ```tsx\n * <MarkdownProvider components={{ h1: CustomHeading }}>\n * <MarkdownRenderer>\n * {markdownContent}\n * </MarkdownRenderer>\n * </MarkdownProvider>\n * ```\n */\nexport const MarkdownProvider: FC<MarkdownProviderProps> = ({\n children,\n components,\n wrapper,\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n renderMarkdown: customRenderFn,\n}) => {\n const baseOptions: MarkdownRendererOptions = {\n components,\n forceBlock,\n forceInline,\n wrapper,\n forceWrapper: !!wrapper,\n preserveFrontmatter,\n tagfilter,\n };\n\n // Standard internal renderer\n const defaultRenderMarkdown = (\n markdown: string,\n options?: MarkdownProviderOptions,\n components?: HTMLComponents<'permissive', {}>,\n wrapper?: FC<HTMLAttributes<HTMLElement>>\n ) => {\n const mergedOptions = mergeOptions(\n baseOptions,\n options,\n components,\n wrapper\n );\n\n return compiler(markdown, mergedOptions);\n };\n\n // Wrapper for user-provided custom renderer\n // Note: We wrap in a clean Provider to prevent infinite recursion\n const customRenderMarkdownWrapper = (\n markdown: string,\n options?: MarkdownProviderOptions,\n components?: HTMLComponents<'permissive', {}>,\n wrapper?: FC<HTMLAttributes<HTMLElement>>\n ) => (\n <MarkdownContext.Provider value={undefined}>\n {customRenderFn?.(markdown, options, components, wrapper)}\n </MarkdownContext.Provider>\n );\n\n return (\n <MarkdownContext.Provider\n value={{\n renderMarkdown: customRenderFn\n ? customRenderMarkdownWrapper\n : defaultRenderMarkdown,\n }}\n >\n {children}\n </MarkdownContext.Provider>\n );\n};\n"],"mappings":";;;;;;;;;AA8CA,MAAM,2CACJ,OACD;AAED,MAAa,iDAAsC,gBAAgB;AAEnE,MAAM,gBACJ,aACA,UAAmC,EAAE,EACrC,aAA+C,EAAE,EACjD,YAC4B;AAC5B,QAAO;EACL,GAAG;EACH,GAAG;EACH,YAAY,QAAQ,cAAc,YAAY;EAC9C,aAAa,QAAQ,eAAe,YAAY;EAChD,qBACE,QAAQ,uBAAuB,YAAY;EAC7C,WAAW,QAAQ,aAAa,YAAY;EAC5C,SAAS,WAAW,YAAY;EAEhC,cAAc,CAAC,EAAE,WAAW,YAAY;EACxC,YAAY;GAAE,GAAG,YAAY;GAAY,GAAG;GAAY;EACzD;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BH,MAAa,oBAA+C,EAC1D,UACA,YACA,SACA,YACA,aACA,qBACA,WACA,gBAAgB,qBACZ;CACJ,MAAM,cAAuC;EAC3C;EACA;EACA;EACA;EACA,cAAc,CAAC,CAAC;EAChB;EACA;EACD;CAGD,MAAM,yBACJ,UACA,SACA,YACA,YACG;AAQH,SAAOA,oCAAS,UAPM,aACpB,aACA,SACA,YACA,QACD,CAEuC;;CAK1C,MAAM,+BACJ,UACA,SACA,YACA,YAEA,2CAAC,gBAAgB;EAAS,OAAO;YAC9B,iBAAiB,UAAU,SAAS,YAAY,QAAQ;GAChC;AAG7B,QACE,2CAAC,gBAAgB;EACf,OAAO,EACL,gBAAgB,iBACZ,8BACA,uBACL;EAEA;GACwB"}
1
+ {"version":3,"file":"MarkdownProvider.cjs","names":["compiler"],"sources":["../../../src/markdown/MarkdownProvider.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n type FC,\n type HTMLAttributes,\n type PropsWithChildren,\n type ReactNode,\n useContext,\n} from 'react';\nimport type { HTMLComponents } from '../html/HTMLComponentTypes';\nimport { compiler, type MarkdownRendererOptions } from './processor';\n\nexport type MarkdownProviderOptions = {\n /** Forces the compiler to always output content with a block-level wrapper. */\n forceBlock?: boolean;\n /** Forces the compiler to always output content with an inline wrapper. */\n forceInline?: boolean;\n /** Whether to preserve frontmatter in the markdown content. */\n preserveFrontmatter?: boolean;\n /** Whether to use the GitHub Tag Filter for security. */\n tagfilter?: boolean;\n};\n\ntype MarkdownContextValue = {\n renderMarkdown: (\n markdown: string,\n options?: MarkdownProviderOptions,\n components?: HTMLComponents<'permissive', {}>,\n wrapper?: FC<HTMLAttributes<HTMLElement>>\n ) => ReactNode;\n};\n\ntype MarkdownProviderProps = PropsWithChildren<\n MarkdownProviderOptions & {\n components?: HTMLComponents<'permissive', {}>;\n wrapper?: FC<HTMLAttributes<HTMLElement>>;\n renderMarkdown?: (\n markdown: string,\n options?: MarkdownProviderOptions,\n components?: HTMLComponents<'permissive', {}>,\n wrapper?: FC<HTMLAttributes<HTMLElement>>\n ) => ReactNode;\n }\n>;\n\nconst MarkdownContext = createContext<MarkdownContextValue | undefined>(\n undefined\n);\n\nexport const useMarkdownContext = () => useContext(MarkdownContext);\n\nconst mergeOptions = (\n baseOptions: MarkdownRendererOptions,\n options: MarkdownProviderOptions = {},\n components: HTMLComponents<'permissive', {}> = {},\n wrapper?: FC<HTMLAttributes<HTMLElement>>\n): MarkdownRendererOptions => {\n return {\n ...baseOptions,\n ...options,\n forceBlock: options.forceBlock ?? baseOptions.forceBlock,\n forceInline: options.forceInline ?? baseOptions.forceInline,\n preserveFrontmatter:\n options.preserveFrontmatter ?? baseOptions.preserveFrontmatter,\n tagfilter: options.tagfilter ?? baseOptions.tagfilter,\n wrapper: wrapper || baseOptions.wrapper,\n\n forceWrapper: !!(wrapper || baseOptions.wrapper),\n components: { ...baseOptions.components, ...components },\n };\n};\n\n/**\n * Provider for the MarkdownRenderer component.\n *\n * It will provide the `renderMarkdown` function to the context, which can be used to render markdown.\n *\n * ```tsx\n * const content = useIntlayer('app');\n *\n * return (\n * <div>\n * {content.markdown} // Will be rendered with the components and options provided to the MarkdownProvider\n * </div>\n * );\n * ```\n *\n * @example\n * ```tsx\n * <MarkdownProvider components={{ h1: CustomHeading }}>\n * <MarkdownRenderer>\n * {markdownContent}\n * </MarkdownRenderer>\n * </MarkdownProvider>\n * ```\n */\nexport const MarkdownProvider: FC<MarkdownProviderProps> = ({\n children,\n components,\n wrapper,\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n renderMarkdown: customRenderFn,\n}) => {\n const baseOptions: MarkdownRendererOptions = {\n components,\n forceBlock,\n forceInline,\n wrapper,\n forceWrapper: !!wrapper,\n preserveFrontmatter,\n tagfilter,\n };\n\n // Standard internal renderer\n const defaultRenderMarkdown = (\n markdown: string,\n options?: MarkdownProviderOptions,\n components?: HTMLComponents<'permissive', {}>,\n wrapper?: FC<HTMLAttributes<HTMLElement>>\n ) => {\n const mergedOptions = mergeOptions(\n baseOptions,\n options,\n components,\n wrapper\n );\n\n return compiler(markdown, mergedOptions);\n };\n\n // Wrapper for user-provided custom renderer\n // Note: We wrap in a clean Provider to prevent infinite recursion\n const customRenderMarkdownWrapper = (\n markdown: string,\n options?: MarkdownProviderOptions,\n components?: HTMLComponents<'permissive', {}>,\n wrapper?: FC<HTMLAttributes<HTMLElement>>\n ) => (\n <MarkdownContext.Provider value={undefined}>\n {customRenderFn?.(markdown, options, components, wrapper)}\n </MarkdownContext.Provider>\n );\n\n return (\n <MarkdownContext.Provider\n value={{\n renderMarkdown: customRenderFn\n ? customRenderMarkdownWrapper\n : defaultRenderMarkdown,\n }}\n >\n {children}\n </MarkdownContext.Provider>\n );\n};\n"],"mappings":"sNA8CA,MAAM,GAAA,EAAA,EAAA,eACJ,IAAA,GACD,CAEY,OAAA,EAAA,EAAA,YAAsC,EAAgB,CAE7D,GACJ,EACA,EAAmC,EAAE,CACrC,EAA+C,EAAE,CACjD,KAEO,CACL,GAAG,EACH,GAAG,EACH,WAAY,EAAQ,YAAc,EAAY,WAC9C,YAAa,EAAQ,aAAe,EAAY,YAChD,oBACE,EAAQ,qBAAuB,EAAY,oBAC7C,UAAW,EAAQ,WAAa,EAAY,UAC5C,QAAS,GAAW,EAAY,QAEhC,aAAc,CAAC,EAAE,GAAW,EAAY,SACxC,WAAY,CAAE,GAAG,EAAY,WAAY,GAAG,EAAY,CACzD,EA2BU,GAA+C,CAC1D,WACA,aACA,UACA,aACA,cACA,sBACA,YACA,eAAgB,KACZ,CACJ,IAAM,EAAuC,CAC3C,aACA,aACA,cACA,UACA,aAAc,CAAC,CAAC,EAChB,sBACA,YACD,CAgCD,OACE,EAAA,EAAA,KAAC,EAAgB,SAAA,CACf,MAAO,CACL,eAAgB,GAbpB,EACA,EACA,EACA,KAEA,EAAA,EAAA,KAAC,EAAgB,SAAA,CAAS,MAAO,IAAA,YAC9B,IAAiB,EAAU,EAAS,EAAY,EAAQ,EAChC,EAzB3B,EACA,EACA,EACA,IASOA,EAAAA,SAAS,EAPM,EACpB,EACA,EACA,EACA,EACD,CAEuC,CAsBrC,CAEA,YACwB"}
@@ -1,200 +1,2 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
- const require_markdown_processor = require('./processor.cjs');
4
- const require_markdown_MarkdownProvider = require('./MarkdownProvider.cjs');
5
- let react_jsx_runtime = require("react/jsx-runtime");
6
-
7
- //#region src/markdown/MarkdownRenderer.tsx
8
- /**
9
- * Renders markdown content to JSX with the provided components and options.
10
- *
11
- * This function does not use context from MarkdownProvider. Use `useMarkdownRenderer`
12
- * hook if you want to leverage provider context.
13
- *
14
- * @param content - The markdown string to render
15
- * @param props - Configuration options for rendering
16
- * @param props.components - Component overrides for HTML tags
17
- * @param props.wrapper - Wrapper component for multiple children
18
- * @returns JSX element representing the rendered markdown
19
- *
20
- * @example
21
- * ```tsx
22
- * import { renderMarkdown } from '@intlayer/react-intlayer/markdown';
23
- *
24
- * const markdown = '# Hello World\n\nThis is **bold** text.';
25
- * const jsx = renderMarkdown(markdown, {
26
- * components: {
27
- * h1: ({ children }) => <h1 className="title">{children}</h1>,
28
- * },
29
- * forceBlock: true,
30
- * });
31
- * ```
32
- */
33
- const renderMarkdown = (content, { components, wrapper, forceBlock, forceInline, preserveFrontmatter, tagfilter } = {}) => {
34
- return require_markdown_processor.compiler(content, {
35
- components,
36
- forceBlock,
37
- forceInline,
38
- wrapper,
39
- forceWrapper: !!wrapper,
40
- preserveFrontmatter,
41
- tagfilter
42
- });
43
- };
44
- /**
45
- * Hook that returns a function to render markdown content.
46
- *
47
- * This hook considers the configuration from the `MarkdownProvider` context if available,
48
- * falling back to the provided props or default behavior.
49
- *
50
- * @param props - Optional configuration that will override context values
51
- * @param props.components - Component overrides for HTML tags (overrides context)
52
- * @param props.wrapper - Wrapper component (overrides context)
53
- * @returns A function that takes markdown content and returns JSX
54
- *
55
- * @example
56
- * ```tsx
57
- * import { useMarkdownRenderer } from '@intlayer/react-intlayer/markdown';
58
- *
59
- * function MyComponent() {
60
- * const renderMarkdown = useMarkdownRenderer({
61
- * components: {
62
- * h1: ({ children }) => <h1 className="custom">{children}</h1>,
63
- * },
64
- * });
65
- *
66
- * return (
67
- * <div>
68
- * {renderMarkdown('# Hello\n\nThis is **markdown**')}
69
- * </div>
70
- * );
71
- * }
72
- * ```
73
- *
74
- * @example
75
- * ```tsx
76
- * // With MarkdownProvider context
77
- * function App() {
78
- * return (
79
- * <MarkdownProvider
80
- * components={{ h1: CustomHeading }}
81
- * forceBlock={true}
82
- * >
83
- * <MyComponent />
84
- * </MarkdownProvider>
85
- * );
86
- * }
87
- * ```
88
- */
89
- const useMarkdownRenderer = ({ components, wrapper, forceBlock, forceInline, preserveFrontmatter, tagfilter } = {}) => {
90
- const context = require_markdown_MarkdownProvider.useMarkdownContext();
91
- return (content) => {
92
- if (context) return context.renderMarkdown(content, {
93
- forceBlock,
94
- forceInline,
95
- preserveFrontmatter,
96
- tagfilter
97
- }, components, wrapper);
98
- return renderMarkdown(content, {
99
- components,
100
- wrapper,
101
- forceBlock,
102
- forceInline,
103
- preserveFrontmatter,
104
- tagfilter
105
- });
106
- };
107
- };
108
- /**
109
- * React component that renders markdown content to JSX.
110
- *
111
- * This component uses the `renderMarkdown` function from the `MarkdownProvider` context
112
- * if available. Otherwise, it falls back to the default compiler with provided components
113
- * and options. You can also provide a custom `renderMarkdown` function prop to override
114
- * all rendering behavior.
115
- *
116
- * @example
117
- * ```tsx
118
- * import { MarkdownRenderer } from '@intlayer/react-intlayer/markdown';
119
- *
120
- * function MyComponent() {
121
- * return (
122
- * <MarkdownRenderer>
123
- * {`# Hello World
124
- *
125
- * This is a paragraph with **bold** and *italic* text.
126
- *
127
- * - List item 1
128
- * - List item 2`}
129
- * </MarkdownRenderer>
130
- * );
131
- * }
132
- * ```
133
- *
134
- * @example
135
- * ```tsx
136
- * // With custom components
137
- * <MarkdownRenderer
138
- * components={{
139
- * h1: ({ children }) => <h1 className="text-4xl font-bold">{children}</h1>,
140
- * a: ({ href, children }) => (
141
- * <a href={href} className="text-blue-500 hover:underline">
142
- * {children}
143
- * </a>
144
- * ),
145
- * }}
146
- * forceBlock={true}
147
- * >
148
- * {markdownContent}
149
- * </MarkdownRenderer>
150
- * ```
151
- *
152
- * @example
153
- * ```tsx
154
- * // With MarkdownProvider context
155
- * function App() {
156
- * return (
157
- * <MarkdownProvider
158
- * components={{ h1: CustomHeading }}
159
- * forceBlock={true}
160
- * >
161
- * <MarkdownRenderer>
162
- * {markdownContent}
163
- * </MarkdownRenderer>
164
- * </MarkdownProvider>
165
- * );
166
- * }
167
- * ```
168
- */
169
- const MarkdownRenderer = ({ children = "", components, wrapper, forceBlock, forceInline, preserveFrontmatter, tagfilter, renderMarkdown }) => {
170
- const context = require_markdown_MarkdownProvider.useMarkdownContext();
171
- if (renderMarkdown) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: renderMarkdown(children, {
172
- components,
173
- wrapper,
174
- forceBlock,
175
- forceInline,
176
- preserveFrontmatter,
177
- tagfilter
178
- }) });
179
- if (context) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: context.renderMarkdown(children, {
180
- forceBlock,
181
- forceInline,
182
- preserveFrontmatter,
183
- tagfilter
184
- }, components, wrapper) });
185
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: require_markdown_processor.compiler(children, {
186
- components,
187
- forceBlock,
188
- forceInline,
189
- wrapper,
190
- forceWrapper: !!wrapper,
191
- preserveFrontmatter,
192
- tagfilter
193
- }) });
194
- };
195
-
196
- //#endregion
197
- exports.MarkdownRenderer = MarkdownRenderer;
198
- exports.renderMarkdown = renderMarkdown;
199
- exports.useMarkdownRenderer = useMarkdownRenderer;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`./processor.cjs`),t=require(`./MarkdownProvider.cjs`);let n=require(`react/jsx-runtime`);const r=(t,{components:n,wrapper:r,forceBlock:i,forceInline:a,preserveFrontmatter:o,tagfilter:s}={})=>e.compiler(t,{components:n,forceBlock:i,forceInline:a,wrapper:r,forceWrapper:!!r,preserveFrontmatter:o,tagfilter:s}),i=({components:e,wrapper:n,forceBlock:i,forceInline:a,preserveFrontmatter:o,tagfilter:s}={})=>{let c=t.useMarkdownContext();return t=>c?c.renderMarkdown(t,{forceBlock:i,forceInline:a,preserveFrontmatter:o,tagfilter:s},e,n):r(t,{components:e,wrapper:n,forceBlock:i,forceInline:a,preserveFrontmatter:o,tagfilter:s})},a=({children:r=``,components:i,wrapper:a,forceBlock:o,forceInline:s,preserveFrontmatter:c,tagfilter:l,renderMarkdown:u})=>{let d=t.useMarkdownContext();return u?(0,n.jsx)(n.Fragment,{children:u(r,{components:i,wrapper:a,forceBlock:o,forceInline:s,preserveFrontmatter:c,tagfilter:l})}):d?(0,n.jsx)(n.Fragment,{children:d.renderMarkdown(r,{forceBlock:o,forceInline:s,preserveFrontmatter:c,tagfilter:l},i,a)}):(0,n.jsx)(n.Fragment,{children:e.compiler(r,{components:i,forceBlock:o,forceInline:s,wrapper:a,forceWrapper:!!a,preserveFrontmatter:c,tagfilter:l})})};exports.MarkdownRenderer=a,exports.renderMarkdown=r,exports.useMarkdownRenderer=i;
200
2
  //# sourceMappingURL=MarkdownRenderer.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownRenderer.cjs","names":["compiler","useMarkdownContext"],"sources":["../../../src/markdown/MarkdownRenderer.tsx"],"sourcesContent":["import type { FC, HTMLAttributes, JSX, ReactNode } from 'react';\nimport type { HTMLComponents } from '../html/HTMLComponentTypes';\nimport {\n type MarkdownProviderOptions,\n useMarkdownContext,\n} from './MarkdownProvider';\nimport { compiler, type MarkdownRendererOptions } from './processor';\n\n/**\n * Props for rendering markdown content.\n *\n * @example\n * ```tsx\n * const props: RenderMarkdownProps = {\n * components: {\n * h1: ({ children }) => <h1 className=\"text-3xl\">{children}</h1>,\n * p: ({ children }) => <p className=\"text-gray-700\">{children}</p>,\n * },\n * wrapper: ({ children }) => <article>{children}</article>,\n * options: {\n * forceBlock: true,\n * preserveFrontmatter: false,\n * tagfilter: true,\n * },\n * };\n * ```\n */\nexport type RenderMarkdownProps = MarkdownProviderOptions & {\n /**\n * Component overrides for HTML tags.\n * Allows you to customize how specific HTML elements are rendered.\n * Only used if not wrapped in a MarkdownProvider.\n *\n * @example\n * ```tsx\n * components={{\n * h1: ({ children }) => <h1 className=\"title\">{children}</h1>,\n * a: ({ href, children }) => <Link to={href}>{children}</Link>,\n * }}\n * ```\n */\n components?: HTMLComponents<'permissive', {}>;\n /**\n * Wrapper element or component to be used when there are multiple children.\n * Only used if not wrapped in a MarkdownProvider.\n *\n * @example\n * ```tsx\n * wrapper={({ children }) => <div className=\"markdown-content\">{children}</div>}\n * ```\n */\n wrapper?: FC<HTMLAttributes<HTMLElement>>;\n};\n\n/**\n * Renders markdown content to JSX with the provided components and options.\n *\n * This function does not use context from MarkdownProvider. Use `useMarkdownRenderer`\n * hook if you want to leverage provider context.\n *\n * @param content - The markdown string to render\n * @param props - Configuration options for rendering\n * @param props.components - Component overrides for HTML tags\n * @param props.wrapper - Wrapper component for multiple children\n * @returns JSX element representing the rendered markdown\n *\n * @example\n * ```tsx\n * import { renderMarkdown } from '@intlayer/react-intlayer/markdown';\n *\n * const markdown = '# Hello World\\n\\nThis is **bold** text.';\n * const jsx = renderMarkdown(markdown, {\n * components: {\n * h1: ({ children }) => <h1 className=\"title\">{children}</h1>,\n * },\n * forceBlock: true,\n * });\n * ```\n */\nexport const renderMarkdown = (\n content: string,\n {\n components,\n wrapper,\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n }: RenderMarkdownProps = {}\n): JSX.Element => {\n // Map public options to internal processor options\n const internalOptions: MarkdownRendererOptions = {\n components,\n forceBlock,\n forceInline,\n wrapper,\n forceWrapper: !!wrapper,\n preserveFrontmatter,\n tagfilter,\n };\n\n return compiler(content, internalOptions);\n};\n\n/**\n * Hook that returns a function to render markdown content.\n *\n * This hook considers the configuration from the `MarkdownProvider` context if available,\n * falling back to the provided props or default behavior.\n *\n * @param props - Optional configuration that will override context values\n * @param props.components - Component overrides for HTML tags (overrides context)\n * @param props.wrapper - Wrapper component (overrides context)\n * @returns A function that takes markdown content and returns JSX\n *\n * @example\n * ```tsx\n * import { useMarkdownRenderer } from '@intlayer/react-intlayer/markdown';\n *\n * function MyComponent() {\n * const renderMarkdown = useMarkdownRenderer({\n * components: {\n * h1: ({ children }) => <h1 className=\"custom\">{children}</h1>,\n * },\n * });\n *\n * return (\n * <div>\n * {renderMarkdown('# Hello\\n\\nThis is **markdown**')}\n * </div>\n * );\n * }\n * ```\n *\n * @example\n * ```tsx\n * // With MarkdownProvider context\n * function App() {\n * return (\n * <MarkdownProvider\n * components={{ h1: CustomHeading }}\n * forceBlock={true}\n * >\n * <MyComponent />\n * </MarkdownProvider>\n * );\n * }\n * ```\n */\nexport const useMarkdownRenderer = ({\n components,\n wrapper,\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n}: RenderMarkdownProps = {}) => {\n const context = useMarkdownContext();\n\n return (content: string) => {\n if (context) {\n return context.renderMarkdown(\n content,\n {\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n },\n components,\n wrapper\n );\n }\n\n return renderMarkdown(content, {\n components,\n wrapper,\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n });\n };\n};\n\n/**\n * Props for the MarkdownRenderer component.\n *\n * @example\n * ```tsx\n * const props: MarkdownRendererProps = {\n * children: '# Hello World\\n\\nThis is **bold** text.',\n * components: {\n * h1: ({ children }) => <h1 className=\"title\">{children}</h1>,\n * },\n * wrapper: ({ children }) => <article>{children}</article>,\n * forceBlock: true,\n * };\n * ```\n */\nexport type MarkdownRendererProps = RenderMarkdownProps & {\n /**\n * The markdown content to render as a string.\n *\n * @example\n * ```tsx\n * <MarkdownRenderer>\n * {`# Title\\n\\nParagraph with **bold** text.`}\n * </MarkdownRenderer>\n * ```\n */\n children: string;\n /**\n * Custom render function for markdown.\n * If provided, it will overwrite context and default rendering.\n *\n * @param markdown - The markdown string to render\n * @param options - Optional rendering options\n * @returns React node representing the rendered markdown\n *\n * @example\n * ```tsx\n * <MarkdownRenderer\n * renderMarkdown={(md, opts) => {\n * // Custom rendering logic\n * return <div dangerouslySetInnerHTML={{ __html: customParser(md) }} />;\n * }}\n * >\n * {markdownContent}\n * </MarkdownRenderer>\n * ```\n */\n renderMarkdown?: (\n markdown: string,\n options?: {\n components?: HTMLComponents<'permissive', {}>;\n wrapper?: FC;\n forceBlock?: boolean;\n forceInline?: boolean;\n preserveFrontmatter?: boolean;\n tagfilter?: boolean;\n }\n ) => ReactNode;\n};\n\n/**\n * React component that renders markdown content to JSX.\n *\n * This component uses the `renderMarkdown` function from the `MarkdownProvider` context\n * if available. Otherwise, it falls back to the default compiler with provided components\n * and options. You can also provide a custom `renderMarkdown` function prop to override\n * all rendering behavior.\n *\n * @example\n * ```tsx\n * import { MarkdownRenderer } from '@intlayer/react-intlayer/markdown';\n *\n * function MyComponent() {\n * return (\n * <MarkdownRenderer>\n * {`# Hello World\n *\n * This is a paragraph with **bold** and *italic* text.\n *\n * - List item 1\n * - List item 2`}\n * </MarkdownRenderer>\n * );\n * }\n * ```\n *\n * @example\n * ```tsx\n * // With custom components\n * <MarkdownRenderer\n * components={{\n * h1: ({ children }) => <h1 className=\"text-4xl font-bold\">{children}</h1>,\n * a: ({ href, children }) => (\n * <a href={href} className=\"text-blue-500 hover:underline\">\n * {children}\n * </a>\n * ),\n * }}\n * forceBlock={true}\n * >\n * {markdownContent}\n * </MarkdownRenderer>\n * ```\n *\n * @example\n * ```tsx\n * // With MarkdownProvider context\n * function App() {\n * return (\n * <MarkdownProvider\n * components={{ h1: CustomHeading }}\n * forceBlock={true}\n * >\n * <MarkdownRenderer>\n * {markdownContent}\n * </MarkdownRenderer>\n * </MarkdownProvider>\n * );\n * }\n * ```\n */\nexport const MarkdownRenderer: FC<MarkdownRendererProps> = ({\n children = '',\n components,\n wrapper,\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n renderMarkdown,\n}) => {\n const context = useMarkdownContext();\n\n if (renderMarkdown) {\n return (\n <>\n {renderMarkdown(children, {\n components,\n wrapper,\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n })}\n </>\n );\n }\n\n if (context) {\n return (\n <>\n {context.renderMarkdown(\n children,\n {\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n },\n components,\n wrapper\n )}\n </>\n );\n }\n\n // Map public options to internal processor options\n const internalOptions: MarkdownRendererOptions = {\n components,\n forceBlock,\n forceInline,\n wrapper,\n forceWrapper: !!wrapper,\n preserveFrontmatter,\n tagfilter,\n };\n\n return <>{compiler(children, internalOptions)}</>;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EA,MAAa,kBACX,SACA,EACE,YACA,SACA,YACA,aACA,qBACA,cACuB,EAAE,KACX;AAYhB,QAAOA,oCAAS,SAViC;EAC/C;EACA;EACA;EACA;EACA,cAAc,CAAC,CAAC;EAChB;EACA;EACD,CAEwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgD3C,MAAa,uBAAuB,EAClC,YACA,SACA,YACA,aACA,qBACA,cACuB,EAAE,KAAK;CAC9B,MAAM,UAAUC,sDAAoB;AAEpC,SAAQ,YAAoB;AAC1B,MAAI,QACF,QAAO,QAAQ,eACb,SACA;GACE;GACA;GACA;GACA;GACD,EACD,YACA,QACD;AAGH,SAAO,eAAe,SAAS;GAC7B;GACA;GACA;GACA;GACA;GACA;GACD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6HN,MAAa,oBAA+C,EAC1D,WAAW,IACX,YACA,SACA,YACA,aACA,qBACA,WACA,qBACI;CACJ,MAAM,UAAUA,sDAAoB;AAEpC,KAAI,eACF,QACE,mFACG,eAAe,UAAU;EACxB;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,GACD;AAIP,KAAI,QACF,QACE,mFACG,QAAQ,eACP,UACA;EACE;EACA;EACA;EACA;EACD,EACD,YACA,QACD,GACA;AAeP,QAAO,mFAAGD,oCAAS,UAV8B;EAC/C;EACA;EACA;EACA;EACA,cAAc,CAAC,CAAC;EAChB;EACA;EACD,CAE4C,GAAI"}
1
+ {"version":3,"file":"MarkdownRenderer.cjs","names":["compiler","useMarkdownContext"],"sources":["../../../src/markdown/MarkdownRenderer.tsx"],"sourcesContent":["import type { FC, HTMLAttributes, JSX, ReactNode } from 'react';\nimport type { HTMLComponents } from '../html/HTMLComponentTypes';\nimport {\n type MarkdownProviderOptions,\n useMarkdownContext,\n} from './MarkdownProvider';\nimport { compiler, type MarkdownRendererOptions } from './processor';\n\n/**\n * Props for rendering markdown content.\n *\n * @example\n * ```tsx\n * const props: RenderMarkdownProps = {\n * components: {\n * h1: ({ children }) => <h1 className=\"text-3xl\">{children}</h1>,\n * p: ({ children }) => <p className=\"text-gray-700\">{children}</p>,\n * },\n * wrapper: ({ children }) => <article>{children}</article>,\n * options: {\n * forceBlock: true,\n * preserveFrontmatter: false,\n * tagfilter: true,\n * },\n * };\n * ```\n */\nexport type RenderMarkdownProps = MarkdownProviderOptions & {\n /**\n * Component overrides for HTML tags.\n * Allows you to customize how specific HTML elements are rendered.\n * Only used if not wrapped in a MarkdownProvider.\n *\n * @example\n * ```tsx\n * components={{\n * h1: ({ children }) => <h1 className=\"title\">{children}</h1>,\n * a: ({ href, children }) => <Link to={href}>{children}</Link>,\n * }}\n * ```\n */\n components?: HTMLComponents<'permissive', {}>;\n /**\n * Wrapper element or component to be used when there are multiple children.\n * Only used if not wrapped in a MarkdownProvider.\n *\n * @example\n * ```tsx\n * wrapper={({ children }) => <div className=\"markdown-content\">{children}</div>}\n * ```\n */\n wrapper?: FC<HTMLAttributes<HTMLElement>>;\n};\n\n/**\n * Renders markdown content to JSX with the provided components and options.\n *\n * This function does not use context from MarkdownProvider. Use `useMarkdownRenderer`\n * hook if you want to leverage provider context.\n *\n * @param content - The markdown string to render\n * @param props - Configuration options for rendering\n * @param props.components - Component overrides for HTML tags\n * @param props.wrapper - Wrapper component for multiple children\n * @returns JSX element representing the rendered markdown\n *\n * @example\n * ```tsx\n * import { renderMarkdown } from '@intlayer/react-intlayer/markdown';\n *\n * const markdown = '# Hello World\\n\\nThis is **bold** text.';\n * const jsx = renderMarkdown(markdown, {\n * components: {\n * h1: ({ children }) => <h1 className=\"title\">{children}</h1>,\n * },\n * forceBlock: true,\n * });\n * ```\n */\nexport const renderMarkdown = (\n content: string,\n {\n components,\n wrapper,\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n }: RenderMarkdownProps = {}\n): JSX.Element => {\n // Map public options to internal processor options\n const internalOptions: MarkdownRendererOptions = {\n components,\n forceBlock,\n forceInline,\n wrapper,\n forceWrapper: !!wrapper,\n preserveFrontmatter,\n tagfilter,\n };\n\n return compiler(content, internalOptions);\n};\n\n/**\n * Hook that returns a function to render markdown content.\n *\n * This hook considers the configuration from the `MarkdownProvider` context if available,\n * falling back to the provided props or default behavior.\n *\n * @param props - Optional configuration that will override context values\n * @param props.components - Component overrides for HTML tags (overrides context)\n * @param props.wrapper - Wrapper component (overrides context)\n * @returns A function that takes markdown content and returns JSX\n *\n * @example\n * ```tsx\n * import { useMarkdownRenderer } from '@intlayer/react-intlayer/markdown';\n *\n * function MyComponent() {\n * const renderMarkdown = useMarkdownRenderer({\n * components: {\n * h1: ({ children }) => <h1 className=\"custom\">{children}</h1>,\n * },\n * });\n *\n * return (\n * <div>\n * {renderMarkdown('# Hello\\n\\nThis is **markdown**')}\n * </div>\n * );\n * }\n * ```\n *\n * @example\n * ```tsx\n * // With MarkdownProvider context\n * function App() {\n * return (\n * <MarkdownProvider\n * components={{ h1: CustomHeading }}\n * forceBlock={true}\n * >\n * <MyComponent />\n * </MarkdownProvider>\n * );\n * }\n * ```\n */\nexport const useMarkdownRenderer = ({\n components,\n wrapper,\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n}: RenderMarkdownProps = {}) => {\n const context = useMarkdownContext();\n\n return (content: string) => {\n if (context) {\n return context.renderMarkdown(\n content,\n {\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n },\n components,\n wrapper\n );\n }\n\n return renderMarkdown(content, {\n components,\n wrapper,\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n });\n };\n};\n\n/**\n * Props for the MarkdownRenderer component.\n *\n * @example\n * ```tsx\n * const props: MarkdownRendererProps = {\n * children: '# Hello World\\n\\nThis is **bold** text.',\n * components: {\n * h1: ({ children }) => <h1 className=\"title\">{children}</h1>,\n * },\n * wrapper: ({ children }) => <article>{children}</article>,\n * forceBlock: true,\n * };\n * ```\n */\nexport type MarkdownRendererProps = RenderMarkdownProps & {\n /**\n * The markdown content to render as a string.\n *\n * @example\n * ```tsx\n * <MarkdownRenderer>\n * {`# Title\\n\\nParagraph with **bold** text.`}\n * </MarkdownRenderer>\n * ```\n */\n children: string;\n /**\n * Custom render function for markdown.\n * If provided, it will overwrite context and default rendering.\n *\n * @param markdown - The markdown string to render\n * @param options - Optional rendering options\n * @returns React node representing the rendered markdown\n *\n * @example\n * ```tsx\n * <MarkdownRenderer\n * renderMarkdown={(md, opts) => {\n * // Custom rendering logic\n * return <div dangerouslySetInnerHTML={{ __html: customParser(md) }} />;\n * }}\n * >\n * {markdownContent}\n * </MarkdownRenderer>\n * ```\n */\n renderMarkdown?: (\n markdown: string,\n options?: {\n components?: HTMLComponents<'permissive', {}>;\n wrapper?: FC;\n forceBlock?: boolean;\n forceInline?: boolean;\n preserveFrontmatter?: boolean;\n tagfilter?: boolean;\n }\n ) => ReactNode;\n};\n\n/**\n * React component that renders markdown content to JSX.\n *\n * This component uses the `renderMarkdown` function from the `MarkdownProvider` context\n * if available. Otherwise, it falls back to the default compiler with provided components\n * and options. You can also provide a custom `renderMarkdown` function prop to override\n * all rendering behavior.\n *\n * @example\n * ```tsx\n * import { MarkdownRenderer } from '@intlayer/react-intlayer/markdown';\n *\n * function MyComponent() {\n * return (\n * <MarkdownRenderer>\n * {`# Hello World\n *\n * This is a paragraph with **bold** and *italic* text.\n *\n * - List item 1\n * - List item 2`}\n * </MarkdownRenderer>\n * );\n * }\n * ```\n *\n * @example\n * ```tsx\n * // With custom components\n * <MarkdownRenderer\n * components={{\n * h1: ({ children }) => <h1 className=\"text-4xl font-bold\">{children}</h1>,\n * a: ({ href, children }) => (\n * <a href={href} className=\"text-blue-500 hover:underline\">\n * {children}\n * </a>\n * ),\n * }}\n * forceBlock={true}\n * >\n * {markdownContent}\n * </MarkdownRenderer>\n * ```\n *\n * @example\n * ```tsx\n * // With MarkdownProvider context\n * function App() {\n * return (\n * <MarkdownProvider\n * components={{ h1: CustomHeading }}\n * forceBlock={true}\n * >\n * <MarkdownRenderer>\n * {markdownContent}\n * </MarkdownRenderer>\n * </MarkdownProvider>\n * );\n * }\n * ```\n */\nexport const MarkdownRenderer: FC<MarkdownRendererProps> = ({\n children = '',\n components,\n wrapper,\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n renderMarkdown,\n}) => {\n const context = useMarkdownContext();\n\n if (renderMarkdown) {\n return (\n <>\n {renderMarkdown(children, {\n components,\n wrapper,\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n })}\n </>\n );\n }\n\n if (context) {\n return (\n <>\n {context.renderMarkdown(\n children,\n {\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n },\n components,\n wrapper\n )}\n </>\n );\n }\n\n // Map public options to internal processor options\n const internalOptions: MarkdownRendererOptions = {\n components,\n forceBlock,\n forceInline,\n wrapper,\n forceWrapper: !!wrapper,\n preserveFrontmatter,\n tagfilter,\n };\n\n return <>{compiler(children, internalOptions)}</>;\n};\n"],"mappings":"0NA+EA,MAAa,GACX,EACA,CACE,aACA,UACA,aACA,cACA,sBACA,aACuB,EAAE,GAapBA,EAAAA,SAAS,EAViC,CAC/C,aACA,aACA,cACA,UACA,aAAc,CAAC,CAAC,EAChB,sBACA,YACD,CAEwC,CAgD9B,GAAuB,CAClC,aACA,UACA,aACA,cACA,sBACA,aACuB,EAAE,GAAK,CAC9B,IAAM,EAAUC,EAAAA,oBAAoB,CAEpC,MAAQ,IACF,EACK,EAAQ,eACb,EACA,CACE,aACA,cACA,sBACA,YACD,CACD,EACA,EACD,CAGI,EAAe,EAAS,CAC7B,aACA,UACA,aACA,cACA,sBACA,YACD,CAAC,EA6HO,GAA+C,CAC1D,WAAW,GACX,aACA,UACA,aACA,cACA,sBACA,YACA,oBACI,CACJ,IAAM,EAAUA,EAAAA,oBAAoB,CA8CpC,OA5CI,GAEA,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,SACG,EAAe,EAAU,CACxB,aACA,UACA,aACA,cACA,sBACA,YACD,CAAC,CAAA,CACD,CAIH,GAEA,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,SACG,EAAQ,eACP,EACA,CACE,aACA,cACA,sBACA,YACD,CACD,EACA,EACD,CAAA,CACA,EAeA,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,SAAGD,EAAAA,SAAS,EAV8B,CAC/C,aACA,aACA,cACA,UACA,aAAc,CAAC,CAAC,EAChB,sBACA,YACD,CAE4C,CAAA,CAAI"}