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.
- package/package.json +26 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/index.d.ts +4 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/index.d.ts.map +1 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/index.js +5 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/index.js.map +1 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/index.d.ts +4 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/index.d.ts.map +1 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/index.js +4 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/index.js.map +1 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/heading.d.ts +6 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/heading.d.ts.map +1 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/heading.js +36 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/heading.js.map +1 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/list.d.ts +14 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/list.d.ts.map +1 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/list.js +18 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/list.js.map +1 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/table.d.ts +27 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/table.d.ts.map +1 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/table.js +37 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/plugins/transform/table.js.map +1 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/processor.d.ts +22 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/processor.d.ts.map +1 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/processor.js +95 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/processor.js.map +1 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/types/index.d.ts +55 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/types/index.d.ts.map +1 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/types/index.js +2 -0
- package/packages/parser/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/parser/dist/types/index.js.map +1 -0
- package/packages/parser/__tests__/frontmatter.test.ts +69 -0
- package/packages/parser/__tests__/gfm.test.ts +83 -0
- package/packages/parser/__tests__/processor.test.ts +136 -0
- package/packages/parser/__tests__/transform/heading.test.ts +56 -0
- package/packages/parser/__tests__/transform/list.test.ts +67 -0
- package/packages/parser/__tests__/transform/table.test.ts +85 -0
- package/packages/parser/dist/index.cjs +191 -0
- package/packages/parser/dist/index.cjs.map +1 -0
- package/packages/parser/dist/index.d.ts +4 -0
- package/packages/parser/dist/index.d.ts.map +1 -0
- package/packages/parser/dist/index.mjs +185 -0
- package/packages/parser/dist/index.mjs.map +1 -0
- package/packages/parser/dist/plugins/index.d.ts +4 -0
- package/packages/parser/dist/plugins/index.d.ts.map +1 -0
- package/packages/parser/dist/plugins/transform/heading.d.ts +6 -0
- package/packages/parser/dist/plugins/transform/heading.d.ts.map +1 -0
- package/packages/parser/dist/plugins/transform/list.d.ts +14 -0
- package/packages/parser/dist/plugins/transform/list.d.ts.map +1 -0
- package/packages/parser/dist/plugins/transform/table.d.ts +27 -0
- package/packages/parser/dist/plugins/transform/table.d.ts.map +1 -0
- package/packages/parser/dist/processor.d.ts +22 -0
- package/packages/parser/dist/processor.d.ts.map +1 -0
- package/packages/parser/dist/types/index.d.ts +55 -0
- package/packages/parser/dist/types/index.d.ts.map +1 -0
- package/packages/parser/node_modules/.bin/yaml +17 -0
- package/packages/parser/package.json +38 -0
- package/packages/parser/rollup.config.ts +38 -0
- package/packages/parser/src/index.ts +15 -0
- package/packages/parser/src/plugins/index.ts +3 -0
- package/packages/parser/src/plugins/transform/heading.ts +40 -0
- package/packages/parser/src/plugins/transform/list.ts +29 -0
- package/packages/parser/src/plugins/transform/table.ts +62 -0
- package/packages/parser/src/processor.ts +119 -0
- package/packages/parser/src/types/index.ts +60 -0
- package/packages/parser/tsconfig.json +9 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/query.d.ts +36 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/query.d.ts.map +1 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/query.js +99 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/query.js.map +1 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/traverse.d.ts +22 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/traverse.d.ts.map +1 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/traverse.js +46 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/ast/traverse.js.map +1 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/index.d.ts +7 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/index.d.ts.map +1 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/index.js +8 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/index.js.map +1 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/sanitize.d.ts +22 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/sanitize.d.ts.map +1 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/sanitize.js +140 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/sanitize.js.map +1 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/slugify.d.ts +16 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/slugify.d.ts.map +1 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/slugify.js +39 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/string/slugify.js.map +1 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/types/index.d.ts +49 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/types/index.d.ts.map +1 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/types/index.js +19 -0
- package/packages/utils/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/utils/dist/types/index.js.map +1 -0
- package/packages/utils/__tests__/query.test.ts +155 -0
- package/packages/utils/__tests__/sanitize.test.ts +96 -0
- package/packages/utils/__tests__/slugify.test.ts +71 -0
- package/packages/utils/__tests__/traverse.test.ts +131 -0
- package/packages/utils/dist/ast/query.d.ts +36 -0
- package/packages/utils/dist/ast/query.d.ts.map +1 -0
- package/packages/utils/dist/ast/traverse.d.ts +22 -0
- package/packages/utils/dist/ast/traverse.d.ts.map +1 -0
- package/packages/utils/dist/index.cjs +358 -0
- package/packages/utils/dist/index.cjs.map +1 -0
- package/packages/utils/dist/index.d.ts +7 -0
- package/packages/utils/dist/index.d.ts.map +1 -0
- package/packages/utils/dist/index.mjs +343 -0
- package/packages/utils/dist/index.mjs.map +1 -0
- package/packages/utils/dist/string/sanitize.d.ts +22 -0
- package/packages/utils/dist/string/sanitize.d.ts.map +1 -0
- package/packages/utils/dist/string/slugify.d.ts +16 -0
- package/packages/utils/dist/string/slugify.d.ts.map +1 -0
- package/packages/utils/dist/types/index.d.ts +49 -0
- package/packages/utils/dist/types/index.d.ts.map +1 -0
- package/packages/utils/package.json +27 -0
- package/packages/utils/rollup.config.ts +26 -0
- package/packages/utils/src/ast/query.ts +127 -0
- package/packages/utils/src/ast/traverse.ts +73 -0
- package/packages/utils/src/index.ts +20 -0
- package/packages/utils/src/string/sanitize.ts +155 -0
- package/packages/utils/src/string/slugify.ts +43 -0
- package/packages/utils/src/types/index.ts +72 -0
- package/packages/utils/tsconfig.json +8 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/MarkdownRenderer.d.ts +27 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/MarkdownRenderer.d.ts.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/MarkdownRenderer.js +39 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/MarkdownRenderer.js.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/NodeRenderer.d.ts +10 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/NodeRenderer.d.ts.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/NodeRenderer.js +130 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/NodeRenderer.js.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/context.d.ts +17 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/context.d.ts.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/context.js +14 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/context.js.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Blockquote.d.ts +8 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Blockquote.d.ts.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Blockquote.js +5 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Blockquote.js.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Code.d.ts +13 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Code.d.ts.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Code.js +9 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Code.js.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Heading.d.ts +8 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Heading.d.ts.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Heading.js +7 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Heading.js.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Image.d.ts +7 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Image.d.ts.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Image.js +5 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Image.js.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Link.d.ts +8 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Link.d.ts.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Link.js +7 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Link.js.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/List.d.ts +13 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/List.d.ts.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/List.js +14 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/List.js.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Paragraph.d.ts +8 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Paragraph.d.ts.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Paragraph.js +5 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Paragraph.js.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Table.d.ts +19 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Table.d.ts.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Table.js +18 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/Table.js.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/index.d.ts +34 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/index.d.ts.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/index.js +28 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/components/defaults/index.js.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/hooks/useMarkdown.d.ts +11 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/hooks/useMarkdown.d.ts.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/hooks/useMarkdown.js +28 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/hooks/useMarkdown.js.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/index.d.ts +6 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/index.d.ts.map +1 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/index.js +9 -0
- package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/index.js.map +1 -0
- package/packages/web/__tests__/MarkdownRenderer.test.tsx +89 -0
- package/packages/web/__tests__/NodeRenderer.test.tsx +97 -0
- package/packages/web/__tests__/components/Code.test.tsx +71 -0
- package/packages/web/__tests__/components/Heading.test.tsx +65 -0
- package/packages/web/__tests__/components/List.test.tsx +100 -0
- package/packages/web/__tests__/components/Table.test.tsx +105 -0
- package/packages/web/__tests__/useMarkdown.test.ts +63 -0
- package/packages/web/dist/components/MarkdownRenderer.d.ts +27 -0
- package/packages/web/dist/components/MarkdownRenderer.d.ts.map +1 -0
- package/packages/web/dist/components/NodeRenderer.d.ts +10 -0
- package/packages/web/dist/components/NodeRenderer.d.ts.map +1 -0
- package/packages/web/dist/components/context.d.ts +17 -0
- package/packages/web/dist/components/context.d.ts.map +1 -0
- package/packages/web/dist/components/defaults/Blockquote.d.ts +8 -0
- package/packages/web/dist/components/defaults/Blockquote.d.ts.map +1 -0
- package/packages/web/dist/components/defaults/Code.d.ts +13 -0
- package/packages/web/dist/components/defaults/Code.d.ts.map +1 -0
- package/packages/web/dist/components/defaults/Heading.d.ts +8 -0
- package/packages/web/dist/components/defaults/Heading.d.ts.map +1 -0
- package/packages/web/dist/components/defaults/Image.d.ts +7 -0
- package/packages/web/dist/components/defaults/Image.d.ts.map +1 -0
- package/packages/web/dist/components/defaults/Link.d.ts +8 -0
- package/packages/web/dist/components/defaults/Link.d.ts.map +1 -0
- package/packages/web/dist/components/defaults/List.d.ts +13 -0
- package/packages/web/dist/components/defaults/List.d.ts.map +1 -0
- package/packages/web/dist/components/defaults/Paragraph.d.ts +8 -0
- package/packages/web/dist/components/defaults/Paragraph.d.ts.map +1 -0
- package/packages/web/dist/components/defaults/Table.d.ts +19 -0
- package/packages/web/dist/components/defaults/Table.d.ts.map +1 -0
- package/packages/web/dist/components/defaults/index.d.ts +34 -0
- package/packages/web/dist/components/defaults/index.d.ts.map +1 -0
- package/packages/web/dist/hooks/useMarkdown.d.ts +11 -0
- package/packages/web/dist/hooks/useMarkdown.d.ts.map +1 -0
- package/packages/web/dist/index.cjs +306 -0
- package/packages/web/dist/index.cjs.map +1 -0
- package/packages/web/dist/index.d.ts +6 -0
- package/packages/web/dist/index.d.ts.map +1 -0
- package/packages/web/dist/index.mjs +287 -0
- package/packages/web/dist/index.mjs.map +1 -0
- package/packages/web/package.json +40 -0
- package/packages/web/rollup.config.ts +36 -0
- package/packages/web/src/components/MarkdownRenderer.tsx +70 -0
- package/packages/web/src/components/NodeRenderer.tsx +205 -0
- package/packages/web/src/components/context.ts +24 -0
- package/packages/web/src/components/defaults/Blockquote.tsx +11 -0
- package/packages/web/src/components/defaults/Code.tsx +26 -0
- package/packages/web/src/components/defaults/Heading.tsx +14 -0
- package/packages/web/src/components/defaults/Image.tsx +10 -0
- package/packages/web/src/components/defaults/Link.tsx +18 -0
- package/packages/web/src/components/defaults/List.tsx +33 -0
- package/packages/web/src/components/defaults/Paragraph.tsx +11 -0
- package/packages/web/src/components/defaults/Table.tsx +50 -0
- package/packages/web/src/components/defaults/index.tsx +80 -0
- package/packages/web/src/hooks/useMarkdown.ts +32 -0
- package/packages/web/src/index.ts +37 -0
- package/packages/web/tsconfig.json +11 -0
- package/packages/web/vitest.config.ts +9 -0
- package/pnpm-workspace.yaml +2 -0
- package/tsconfig.base.json +26 -0
- package/tsconfig.json +8 -0
- package/vitest.config.ts +28 -0
- 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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"}
|