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,71 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { render, screen } from '@testing-library/react'
3
+ import { Code, InlineCodeComponent } from '../../src/components/defaults/Code'
4
+ import type { Code as CodeNode, InlineCode } from 'mdast'
5
+
6
+ describe('Code component', () => {
7
+ it('should render code block', () => {
8
+ const node: CodeNode = {
9
+ type: 'code',
10
+ value: 'const x = 1',
11
+ }
12
+
13
+ const { container } = render(<Code node={node} />)
14
+ expect(container.querySelector('pre code')).toHaveTextContent('const x = 1')
15
+ })
16
+
17
+ it('should add language class', () => {
18
+ const node: CodeNode = {
19
+ type: 'code',
20
+ lang: 'javascript',
21
+ value: 'const x = 1',
22
+ }
23
+
24
+ const { container } = render(<Code node={node} />)
25
+ expect(container.querySelector('code')).toHaveClass('language-javascript')
26
+ })
27
+
28
+ it('should handle missing language', () => {
29
+ const node: CodeNode = {
30
+ type: 'code',
31
+ value: 'plain text',
32
+ }
33
+
34
+ const { container } = render(<Code node={node} />)
35
+ expect(container.querySelector('code')).not.toHaveClass()
36
+ })
37
+
38
+ it('should preserve whitespace', () => {
39
+ const node: CodeNode = {
40
+ type: 'code',
41
+ value: 'line 1\n line 2\n line 3',
42
+ }
43
+
44
+ const { container } = render(<Code node={node} />)
45
+ expect(container.querySelector('code')?.textContent).toBe(
46
+ 'line 1\n line 2\n line 3'
47
+ )
48
+ })
49
+ })
50
+
51
+ describe('InlineCodeComponent', () => {
52
+ it('should render inline code', () => {
53
+ const node: InlineCode = {
54
+ type: 'inlineCode',
55
+ value: 'code',
56
+ }
57
+
58
+ render(<InlineCodeComponent node={node} />)
59
+ expect(screen.getByText('code').tagName).toBe('CODE')
60
+ })
61
+
62
+ it('should not be wrapped in pre', () => {
63
+ const node: InlineCode = {
64
+ type: 'inlineCode',
65
+ value: 'inline',
66
+ }
67
+
68
+ const { container } = render(<InlineCodeComponent node={node} />)
69
+ expect(container.querySelector('pre')).not.toBeInTheDocument()
70
+ })
71
+ })
@@ -0,0 +1,65 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { render, screen } from '@testing-library/react'
3
+ import { Heading } from '../../src/components/defaults/Heading'
4
+ import type { Heading as HeadingNode } from 'mdast'
5
+
6
+ describe('Heading component', () => {
7
+ it('should render h1', () => {
8
+ const node: HeadingNode = {
9
+ type: 'heading',
10
+ depth: 1,
11
+ children: [{ type: 'text', value: 'Title' }],
12
+ }
13
+
14
+ render(<Heading node={node}>Title</Heading>)
15
+ expect(screen.getByRole('heading', { level: 1 })).toBeInTheDocument()
16
+ })
17
+
18
+ it('should render h2', () => {
19
+ const node: HeadingNode = {
20
+ type: 'heading',
21
+ depth: 2,
22
+ children: [],
23
+ }
24
+
25
+ render(<Heading node={node}>Subtitle</Heading>)
26
+ expect(screen.getByRole('heading', { level: 2 })).toBeInTheDocument()
27
+ })
28
+
29
+ it('should render h3-h6', () => {
30
+ for (let depth = 3; depth <= 6; depth++) {
31
+ const node: HeadingNode = {
32
+ type: 'heading',
33
+ depth: depth as 1 | 2 | 3 | 4 | 5 | 6,
34
+ children: [],
35
+ }
36
+
37
+ const { unmount } = render(<Heading node={node}>Heading</Heading>)
38
+ expect(screen.getByRole('heading', { level: depth })).toBeInTheDocument()
39
+ unmount()
40
+ }
41
+ })
42
+
43
+ it('should add id from data', () => {
44
+ const node: HeadingNode = {
45
+ type: 'heading',
46
+ depth: 1,
47
+ children: [],
48
+ data: { id: 'my-heading' },
49
+ }
50
+
51
+ render(<Heading node={node}>My Heading</Heading>)
52
+ expect(screen.getByRole('heading')).toHaveAttribute('id', 'my-heading')
53
+ })
54
+
55
+ it('should handle missing data', () => {
56
+ const node: HeadingNode = {
57
+ type: 'heading',
58
+ depth: 1,
59
+ children: [],
60
+ }
61
+
62
+ render(<Heading node={node}>No ID</Heading>)
63
+ expect(screen.getByRole('heading')).not.toHaveAttribute('id')
64
+ })
65
+ })
@@ -0,0 +1,100 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { render, screen } from '@testing-library/react'
3
+ import { List, ListItem } from '../../src/components/defaults/List'
4
+ import type { List as ListNode, ListItem as ListItemNode } from 'mdast'
5
+
6
+ describe('List component', () => {
7
+ it('should render unordered list', () => {
8
+ const node: ListNode = {
9
+ type: 'list',
10
+ ordered: false,
11
+ children: [],
12
+ }
13
+
14
+ const { container } = render(<List node={node}>Items</List>)
15
+ expect(container.querySelector('ul')).toBeInTheDocument()
16
+ })
17
+
18
+ it('should render ordered list', () => {
19
+ const node: ListNode = {
20
+ type: 'list',
21
+ ordered: true,
22
+ children: [],
23
+ }
24
+
25
+ const { container } = render(<List node={node}>Items</List>)
26
+ expect(container.querySelector('ol')).toBeInTheDocument()
27
+ })
28
+
29
+ it('should add start attribute for custom start', () => {
30
+ const node: ListNode = {
31
+ type: 'list',
32
+ ordered: true,
33
+ start: 5,
34
+ children: [],
35
+ }
36
+
37
+ const { container } = render(<List node={node}>Items</List>)
38
+ expect(container.querySelector('ol')).toHaveAttribute('start', '5')
39
+ })
40
+
41
+ it('should not add start attribute for default start', () => {
42
+ const node: ListNode = {
43
+ type: 'list',
44
+ ordered: true,
45
+ start: 1,
46
+ children: [],
47
+ }
48
+
49
+ const { container } = render(<List node={node}>Items</List>)
50
+ expect(container.querySelector('ol')).not.toHaveAttribute('start')
51
+ })
52
+ })
53
+
54
+ describe('ListItem component', () => {
55
+ it('should render basic list item', () => {
56
+ const node: ListItemNode = {
57
+ type: 'listItem',
58
+ children: [],
59
+ }
60
+
61
+ render(<ListItem node={node}>Content</ListItem>)
62
+ expect(screen.getByRole('listitem')).toHaveTextContent('Content')
63
+ })
64
+
65
+ it('should render checked task item', () => {
66
+ const node: ListItemNode = {
67
+ type: 'listItem',
68
+ checked: true,
69
+ children: [],
70
+ }
71
+
72
+ render(<ListItem node={node}>Done</ListItem>)
73
+ const checkbox = screen.getByRole('checkbox')
74
+ expect(checkbox).toBeChecked()
75
+ })
76
+
77
+ it('should render unchecked task item', () => {
78
+ const node: ListItemNode = {
79
+ type: 'listItem',
80
+ checked: false,
81
+ children: [],
82
+ }
83
+
84
+ render(<ListItem node={node}>Todo</ListItem>)
85
+ const checkbox = screen.getByRole('checkbox')
86
+ expect(checkbox).not.toBeChecked()
87
+ })
88
+
89
+ it('should have readonly checkbox', () => {
90
+ const node: ListItemNode = {
91
+ type: 'listItem',
92
+ checked: false,
93
+ children: [],
94
+ }
95
+
96
+ render(<ListItem node={node}>Todo</ListItem>)
97
+ const checkbox = screen.getByRole('checkbox')
98
+ expect(checkbox).toHaveAttribute('readonly')
99
+ })
100
+ })
@@ -0,0 +1,105 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { render, screen } from '@testing-library/react'
3
+ import { Table, TableRow, TableCell } from '../../src/components/defaults/Table'
4
+ import type {
5
+ Table as TableNode,
6
+ TableRow as TableRowNode,
7
+ TableCell as TableCellNode,
8
+ } from 'mdast'
9
+
10
+ describe('Table component', () => {
11
+ it('should render table element', () => {
12
+ const node: TableNode = {
13
+ type: 'table',
14
+ children: [],
15
+ }
16
+
17
+ const { container } = render(<Table node={node}>Content</Table>)
18
+ expect(container.querySelector('table')).toBeInTheDocument()
19
+ })
20
+ })
21
+
22
+ describe('TableRow component', () => {
23
+ it('should render tr for body rows', () => {
24
+ const node: TableRowNode = {
25
+ type: 'tableRow',
26
+ children: [],
27
+ }
28
+
29
+ const { container } = render(<TableRow node={node}>Cells</TableRow>)
30
+ expect(container.querySelector('tr')).toBeInTheDocument()
31
+ expect(container.querySelector('thead')).not.toBeInTheDocument()
32
+ })
33
+
34
+ it('should wrap header row in thead', () => {
35
+ const node: TableRowNode = {
36
+ type: 'tableRow',
37
+ children: [],
38
+ }
39
+
40
+ const { container } = render(
41
+ <TableRow node={node} isHeader>
42
+ Cells
43
+ </TableRow>
44
+ )
45
+ expect(container.querySelector('thead')).toBeInTheDocument()
46
+ expect(container.querySelector('thead tr')).toBeInTheDocument()
47
+ })
48
+ })
49
+
50
+ describe('TableCell component', () => {
51
+ it('should render td for body cells', () => {
52
+ const node: TableCellNode = {
53
+ type: 'tableCell',
54
+ children: [],
55
+ data: { isHeader: false },
56
+ }
57
+
58
+ const { container } = render(<TableCell node={node}>Content</TableCell>)
59
+ expect(container.querySelector('td')).toBeInTheDocument()
60
+ })
61
+
62
+ it('should render th for header cells', () => {
63
+ const node: TableCellNode = {
64
+ type: 'tableCell',
65
+ children: [],
66
+ data: { isHeader: true },
67
+ }
68
+
69
+ const { container } = render(<TableCell node={node}>Header</TableCell>)
70
+ expect(container.querySelector('th')).toBeInTheDocument()
71
+ })
72
+
73
+ it('should apply left alignment', () => {
74
+ const node: TableCellNode = {
75
+ type: 'tableCell',
76
+ children: [],
77
+ data: { align: 'left' },
78
+ }
79
+
80
+ const { container } = render(<TableCell node={node}>Left</TableCell>)
81
+ expect(container.querySelector('td')).toHaveStyle({ textAlign: 'left' })
82
+ })
83
+
84
+ it('should apply center alignment', () => {
85
+ const node: TableCellNode = {
86
+ type: 'tableCell',
87
+ children: [],
88
+ data: { align: 'center' },
89
+ }
90
+
91
+ const { container } = render(<TableCell node={node}>Center</TableCell>)
92
+ expect(container.querySelector('td')).toHaveStyle({ textAlign: 'center' })
93
+ })
94
+
95
+ it('should apply right alignment', () => {
96
+ const node: TableCellNode = {
97
+ type: 'tableCell',
98
+ children: [],
99
+ data: { align: 'right' },
100
+ }
101
+
102
+ const { container } = render(<TableCell node={node}>Right</TableCell>)
103
+ expect(container.querySelector('td')).toHaveStyle({ textAlign: 'right' })
104
+ })
105
+ })
@@ -0,0 +1,63 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { renderHook } from '@testing-library/react'
3
+ import { useMarkdown } from '../src/hooks/useMarkdown'
4
+
5
+ describe('useMarkdown', () => {
6
+ it('should parse markdown string', () => {
7
+ const { result } = renderHook(() => useMarkdown('# Hello'))
8
+
9
+ expect(result.current.type).toBe('root')
10
+ expect(result.current.children[0].type).toBe('heading')
11
+ })
12
+
13
+ it('should memoize result for same input', () => {
14
+ const { result, rerender } = renderHook(
15
+ ({ source }) => useMarkdown(source),
16
+ { initialProps: { source: '# Hello' } }
17
+ )
18
+
19
+ const firstResult = result.current
20
+
21
+ rerender({ source: '# Hello' })
22
+
23
+ expect(result.current).toBe(firstResult)
24
+ })
25
+
26
+ it('should re-parse when source changes', () => {
27
+ const { result, rerender } = renderHook(
28
+ ({ source }) => useMarkdown(source),
29
+ { initialProps: { source: '# First' } }
30
+ )
31
+
32
+ expect(result.current.children[0]).toHaveProperty('type', 'heading')
33
+
34
+ rerender({ source: 'Just a paragraph' })
35
+
36
+ expect(result.current.children[0]).toHaveProperty('type', 'paragraph')
37
+ })
38
+
39
+ it('should handle empty string', () => {
40
+ const { result } = renderHook(() => useMarkdown(''))
41
+
42
+ expect(result.current.type).toBe('root')
43
+ expect(result.current.children).toHaveLength(0)
44
+ })
45
+
46
+ it('should parse complex markdown', () => {
47
+ const { result } = renderHook(() =>
48
+ useMarkdown(`
49
+ # Title
50
+
51
+ Paragraph with **bold** text.
52
+
53
+ - List item 1
54
+ - List item 2
55
+ `.trim())
56
+ )
57
+
58
+ expect(result.current.children).toHaveLength(3)
59
+ expect(result.current.children[0].type).toBe('heading')
60
+ expect(result.current.children[1].type).toBe('paragraph')
61
+ expect(result.current.children[2].type).toBe('list')
62
+ })
63
+ })
@@ -0,0 +1,27 @@
1
+ import type { FC, CSSProperties } from 'react';
2
+ import type { Root } from 'mdast';
3
+ import { type ParserOptions } from '@pd-markdown/parser';
4
+ import type { ComponentMap } from './defaults';
5
+ export interface MarkdownRendererProps {
6
+ /** Markdown source string (will be parsed) */
7
+ source?: string;
8
+ /** Pre-parsed AST (skip parsing, useful for SSR) */
9
+ ast?: Root;
10
+ /** Custom component overrides */
11
+ components?: Partial<ComponentMap>;
12
+ /** CSS class name for wrapper */
13
+ className?: string;
14
+ /** Inline styles for wrapper */
15
+ style?: CSSProperties;
16
+ /** Parser options (only used when source is provided) */
17
+ parserOptions?: ParserOptions;
18
+ }
19
+ /**
20
+ * Main markdown renderer component
21
+ *
22
+ * Supports both client-side and server-side rendering:
23
+ * - Pass `source` for automatic parsing
24
+ * - Pass `ast` for pre-parsed content (SSR optimization)
25
+ */
26
+ export declare const MarkdownRenderer: FC<MarkdownRendererProps>;
27
+ //# sourceMappingURL=MarkdownRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownRenderer.d.ts","sourceRoot":"","sources":["../../src/components/MarkdownRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,WAAW,qBAAqB;IACpC,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oDAAoD;IACpD,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,iCAAiC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IAClC,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,yDAAyD;IACzD,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B;AAeD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA2BtD,CAAA"}
@@ -0,0 +1,10 @@
1
+ import type { FC } from 'react';
2
+ import type { Content, Root } from 'mdast';
3
+ export interface NodeRendererProps {
4
+ node: Content | Root;
5
+ }
6
+ /**
7
+ * Recursive node renderer that renders AST nodes to React elements
8
+ */
9
+ export declare const NodeRenderer: FC<NodeRendererProps>;
10
+ //# sourceMappingURL=NodeRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeRenderer.d.ts","sourceRoot":"","sources":["../../src/components/NodeRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAa,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAA2B,MAAM,OAAO,CAAA;AAInE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAgM9C,CAAA"}
@@ -0,0 +1,17 @@
1
+ import type { ComponentMap } from './defaults';
2
+ /**
3
+ * Context value for markdown renderer
4
+ */
5
+ export interface MarkdownContextValue {
6
+ /** Custom component overrides */
7
+ components: Partial<ComponentMap>;
8
+ }
9
+ /**
10
+ * Context for passing configuration down the component tree
11
+ */
12
+ export declare const MarkdownContext: import("react").Context<MarkdownContextValue>;
13
+ /**
14
+ * Hook to access markdown context
15
+ */
16
+ export declare function useMarkdownContext(): MarkdownContextValue;
17
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/components/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,iCAAiC;IACjC,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAClC;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,+CAE1B,CAAA;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,oBAAoB,CAEzD"}
@@ -0,0 +1,8 @@
1
+ import type { FC, ReactNode } from 'react';
2
+ import type { Blockquote as BlockquoteNode } from 'mdast';
3
+ export interface BlockquoteProps {
4
+ node: BlockquoteNode;
5
+ children: ReactNode;
6
+ }
7
+ export declare const Blockquote: FC<BlockquoteProps>;
8
+ //# sourceMappingURL=Blockquote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Blockquote.d.ts","sourceRoot":"","sources":["../../../src/components/defaults/Blockquote.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,OAAO,CAAA;AAEzD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,cAAc,CAAA;IACpB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAE1C,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { FC, ReactNode } from 'react';
2
+ import type { Code as CodeNode, InlineCode } from 'mdast';
3
+ export interface CodeProps {
4
+ node: CodeNode;
5
+ children?: ReactNode;
6
+ }
7
+ export declare const Code: FC<CodeProps>;
8
+ export interface InlineCodeProps {
9
+ node: InlineCode;
10
+ children?: ReactNode;
11
+ }
12
+ export declare const InlineCodeComponent: FC<InlineCodeProps>;
13
+ //# sourceMappingURL=Code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Code.d.ts","sourceRoot":"","sources":["../../../src/components/defaults/Code.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,IAAI,IAAI,QAAQ,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED,eAAO,MAAM,IAAI,EAAE,EAAE,CAAC,SAAS,CAQ9B,CAAA;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,eAAe,CAEnD,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { FC, ReactNode } from 'react';
2
+ import type { Heading as HeadingNode } from 'mdast';
3
+ export interface HeadingProps {
4
+ node: HeadingNode;
5
+ children: ReactNode;
6
+ }
7
+ export declare const Heading: FC<HeadingProps>;
8
+ //# sourceMappingURL=Heading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../../src/components/defaults/Heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,OAAO,CAAA;AAEnD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,OAAO,EAAE,EAAE,CAAC,YAAY,CAKpC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { FC } from 'react';
2
+ import type { Image as ImageNode } from 'mdast';
3
+ export interface ImageProps {
4
+ node: ImageNode;
5
+ }
6
+ export declare const Image: FC<ImageProps>;
7
+ //# sourceMappingURL=Image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/components/defaults/Image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,OAAO,CAAA;AAE/C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAA;CAChB;AAED,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAEhC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { FC, ReactNode } from 'react';
2
+ import type { Link as LinkNode } from 'mdast';
3
+ export interface LinkProps {
4
+ node: LinkNode;
5
+ children: ReactNode;
6
+ }
7
+ export declare const Link: FC<LinkProps>;
8
+ //# sourceMappingURL=Link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../src/components/defaults/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE7C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,IAAI,EAAE,EAAE,CAAC,SAAS,CAS9B,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { FC, ReactNode } from 'react';
2
+ import type { List as ListNode, ListItem as ListItemNode } from 'mdast';
3
+ export interface ListProps {
4
+ node: ListNode;
5
+ children: ReactNode;
6
+ }
7
+ export declare const List: FC<ListProps>;
8
+ export interface ListItemProps {
9
+ node: ListItemNode;
10
+ children: ReactNode;
11
+ }
12
+ export declare const ListItem: FC<ListItemProps>;
13
+ //# sourceMappingURL=List.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../src/components/defaults/List.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,IAAI,IAAI,QAAQ,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,OAAO,CAAA;AAEvE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,IAAI,EAAE,EAAE,CAAC,SAAS,CAK9B,CAAA;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAYtC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { FC, ReactNode } from 'react';
2
+ import type { Paragraph as ParagraphNode } from 'mdast';
3
+ export interface ParagraphProps {
4
+ node: ParagraphNode;
5
+ children: ReactNode;
6
+ }
7
+ export declare const Paragraph: FC<ParagraphProps>;
8
+ //# sourceMappingURL=Paragraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Paragraph.d.ts","sourceRoot":"","sources":["../../../src/components/defaults/Paragraph.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,OAAO,CAAA;AAEvD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAA;IACnB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAExC,CAAA"}
@@ -0,0 +1,19 @@
1
+ import type { FC, ReactNode } from 'react';
2
+ import type { Table as TableNode, TableRow as TableRowNode, TableCell as TableCellNode } from 'mdast';
3
+ export interface TableProps {
4
+ node: TableNode;
5
+ children: ReactNode;
6
+ }
7
+ export declare const Table: FC<TableProps>;
8
+ export interface TableRowProps {
9
+ node: TableRowNode;
10
+ children: ReactNode;
11
+ isHeader?: boolean;
12
+ }
13
+ export declare const TableRow: FC<TableRowProps>;
14
+ export interface TableCellProps {
15
+ node: TableCellNode;
16
+ children: ReactNode;
17
+ }
18
+ export declare const TableCell: FC<TableCellProps>;
19
+ //# sourceMappingURL=Table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/components/defaults/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EACV,KAAK,IAAI,SAAS,EAClB,QAAQ,IAAI,YAAY,EACxB,SAAS,IAAI,aAAa,EAC3B,MAAM,OAAO,CAAA;AAEd,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAMhC,CAAA;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAStC,CAAA;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAA;IACnB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAOxC,CAAA"}
@@ -0,0 +1,34 @@
1
+ import * as React from 'react';
2
+ import { Heading, HeadingProps } from './Heading';
3
+ import { Paragraph, ParagraphProps } from './Paragraph';
4
+ import { List, ListItem, ListProps, ListItemProps } from './List';
5
+ import { Table, TableRow, TableCell, TableProps, TableRowProps, TableCellProps } from './Table';
6
+ import { Code, InlineCodeComponent, CodeProps, InlineCodeProps } from './Code';
7
+ import { Link, LinkProps } from './Link';
8
+ import { Image, ImageProps } from './Image';
9
+ import { Blockquote, BlockquoteProps } from './Blockquote';
10
+ export { Heading, Paragraph, List, ListItem, Table, TableRow, TableCell, Code, InlineCodeComponent, Link, Image, Blockquote, };
11
+ export type { HeadingProps, ParagraphProps, ListProps, ListItemProps, TableProps, TableRowProps, TableCellProps, CodeProps, InlineCodeProps, LinkProps, ImageProps, BlockquoteProps, };
12
+ /**
13
+ * Map of node types to their corresponding React components
14
+ */
15
+ export interface ComponentMap {
16
+ heading: React.FC<HeadingProps>;
17
+ paragraph: React.FC<ParagraphProps>;
18
+ list: React.FC<ListProps>;
19
+ listItem: React.FC<ListItemProps>;
20
+ table: React.FC<TableProps>;
21
+ tableRow: React.FC<TableRowProps>;
22
+ tableCell: React.FC<TableCellProps>;
23
+ code: React.FC<CodeProps>;
24
+ inlineCode: React.FC<InlineCodeProps>;
25
+ link: React.FC<LinkProps>;
26
+ image: React.FC<ImageProps>;
27
+ blockquote: React.FC<BlockquoteProps>;
28
+ [key: string]: React.FC<any>;
29
+ }
30
+ /**
31
+ * Default component map
32
+ */
33
+ export declare const defaultComponents: ComponentMap;
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/defaults/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACjE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC/F,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAC9E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG1D,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,GACX,CAAA;AAGD,YAAY,EACV,YAAY,EACZ,cAAc,EACd,SAAS,EACT,aAAa,EACb,UAAU,EACV,aAAa,EACb,cAAc,EACd,SAAS,EACT,eAAe,EACf,SAAS,EACT,UAAU,EACV,eAAe,GAChB,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;IAC/B,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,CAAA;IACnC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IACzB,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA;IACjC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IAC3B,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA;IACjC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,CAAA;IACnC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IACzB,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,CAAA;IACrC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IACzB,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IAC3B,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,CAAA;IAErC,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,YAa/B,CAAA"}
@@ -0,0 +1,11 @@
1
+ import type { Root } from 'mdast';
2
+ import { type ParserOptions } from '@pd-markdown/parser';
3
+ /**
4
+ * Hook for parsing markdown on the client side
5
+ *
6
+ * @param source - Markdown source string
7
+ * @param options - Parser options
8
+ * @returns Parsed AST
9
+ */
10
+ export declare function useMarkdown(source: string, options?: ParserOptions): Root;
11
+ //# sourceMappingURL=useMarkdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMarkdown.d.ts","sourceRoot":"","sources":["../../src/hooks/useMarkdown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAetE;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAOzE"}