pd-markdown 1.0.0

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 (235) hide show
  1. package/package.json +26 -0
  2. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/index.d.ts +4 -0
  3. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/index.d.ts.map +1 -0
  4. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/index.js +5 -0
  5. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/index.js.map +1 -0
  6. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/index.d.ts +4 -0
  7. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/index.d.ts.map +1 -0
  8. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/index.js +4 -0
  9. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/index.js.map +1 -0
  10. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/heading.d.ts +6 -0
  11. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/heading.d.ts.map +1 -0
  12. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/heading.js +36 -0
  13. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/heading.js.map +1 -0
  14. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/list.d.ts +14 -0
  15. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/list.d.ts.map +1 -0
  16. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/list.js +18 -0
  17. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/list.js.map +1 -0
  18. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/table.d.ts +27 -0
  19. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/table.d.ts.map +1 -0
  20. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/table.js +37 -0
  21. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/table.js.map +1 -0
  22. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/processor.d.ts +22 -0
  23. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/processor.d.ts.map +1 -0
  24. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/processor.js +95 -0
  25. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/processor.js.map +1 -0
  26. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/types/index.d.ts +55 -0
  27. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/types/index.d.ts.map +1 -0
  28. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/types/index.js +2 -0
  29. package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/types/index.js.map +1 -0
  30. package/packages/parser/__tests__/frontmatter.test.ts +69 -0
  31. package/packages/parser/__tests__/gfm.test.ts +83 -0
  32. package/packages/parser/__tests__/processor.test.ts +136 -0
  33. package/packages/parser/__tests__/transform/heading.test.ts +56 -0
  34. package/packages/parser/__tests__/transform/list.test.ts +67 -0
  35. package/packages/parser/__tests__/transform/table.test.ts +85 -0
  36. package/packages/parser/dist/index.cjs +191 -0
  37. package/packages/parser/dist/index.cjs.map +1 -0
  38. package/packages/parser/dist/index.d.ts +4 -0
  39. package/packages/parser/dist/index.d.ts.map +1 -0
  40. package/packages/parser/dist/index.mjs +185 -0
  41. package/packages/parser/dist/index.mjs.map +1 -0
  42. package/packages/parser/dist/plugins/index.d.ts +4 -0
  43. package/packages/parser/dist/plugins/index.d.ts.map +1 -0
  44. package/packages/parser/dist/plugins/transform/heading.d.ts +6 -0
  45. package/packages/parser/dist/plugins/transform/heading.d.ts.map +1 -0
  46. package/packages/parser/dist/plugins/transform/list.d.ts +14 -0
  47. package/packages/parser/dist/plugins/transform/list.d.ts.map +1 -0
  48. package/packages/parser/dist/plugins/transform/table.d.ts +27 -0
  49. package/packages/parser/dist/plugins/transform/table.d.ts.map +1 -0
  50. package/packages/parser/dist/processor.d.ts +22 -0
  51. package/packages/parser/dist/processor.d.ts.map +1 -0
  52. package/packages/parser/dist/types/index.d.ts +55 -0
  53. package/packages/parser/dist/types/index.d.ts.map +1 -0
  54. package/packages/parser/node_modules/.bin/yaml +17 -0
  55. package/packages/parser/package.json +38 -0
  56. package/packages/parser/rollup.config.ts +38 -0
  57. package/packages/parser/src/index.ts +15 -0
  58. package/packages/parser/src/plugins/index.ts +3 -0
  59. package/packages/parser/src/plugins/transform/heading.ts +40 -0
  60. package/packages/parser/src/plugins/transform/list.ts +29 -0
  61. package/packages/parser/src/plugins/transform/table.ts +62 -0
  62. package/packages/parser/src/processor.ts +119 -0
  63. package/packages/parser/src/types/index.ts +60 -0
  64. package/packages/parser/tsconfig.json +9 -0
  65. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/query.d.ts +36 -0
  66. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/query.d.ts.map +1 -0
  67. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/query.js +99 -0
  68. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/query.js.map +1 -0
  69. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/traverse.d.ts +22 -0
  70. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/traverse.d.ts.map +1 -0
  71. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/traverse.js +46 -0
  72. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/traverse.js.map +1 -0
  73. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/index.d.ts +7 -0
  74. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/index.d.ts.map +1 -0
  75. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/index.js +8 -0
  76. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/index.js.map +1 -0
  77. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/sanitize.d.ts +22 -0
  78. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/sanitize.d.ts.map +1 -0
  79. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/sanitize.js +140 -0
  80. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/sanitize.js.map +1 -0
  81. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/slugify.d.ts +16 -0
  82. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/slugify.d.ts.map +1 -0
  83. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/slugify.js +39 -0
  84. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/slugify.js.map +1 -0
  85. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/types/index.d.ts +49 -0
  86. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/types/index.d.ts.map +1 -0
  87. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/types/index.js +19 -0
  88. package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/types/index.js.map +1 -0
  89. package/packages/utils/__tests__/query.test.ts +155 -0
  90. package/packages/utils/__tests__/sanitize.test.ts +96 -0
  91. package/packages/utils/__tests__/slugify.test.ts +71 -0
  92. package/packages/utils/__tests__/traverse.test.ts +131 -0
  93. package/packages/utils/dist/ast/query.d.ts +36 -0
  94. package/packages/utils/dist/ast/query.d.ts.map +1 -0
  95. package/packages/utils/dist/ast/traverse.d.ts +22 -0
  96. package/packages/utils/dist/ast/traverse.d.ts.map +1 -0
  97. package/packages/utils/dist/index.cjs +358 -0
  98. package/packages/utils/dist/index.cjs.map +1 -0
  99. package/packages/utils/dist/index.d.ts +7 -0
  100. package/packages/utils/dist/index.d.ts.map +1 -0
  101. package/packages/utils/dist/index.mjs +343 -0
  102. package/packages/utils/dist/index.mjs.map +1 -0
  103. package/packages/utils/dist/string/sanitize.d.ts +22 -0
  104. package/packages/utils/dist/string/sanitize.d.ts.map +1 -0
  105. package/packages/utils/dist/string/slugify.d.ts +16 -0
  106. package/packages/utils/dist/string/slugify.d.ts.map +1 -0
  107. package/packages/utils/dist/types/index.d.ts +49 -0
  108. package/packages/utils/dist/types/index.d.ts.map +1 -0
  109. package/packages/utils/package.json +27 -0
  110. package/packages/utils/rollup.config.ts +26 -0
  111. package/packages/utils/src/ast/query.ts +127 -0
  112. package/packages/utils/src/ast/traverse.ts +73 -0
  113. package/packages/utils/src/index.ts +20 -0
  114. package/packages/utils/src/string/sanitize.ts +155 -0
  115. package/packages/utils/src/string/slugify.ts +43 -0
  116. package/packages/utils/src/types/index.ts +72 -0
  117. package/packages/utils/tsconfig.json +8 -0
  118. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/MarkdownRenderer.d.ts +27 -0
  119. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/MarkdownRenderer.d.ts.map +1 -0
  120. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/MarkdownRenderer.js +39 -0
  121. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/MarkdownRenderer.js.map +1 -0
  122. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/NodeRenderer.d.ts +10 -0
  123. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/NodeRenderer.d.ts.map +1 -0
  124. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/NodeRenderer.js +130 -0
  125. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/NodeRenderer.js.map +1 -0
  126. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/context.d.ts +17 -0
  127. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/context.d.ts.map +1 -0
  128. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/context.js +14 -0
  129. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/context.js.map +1 -0
  130. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Blockquote.d.ts +8 -0
  131. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Blockquote.d.ts.map +1 -0
  132. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Blockquote.js +5 -0
  133. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Blockquote.js.map +1 -0
  134. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Code.d.ts +13 -0
  135. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Code.d.ts.map +1 -0
  136. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Code.js +9 -0
  137. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Code.js.map +1 -0
  138. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Heading.d.ts +8 -0
  139. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Heading.d.ts.map +1 -0
  140. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Heading.js +7 -0
  141. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Heading.js.map +1 -0
  142. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Image.d.ts +7 -0
  143. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Image.d.ts.map +1 -0
  144. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Image.js +5 -0
  145. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Image.js.map +1 -0
  146. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Link.d.ts +8 -0
  147. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Link.d.ts.map +1 -0
  148. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Link.js +7 -0
  149. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Link.js.map +1 -0
  150. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/List.d.ts +13 -0
  151. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/List.d.ts.map +1 -0
  152. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/List.js +14 -0
  153. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/List.js.map +1 -0
  154. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Paragraph.d.ts +8 -0
  155. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Paragraph.d.ts.map +1 -0
  156. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Paragraph.js +5 -0
  157. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Paragraph.js.map +1 -0
  158. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Table.d.ts +19 -0
  159. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Table.d.ts.map +1 -0
  160. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Table.js +18 -0
  161. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Table.js.map +1 -0
  162. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/index.d.ts +34 -0
  163. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/index.d.ts.map +1 -0
  164. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/index.js +28 -0
  165. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/index.js.map +1 -0
  166. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/hooks/useMarkdown.d.ts +11 -0
  167. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/hooks/useMarkdown.d.ts.map +1 -0
  168. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/hooks/useMarkdown.js +28 -0
  169. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/hooks/useMarkdown.js.map +1 -0
  170. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/index.d.ts +6 -0
  171. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/index.d.ts.map +1 -0
  172. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/index.js +9 -0
  173. package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/index.js.map +1 -0
  174. package/packages/web/__tests__/MarkdownRenderer.test.tsx +89 -0
  175. package/packages/web/__tests__/NodeRenderer.test.tsx +97 -0
  176. package/packages/web/__tests__/components/Code.test.tsx +71 -0
  177. package/packages/web/__tests__/components/Heading.test.tsx +65 -0
  178. package/packages/web/__tests__/components/List.test.tsx +100 -0
  179. package/packages/web/__tests__/components/Table.test.tsx +105 -0
  180. package/packages/web/__tests__/useMarkdown.test.ts +63 -0
  181. package/packages/web/dist/components/MarkdownRenderer.d.ts +27 -0
  182. package/packages/web/dist/components/MarkdownRenderer.d.ts.map +1 -0
  183. package/packages/web/dist/components/NodeRenderer.d.ts +10 -0
  184. package/packages/web/dist/components/NodeRenderer.d.ts.map +1 -0
  185. package/packages/web/dist/components/context.d.ts +17 -0
  186. package/packages/web/dist/components/context.d.ts.map +1 -0
  187. package/packages/web/dist/components/defaults/Blockquote.d.ts +8 -0
  188. package/packages/web/dist/components/defaults/Blockquote.d.ts.map +1 -0
  189. package/packages/web/dist/components/defaults/Code.d.ts +13 -0
  190. package/packages/web/dist/components/defaults/Code.d.ts.map +1 -0
  191. package/packages/web/dist/components/defaults/Heading.d.ts +8 -0
  192. package/packages/web/dist/components/defaults/Heading.d.ts.map +1 -0
  193. package/packages/web/dist/components/defaults/Image.d.ts +7 -0
  194. package/packages/web/dist/components/defaults/Image.d.ts.map +1 -0
  195. package/packages/web/dist/components/defaults/Link.d.ts +8 -0
  196. package/packages/web/dist/components/defaults/Link.d.ts.map +1 -0
  197. package/packages/web/dist/components/defaults/List.d.ts +13 -0
  198. package/packages/web/dist/components/defaults/List.d.ts.map +1 -0
  199. package/packages/web/dist/components/defaults/Paragraph.d.ts +8 -0
  200. package/packages/web/dist/components/defaults/Paragraph.d.ts.map +1 -0
  201. package/packages/web/dist/components/defaults/Table.d.ts +19 -0
  202. package/packages/web/dist/components/defaults/Table.d.ts.map +1 -0
  203. package/packages/web/dist/components/defaults/index.d.ts +34 -0
  204. package/packages/web/dist/components/defaults/index.d.ts.map +1 -0
  205. package/packages/web/dist/hooks/useMarkdown.d.ts +11 -0
  206. package/packages/web/dist/hooks/useMarkdown.d.ts.map +1 -0
  207. package/packages/web/dist/index.cjs +306 -0
  208. package/packages/web/dist/index.cjs.map +1 -0
  209. package/packages/web/dist/index.d.ts +6 -0
  210. package/packages/web/dist/index.d.ts.map +1 -0
  211. package/packages/web/dist/index.mjs +287 -0
  212. package/packages/web/dist/index.mjs.map +1 -0
  213. package/packages/web/package.json +40 -0
  214. package/packages/web/rollup.config.ts +36 -0
  215. package/packages/web/src/components/MarkdownRenderer.tsx +70 -0
  216. package/packages/web/src/components/NodeRenderer.tsx +205 -0
  217. package/packages/web/src/components/context.ts +24 -0
  218. package/packages/web/src/components/defaults/Blockquote.tsx +11 -0
  219. package/packages/web/src/components/defaults/Code.tsx +26 -0
  220. package/packages/web/src/components/defaults/Heading.tsx +14 -0
  221. package/packages/web/src/components/defaults/Image.tsx +10 -0
  222. package/packages/web/src/components/defaults/Link.tsx +18 -0
  223. package/packages/web/src/components/defaults/List.tsx +33 -0
  224. package/packages/web/src/components/defaults/Paragraph.tsx +11 -0
  225. package/packages/web/src/components/defaults/Table.tsx +50 -0
  226. package/packages/web/src/components/defaults/index.tsx +80 -0
  227. package/packages/web/src/hooks/useMarkdown.ts +32 -0
  228. package/packages/web/src/index.ts +37 -0
  229. package/packages/web/tsconfig.json +11 -0
  230. package/packages/web/vitest.config.ts +9 -0
  231. package/pnpm-workspace.yaml +2 -0
  232. package/tsconfig.base.json +26 -0
  233. package/tsconfig.json +8 -0
  234. package/vitest.config.ts +28 -0
  235. package/vitest.setup.ts +1 -0
@@ -0,0 +1,306 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var parser = require('@pd-markdown/parser');
5
+ var react = require('react');
6
+
7
+ /**
8
+ * Context for passing configuration down the component tree
9
+ */
10
+ const MarkdownContext = react.createContext({
11
+ components: {},
12
+ });
13
+ /**
14
+ * Hook to access markdown context
15
+ */
16
+ function useMarkdownContext() {
17
+ return react.useContext(MarkdownContext);
18
+ }
19
+
20
+ const Heading = ({ node, children }) => {
21
+ const Tag = `h${node.depth}`;
22
+ const id = node.data && 'id' in node.data ? node.data.id : undefined;
23
+ return jsxRuntime.jsx(Tag, { id: id, children: children });
24
+ };
25
+
26
+ const Paragraph = ({ children }) => {
27
+ return jsxRuntime.jsx("p", { children: children });
28
+ };
29
+
30
+ const List = ({ node, children }) => {
31
+ const Tag = node.ordered ? 'ol' : 'ul';
32
+ const start = node.ordered && node.start != null && node.start !== 1 ? node.start : undefined;
33
+ return jsxRuntime.jsx(Tag, { start: start, children: children });
34
+ };
35
+ const ListItem = ({ node, children }) => {
36
+ // Handle task list items
37
+ if (typeof node.checked === 'boolean') {
38
+ return (jsxRuntime.jsxs("li", { className: "task-list-item", children: [jsxRuntime.jsx("input", { type: "checkbox", checked: node.checked, readOnly: true }), jsxRuntime.jsx("span", { children: children })] }));
39
+ }
40
+ return jsxRuntime.jsx("li", { children: children });
41
+ };
42
+
43
+ const Table = ({ children }) => {
44
+ return (jsxRuntime.jsx("table", { children: children }));
45
+ };
46
+ const TableRow = ({ children, isHeader }) => {
47
+ if (isHeader) {
48
+ return (jsxRuntime.jsx("thead", { children: jsxRuntime.jsx("tr", { children: children }) }));
49
+ }
50
+ return jsxRuntime.jsx("tr", { children: children });
51
+ };
52
+ const TableCell = ({ node, children }) => {
53
+ const isHeader = node.data?.isHeader;
54
+ const align = node.data?.align;
55
+ const Tag = isHeader ? 'th' : 'td';
56
+ const style = align ? { textAlign: align } : undefined;
57
+ return jsxRuntime.jsx(Tag, { style: style, children: children });
58
+ };
59
+
60
+ const Code = ({ node }) => {
61
+ const className = node.lang ? `language-${node.lang}` : undefined;
62
+ return (jsxRuntime.jsx("pre", { children: jsxRuntime.jsx("code", { className: className, children: node.value }) }));
63
+ };
64
+ const InlineCodeComponent = ({ node }) => {
65
+ return jsxRuntime.jsx("code", { children: node.value });
66
+ };
67
+
68
+ const Link = ({ node, children }) => {
69
+ // Basic security: prevent javascript: URLs
70
+ const href = node.url?.startsWith('javascript:') ? '#' : node.url;
71
+ return (jsxRuntime.jsx("a", { href: href, title: node.title || undefined, children: children }));
72
+ };
73
+
74
+ const Image = ({ node }) => {
75
+ return jsxRuntime.jsx("img", { src: node.url, alt: node.alt || '', title: node.title || undefined });
76
+ };
77
+
78
+ const Blockquote = ({ children }) => {
79
+ return jsxRuntime.jsx("blockquote", { children: children });
80
+ };
81
+
82
+ /**
83
+ * Default component map
84
+ */
85
+ const defaultComponents = {
86
+ heading: Heading,
87
+ paragraph: Paragraph,
88
+ list: List,
89
+ listItem: ListItem,
90
+ table: Table,
91
+ tableRow: TableRow,
92
+ tableCell: TableCell,
93
+ code: Code,
94
+ inlineCode: InlineCodeComponent,
95
+ link: Link,
96
+ image: Image,
97
+ blockquote: Blockquote,
98
+ };
99
+
100
+ /**
101
+ * Recursive node renderer that renders AST nodes to React elements
102
+ */
103
+ const NodeRenderer = ({ node }) => {
104
+ const { components } = useMarkdownContext();
105
+ // Get the component for this node type
106
+ const getComponent = (type) => {
107
+ return components[type] || defaultComponents[type];
108
+ };
109
+ // Render children nodes
110
+ const renderChildren = (children) => {
111
+ return children.map((child, index) => (jsxRuntime.jsx(NodeRenderer, { node: child }, index)));
112
+ };
113
+ // Render phrasing content (inline elements)
114
+ const renderPhrasingContent = (children) => {
115
+ return children.map((child, index) => {
116
+ switch (child.type) {
117
+ case 'text':
118
+ return child.value;
119
+ case 'strong':
120
+ return jsxRuntime.jsx("strong", { children: renderPhrasingContent(child.children) }, index);
121
+ case 'emphasis':
122
+ return jsxRuntime.jsx("em", { children: renderPhrasingContent(child.children) }, index);
123
+ case 'delete':
124
+ return jsxRuntime.jsx("del", { children: renderPhrasingContent(child.children) }, index);
125
+ case 'inlineCode': {
126
+ const InlineCode = getComponent('inlineCode');
127
+ return InlineCode ? jsxRuntime.jsx(InlineCode, { node: child }, index) : jsxRuntime.jsx("code", { children: child.value }, index);
128
+ }
129
+ case 'link': {
130
+ const Link = getComponent('link');
131
+ return Link ? (jsxRuntime.jsx(Link, { node: child, children: renderPhrasingContent(child.children) }, index)) : (jsxRuntime.jsx("a", { href: child.url, children: renderPhrasingContent(child.children) }, index));
132
+ }
133
+ case 'image': {
134
+ const Image = getComponent('image');
135
+ return Image ? jsxRuntime.jsx(Image, { node: child }, index) : jsxRuntime.jsx("img", { src: child.url, alt: child.alt || '' }, index);
136
+ }
137
+ case 'break':
138
+ return jsxRuntime.jsx("br", {}, index);
139
+ case 'html':
140
+ // For safety, render HTML as text in React
141
+ return child.value;
142
+ default:
143
+ // For unknown inline types, try to render as text if possible
144
+ if ('value' in child && typeof child.value === 'string') {
145
+ return child.value;
146
+ }
147
+ if ('children' in child) {
148
+ return renderPhrasingContent(child.children);
149
+ }
150
+ return null;
151
+ }
152
+ });
153
+ };
154
+ // Handle different node types
155
+ switch (node.type) {
156
+ case 'root':
157
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: renderChildren(node.children) });
158
+ case 'heading': {
159
+ const Heading = getComponent('heading');
160
+ return Heading ? (jsxRuntime.jsx(Heading, { node: node, children: renderPhrasingContent(node.children) })) : null;
161
+ }
162
+ case 'paragraph': {
163
+ const Paragraph = getComponent('paragraph');
164
+ return Paragraph ? (jsxRuntime.jsx(Paragraph, { node: node, children: renderPhrasingContent(node.children) })) : null;
165
+ }
166
+ case 'list': {
167
+ const List = getComponent('list');
168
+ return List ? (jsxRuntime.jsx(List, { node: node, children: renderChildren(node.children) })) : null;
169
+ }
170
+ case 'listItem': {
171
+ const ListItem = getComponent('listItem');
172
+ const children = node.children.map((child, index) => {
173
+ // Unwrap single paragraph in list item
174
+ if (child.type === 'paragraph' && node.children.length === 1) {
175
+ return renderPhrasingContent(child.children);
176
+ }
177
+ return jsxRuntime.jsx(NodeRenderer, { node: child }, index);
178
+ });
179
+ return ListItem ? jsxRuntime.jsx(ListItem, { node: node, children: children }) : null;
180
+ }
181
+ case 'table': {
182
+ const Table = getComponent('table');
183
+ const TableRow = getComponent('tableRow');
184
+ if (!Table || !TableRow)
185
+ return null;
186
+ const [headerRow, ...bodyRows] = node.children;
187
+ return (jsxRuntime.jsxs(Table, { node: node, children: [headerRow && (jsxRuntime.jsx(TableRow, { node: headerRow, isHeader: true, children: headerRow.children.map((cell, index) => (jsxRuntime.jsx(NodeRenderer, { node: cell }, index))) })), bodyRows.length > 0 && (jsxRuntime.jsx("tbody", { children: bodyRows.map((row, rowIndex) => (jsxRuntime.jsx(TableRow, { node: row, children: row.children.map((cell, cellIndex) => (jsxRuntime.jsx(NodeRenderer, { node: cell }, cellIndex))) }, rowIndex))) }))] }));
188
+ }
189
+ case 'tableCell': {
190
+ const TableCell = getComponent('tableCell');
191
+ return TableCell ? (jsxRuntime.jsx(TableCell, { node: node, children: renderPhrasingContent(node.children) })) : null;
192
+ }
193
+ case 'code': {
194
+ const Code = getComponent('code');
195
+ return Code ? jsxRuntime.jsx(Code, { node: node }) : null;
196
+ }
197
+ case 'blockquote': {
198
+ const Blockquote = getComponent('blockquote');
199
+ return Blockquote ? (jsxRuntime.jsx(Blockquote, { node: node, children: renderChildren(node.children) })) : null;
200
+ }
201
+ case 'thematicBreak':
202
+ return jsxRuntime.jsx("hr", {});
203
+ case 'html':
204
+ // For safety, don't render raw HTML by default
205
+ return null;
206
+ case 'yaml':
207
+ // Frontmatter shouldn't be rendered
208
+ return null;
209
+ default: {
210
+ // Try to find a custom component for unknown types
211
+ const CustomComponent = getComponent(node.type);
212
+ if (CustomComponent) {
213
+ const children = 'children' in node
214
+ ? renderChildren(node.children)
215
+ : undefined;
216
+ return jsxRuntime.jsx(CustomComponent, { node: node, children: children });
217
+ }
218
+ // Fallback: try to render children if available
219
+ if ('children' in node) {
220
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: renderChildren(node.children) });
221
+ }
222
+ return null;
223
+ }
224
+ }
225
+ };
226
+
227
+ // Singleton parser for client-side use
228
+ let defaultParser = null;
229
+ function getParser$1(options) {
230
+ if (options) {
231
+ return parser.createParser(options);
232
+ }
233
+ if (!defaultParser) {
234
+ defaultParser = parser.createParser();
235
+ }
236
+ return defaultParser;
237
+ }
238
+ /**
239
+ * Main markdown renderer component
240
+ *
241
+ * Supports both client-side and server-side rendering:
242
+ * - Pass `source` for automatic parsing
243
+ * - Pass `ast` for pre-parsed content (SSR optimization)
244
+ */
245
+ const MarkdownRenderer = ({ source, ast, components = {}, className, style, parserOptions, }) => {
246
+ // Use provided AST or parse source
247
+ let tree;
248
+ if (ast) {
249
+ tree = ast;
250
+ }
251
+ else if (source) {
252
+ const parser = getParser$1(parserOptions);
253
+ tree = parser.parse(source);
254
+ }
255
+ else {
256
+ // No content provided
257
+ return null;
258
+ }
259
+ return (jsxRuntime.jsx(MarkdownContext.Provider, { value: { components }, children: jsxRuntime.jsx("div", { className: className, style: style, children: jsxRuntime.jsx(NodeRenderer, { node: tree }) }) }));
260
+ };
261
+
262
+ // Cached parser instance
263
+ let cachedParser = null;
264
+ function getParser(options) {
265
+ if (options) {
266
+ return parser.createParser(options);
267
+ }
268
+ if (!cachedParser) {
269
+ cachedParser = parser.createParser();
270
+ }
271
+ return cachedParser;
272
+ }
273
+ /**
274
+ * Hook for parsing markdown on the client side
275
+ *
276
+ * @param source - Markdown source string
277
+ * @param options - Parser options
278
+ * @returns Parsed AST
279
+ */
280
+ function useMarkdown(source, options) {
281
+ const ast = react.useMemo(() => {
282
+ const parser = getParser(options);
283
+ return parser.parse(source);
284
+ }, [source, options]);
285
+ return ast;
286
+ }
287
+
288
+ exports.Blockquote = Blockquote;
289
+ exports.Code = Code;
290
+ exports.Heading = Heading;
291
+ exports.Image = Image;
292
+ exports.InlineCodeComponent = InlineCodeComponent;
293
+ exports.Link = Link;
294
+ exports.List = List;
295
+ exports.ListItem = ListItem;
296
+ exports.MarkdownContext = MarkdownContext;
297
+ exports.MarkdownRenderer = MarkdownRenderer;
298
+ exports.NodeRenderer = NodeRenderer;
299
+ exports.Paragraph = Paragraph;
300
+ exports.Table = Table;
301
+ exports.TableCell = TableCell;
302
+ exports.TableRow = TableRow;
303
+ exports.defaultComponents = defaultComponents;
304
+ exports.useMarkdown = useMarkdown;
305
+ exports.useMarkdownContext = useMarkdownContext;
306
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/components/context.ts","../src/components/defaults/Heading.tsx","../src/components/defaults/Paragraph.tsx","../src/components/defaults/List.tsx","../src/components/defaults/Table.tsx","../src/components/defaults/Code.tsx","../src/components/defaults/Link.tsx","../src/components/defaults/Image.tsx","../src/components/defaults/Blockquote.tsx","../src/components/defaults/index.tsx","../src/components/NodeRenderer.tsx","../src/components/MarkdownRenderer.tsx","../src/hooks/useMarkdown.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["createContext","useContext","_jsx","_jsxs","_Fragment","getParser","createParser","useMemo"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { MarkdownRenderer, type MarkdownRendererProps } from './components/MarkdownRenderer';
2
+ export { NodeRenderer, type NodeRendererProps } from './components/NodeRenderer';
3
+ export { MarkdownContext, useMarkdownContext, type MarkdownContextValue } from './components/context';
4
+ export { Heading, Paragraph, List, ListItem, Table, TableRow, TableCell, Code, InlineCodeComponent, Link, Image, Blockquote, defaultComponents, type ComponentMap, type HeadingProps, type ParagraphProps, type ListProps, type ListItemProps, type TableProps, type TableRowProps, type TableCellProps, type CodeProps, type InlineCodeProps, type LinkProps, type ImageProps, type BlockquoteProps, } from './components/defaults';
5
+ export { useMarkdown } from './hooks/useMarkdown';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC5F,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAChF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAGrG,OAAO,EACL,OAAO,EACP,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,mBAAmB,EACnB,IAAI,EACJ,KAAK,EACL,UAAU,EACV,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,287 @@
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { createParser } from '@pd-markdown/parser';
3
+ import { createContext, useContext, useMemo } from 'react';
4
+
5
+ /**
6
+ * Context for passing configuration down the component tree
7
+ */
8
+ const MarkdownContext = createContext({
9
+ components: {},
10
+ });
11
+ /**
12
+ * Hook to access markdown context
13
+ */
14
+ function useMarkdownContext() {
15
+ return useContext(MarkdownContext);
16
+ }
17
+
18
+ const Heading = ({ node, children }) => {
19
+ const Tag = `h${node.depth}`;
20
+ const id = node.data && 'id' in node.data ? node.data.id : undefined;
21
+ return jsx(Tag, { id: id, children: children });
22
+ };
23
+
24
+ const Paragraph = ({ children }) => {
25
+ return jsx("p", { children: children });
26
+ };
27
+
28
+ const List = ({ node, children }) => {
29
+ const Tag = node.ordered ? 'ol' : 'ul';
30
+ const start = node.ordered && node.start != null && node.start !== 1 ? node.start : undefined;
31
+ return jsx(Tag, { start: start, children: children });
32
+ };
33
+ const ListItem = ({ node, children }) => {
34
+ // Handle task list items
35
+ if (typeof node.checked === 'boolean') {
36
+ return (jsxs("li", { className: "task-list-item", children: [jsx("input", { type: "checkbox", checked: node.checked, readOnly: true }), jsx("span", { children: children })] }));
37
+ }
38
+ return jsx("li", { children: children });
39
+ };
40
+
41
+ const Table = ({ children }) => {
42
+ return (jsx("table", { children: children }));
43
+ };
44
+ const TableRow = ({ children, isHeader }) => {
45
+ if (isHeader) {
46
+ return (jsx("thead", { children: jsx("tr", { children: children }) }));
47
+ }
48
+ return jsx("tr", { children: children });
49
+ };
50
+ const TableCell = ({ node, children }) => {
51
+ const isHeader = node.data?.isHeader;
52
+ const align = node.data?.align;
53
+ const Tag = isHeader ? 'th' : 'td';
54
+ const style = align ? { textAlign: align } : undefined;
55
+ return jsx(Tag, { style: style, children: children });
56
+ };
57
+
58
+ const Code = ({ node }) => {
59
+ const className = node.lang ? `language-${node.lang}` : undefined;
60
+ return (jsx("pre", { children: jsx("code", { className: className, children: node.value }) }));
61
+ };
62
+ const InlineCodeComponent = ({ node }) => {
63
+ return jsx("code", { children: node.value });
64
+ };
65
+
66
+ const Link = ({ node, children }) => {
67
+ // Basic security: prevent javascript: URLs
68
+ const href = node.url?.startsWith('javascript:') ? '#' : node.url;
69
+ return (jsx("a", { href: href, title: node.title || undefined, children: children }));
70
+ };
71
+
72
+ const Image = ({ node }) => {
73
+ return jsx("img", { src: node.url, alt: node.alt || '', title: node.title || undefined });
74
+ };
75
+
76
+ const Blockquote = ({ children }) => {
77
+ return jsx("blockquote", { children: children });
78
+ };
79
+
80
+ /**
81
+ * Default component map
82
+ */
83
+ const defaultComponents = {
84
+ heading: Heading,
85
+ paragraph: Paragraph,
86
+ list: List,
87
+ listItem: ListItem,
88
+ table: Table,
89
+ tableRow: TableRow,
90
+ tableCell: TableCell,
91
+ code: Code,
92
+ inlineCode: InlineCodeComponent,
93
+ link: Link,
94
+ image: Image,
95
+ blockquote: Blockquote,
96
+ };
97
+
98
+ /**
99
+ * Recursive node renderer that renders AST nodes to React elements
100
+ */
101
+ const NodeRenderer = ({ node }) => {
102
+ const { components } = useMarkdownContext();
103
+ // Get the component for this node type
104
+ const getComponent = (type) => {
105
+ return components[type] || defaultComponents[type];
106
+ };
107
+ // Render children nodes
108
+ const renderChildren = (children) => {
109
+ return children.map((child, index) => (jsx(NodeRenderer, { node: child }, index)));
110
+ };
111
+ // Render phrasing content (inline elements)
112
+ const renderPhrasingContent = (children) => {
113
+ return children.map((child, index) => {
114
+ switch (child.type) {
115
+ case 'text':
116
+ return child.value;
117
+ case 'strong':
118
+ return jsx("strong", { children: renderPhrasingContent(child.children) }, index);
119
+ case 'emphasis':
120
+ return jsx("em", { children: renderPhrasingContent(child.children) }, index);
121
+ case 'delete':
122
+ return jsx("del", { children: renderPhrasingContent(child.children) }, index);
123
+ case 'inlineCode': {
124
+ const InlineCode = getComponent('inlineCode');
125
+ return InlineCode ? jsx(InlineCode, { node: child }, index) : jsx("code", { children: child.value }, index);
126
+ }
127
+ case 'link': {
128
+ const Link = getComponent('link');
129
+ return Link ? (jsx(Link, { node: child, children: renderPhrasingContent(child.children) }, index)) : (jsx("a", { href: child.url, children: renderPhrasingContent(child.children) }, index));
130
+ }
131
+ case 'image': {
132
+ const Image = getComponent('image');
133
+ return Image ? jsx(Image, { node: child }, index) : jsx("img", { src: child.url, alt: child.alt || '' }, index);
134
+ }
135
+ case 'break':
136
+ return jsx("br", {}, index);
137
+ case 'html':
138
+ // For safety, render HTML as text in React
139
+ return child.value;
140
+ default:
141
+ // For unknown inline types, try to render as text if possible
142
+ if ('value' in child && typeof child.value === 'string') {
143
+ return child.value;
144
+ }
145
+ if ('children' in child) {
146
+ return renderPhrasingContent(child.children);
147
+ }
148
+ return null;
149
+ }
150
+ });
151
+ };
152
+ // Handle different node types
153
+ switch (node.type) {
154
+ case 'root':
155
+ return jsx(Fragment, { children: renderChildren(node.children) });
156
+ case 'heading': {
157
+ const Heading = getComponent('heading');
158
+ return Heading ? (jsx(Heading, { node: node, children: renderPhrasingContent(node.children) })) : null;
159
+ }
160
+ case 'paragraph': {
161
+ const Paragraph = getComponent('paragraph');
162
+ return Paragraph ? (jsx(Paragraph, { node: node, children: renderPhrasingContent(node.children) })) : null;
163
+ }
164
+ case 'list': {
165
+ const List = getComponent('list');
166
+ return List ? (jsx(List, { node: node, children: renderChildren(node.children) })) : null;
167
+ }
168
+ case 'listItem': {
169
+ const ListItem = getComponent('listItem');
170
+ const children = node.children.map((child, index) => {
171
+ // Unwrap single paragraph in list item
172
+ if (child.type === 'paragraph' && node.children.length === 1) {
173
+ return renderPhrasingContent(child.children);
174
+ }
175
+ return jsx(NodeRenderer, { node: child }, index);
176
+ });
177
+ return ListItem ? jsx(ListItem, { node: node, children: children }) : null;
178
+ }
179
+ case 'table': {
180
+ const Table = getComponent('table');
181
+ const TableRow = getComponent('tableRow');
182
+ if (!Table || !TableRow)
183
+ return null;
184
+ const [headerRow, ...bodyRows] = node.children;
185
+ return (jsxs(Table, { node: node, children: [headerRow && (jsx(TableRow, { node: headerRow, isHeader: true, children: headerRow.children.map((cell, index) => (jsx(NodeRenderer, { node: cell }, index))) })), bodyRows.length > 0 && (jsx("tbody", { children: bodyRows.map((row, rowIndex) => (jsx(TableRow, { node: row, children: row.children.map((cell, cellIndex) => (jsx(NodeRenderer, { node: cell }, cellIndex))) }, rowIndex))) }))] }));
186
+ }
187
+ case 'tableCell': {
188
+ const TableCell = getComponent('tableCell');
189
+ return TableCell ? (jsx(TableCell, { node: node, children: renderPhrasingContent(node.children) })) : null;
190
+ }
191
+ case 'code': {
192
+ const Code = getComponent('code');
193
+ return Code ? jsx(Code, { node: node }) : null;
194
+ }
195
+ case 'blockquote': {
196
+ const Blockquote = getComponent('blockquote');
197
+ return Blockquote ? (jsx(Blockquote, { node: node, children: renderChildren(node.children) })) : null;
198
+ }
199
+ case 'thematicBreak':
200
+ return jsx("hr", {});
201
+ case 'html':
202
+ // For safety, don't render raw HTML by default
203
+ return null;
204
+ case 'yaml':
205
+ // Frontmatter shouldn't be rendered
206
+ return null;
207
+ default: {
208
+ // Try to find a custom component for unknown types
209
+ const CustomComponent = getComponent(node.type);
210
+ if (CustomComponent) {
211
+ const children = 'children' in node
212
+ ? renderChildren(node.children)
213
+ : undefined;
214
+ return jsx(CustomComponent, { node: node, children: children });
215
+ }
216
+ // Fallback: try to render children if available
217
+ if ('children' in node) {
218
+ return jsx(Fragment, { children: renderChildren(node.children) });
219
+ }
220
+ return null;
221
+ }
222
+ }
223
+ };
224
+
225
+ // Singleton parser for client-side use
226
+ let defaultParser = null;
227
+ function getParser$1(options) {
228
+ if (options) {
229
+ return createParser(options);
230
+ }
231
+ if (!defaultParser) {
232
+ defaultParser = createParser();
233
+ }
234
+ return defaultParser;
235
+ }
236
+ /**
237
+ * Main markdown renderer component
238
+ *
239
+ * Supports both client-side and server-side rendering:
240
+ * - Pass `source` for automatic parsing
241
+ * - Pass `ast` for pre-parsed content (SSR optimization)
242
+ */
243
+ const MarkdownRenderer = ({ source, ast, components = {}, className, style, parserOptions, }) => {
244
+ // Use provided AST or parse source
245
+ let tree;
246
+ if (ast) {
247
+ tree = ast;
248
+ }
249
+ else if (source) {
250
+ const parser = getParser$1(parserOptions);
251
+ tree = parser.parse(source);
252
+ }
253
+ else {
254
+ // No content provided
255
+ return null;
256
+ }
257
+ return (jsx(MarkdownContext.Provider, { value: { components }, children: jsx("div", { className: className, style: style, children: jsx(NodeRenderer, { node: tree }) }) }));
258
+ };
259
+
260
+ // Cached parser instance
261
+ let cachedParser = null;
262
+ function getParser(options) {
263
+ if (options) {
264
+ return createParser(options);
265
+ }
266
+ if (!cachedParser) {
267
+ cachedParser = createParser();
268
+ }
269
+ return cachedParser;
270
+ }
271
+ /**
272
+ * Hook for parsing markdown on the client side
273
+ *
274
+ * @param source - Markdown source string
275
+ * @param options - Parser options
276
+ * @returns Parsed AST
277
+ */
278
+ function useMarkdown(source, options) {
279
+ const ast = useMemo(() => {
280
+ const parser = getParser(options);
281
+ return parser.parse(source);
282
+ }, [source, options]);
283
+ return ast;
284
+ }
285
+
286
+ export { Blockquote, Code, Heading, Image, InlineCodeComponent, Link, List, ListItem, MarkdownContext, MarkdownRenderer, NodeRenderer, Paragraph, Table, TableCell, TableRow, defaultComponents, useMarkdown, useMarkdownContext };
287
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../src/components/context.ts","../src/components/defaults/Heading.tsx","../src/components/defaults/Paragraph.tsx","../src/components/defaults/List.tsx","../src/components/defaults/Table.tsx","../src/components/defaults/Code.tsx","../src/components/defaults/Link.tsx","../src/components/defaults/Image.tsx","../src/components/defaults/Blockquote.tsx","../src/components/defaults/index.tsx","../src/components/NodeRenderer.tsx","../src/components/MarkdownRenderer.tsx","../src/hooks/useMarkdown.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["_jsx","_jsxs","_Fragment","getParser"],"mappings":"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"}