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 @@
|
|
|
1
|
+
{"version":3,"file":"Blockquote.js","sourceRoot":"","sources":["../../../src/components/defaults/Blockquote.tsx"],"names":[],"mappings":";AAQA,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9D,OAAO,+BAAa,QAAQ,GAAc,CAAA;AAC5C,CAAC,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,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export const Code = ({ node }) => {
|
|
3
|
+
const className = node.lang ? `language-${node.lang}` : undefined;
|
|
4
|
+
return (_jsx("pre", { children: _jsx("code", { className: className, children: node.value }) }));
|
|
5
|
+
};
|
|
6
|
+
export const InlineCodeComponent = ({ node }) => {
|
|
7
|
+
return _jsx("code", { children: node.value });
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=Code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Code.js","sourceRoot":"","sources":["../../../src/components/defaults/Code.tsx"],"names":[],"mappings":";AAQA,MAAM,CAAC,MAAM,IAAI,GAAkB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAEjE,OAAO,CACL,wBACE,eAAM,SAAS,EAAE,SAAS,YAAG,IAAI,CAAC,KAAK,GAAQ,GAC3C,CACP,CAAA;AACH,CAAC,CAAA;AAOD,MAAM,CAAC,MAAM,mBAAmB,GAAwB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IACnE,OAAO,yBAAO,IAAI,CAAC,KAAK,GAAQ,CAAA;AAClC,CAAC,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 { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export const Heading = ({ node, children }) => {
|
|
3
|
+
const Tag = `h${node.depth}`;
|
|
4
|
+
const id = node.data && 'id' in node.data ? node.data.id : undefined;
|
|
5
|
+
return _jsx(Tag, { id: id, children: children });
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=Heading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Heading.js","sourceRoot":"","sources":["../../../src/components/defaults/Heading.tsx"],"names":[],"mappings":";AAQA,MAAM,CAAC,MAAM,OAAO,GAAqB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9D,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,EAAW,CAAA;IACrC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,IAAI,CAAC,EAAa,CAAC,CAAC,CAAC,SAAS,CAAA;IAEhF,OAAO,KAAC,GAAG,IAAC,EAAE,EAAE,EAAE,YAAG,QAAQ,GAAO,CAAA;AACtC,CAAC,CAAA"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"Image.js","sourceRoot":"","sources":["../../../src/components/defaults/Image.tsx"],"names":[],"mappings":";AAOA,MAAM,CAAC,MAAM,KAAK,GAAmB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IAChD,OAAO,cAAK,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS,GAAI,CAAA;AACpF,CAAC,CAAA"}
|
|
@@ -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,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export const Link = ({ node, children }) => {
|
|
3
|
+
// Basic security: prevent javascript: URLs
|
|
4
|
+
const href = node.url?.startsWith('javascript:') ? '#' : node.url;
|
|
5
|
+
return (_jsx("a", { href: href, title: node.title || undefined, children: children }));
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=Link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Link.js","sourceRoot":"","sources":["../../../src/components/defaults/Link.tsx"],"names":[],"mappings":";AAQA,MAAM,CAAC,MAAM,IAAI,GAAkB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxD,2CAA2C;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA;IAEjE,OAAO,CACL,YAAG,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS,YAC1C,QAAQ,GACP,CACL,CAAA;AACH,CAAC,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,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export const List = ({ node, children }) => {
|
|
3
|
+
const Tag = node.ordered ? 'ol' : 'ul';
|
|
4
|
+
const start = node.ordered && node.start != null && node.start !== 1 ? node.start : undefined;
|
|
5
|
+
return _jsx(Tag, { start: start, children: children });
|
|
6
|
+
};
|
|
7
|
+
export const ListItem = ({ node, children }) => {
|
|
8
|
+
// Handle task list items
|
|
9
|
+
if (typeof node.checked === 'boolean') {
|
|
10
|
+
return (_jsxs("li", { className: "task-list-item", children: [_jsx("input", { type: "checkbox", checked: node.checked, readOnly: true }), _jsx("span", { children: children })] }));
|
|
11
|
+
}
|
|
12
|
+
return _jsx("li", { children: children });
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=List.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"List.js","sourceRoot":"","sources":["../../../src/components/defaults/List.tsx"],"names":[],"mappings":";AAQA,MAAM,CAAC,MAAM,IAAI,GAAkB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;IAE7F,OAAO,KAAC,GAAG,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAO,CAAA;AAC5C,CAAC,CAAA;AAOD,MAAM,CAAC,MAAM,QAAQ,GAAsB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IAChE,yBAAyB;IACzB,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,CACL,cAAI,SAAS,EAAC,gBAAgB,aAC5B,gBAAO,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,SAAG,EACzD,yBAAO,QAAQ,GAAQ,IACpB,CACN,CAAA;IACH,CAAC;IAED,OAAO,uBAAK,QAAQ,GAAM,CAAA;AAC5B,CAAC,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 @@
|
|
|
1
|
+
{"version":3,"file":"Paragraph.js","sourceRoot":"","sources":["../../../src/components/defaults/Paragraph.tsx"],"names":[],"mappings":";AAQA,MAAM,CAAC,MAAM,SAAS,GAAuB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC5D,OAAO,sBAAI,QAAQ,GAAK,CAAA;AAC1B,CAAC,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,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export const Table = ({ children }) => {
|
|
3
|
+
return (_jsx("table", { children: children }));
|
|
4
|
+
};
|
|
5
|
+
export const TableRow = ({ children, isHeader }) => {
|
|
6
|
+
if (isHeader) {
|
|
7
|
+
return (_jsx("thead", { children: _jsx("tr", { children: children }) }));
|
|
8
|
+
}
|
|
9
|
+
return _jsx("tr", { children: children });
|
|
10
|
+
};
|
|
11
|
+
export const TableCell = ({ node, children }) => {
|
|
12
|
+
const isHeader = node.data?.isHeader;
|
|
13
|
+
const align = node.data?.align;
|
|
14
|
+
const Tag = isHeader ? 'th' : 'td';
|
|
15
|
+
const style = align ? { textAlign: align } : undefined;
|
|
16
|
+
return _jsx(Tag, { style: style, children: children });
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=Table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../src/components/defaults/Table.tsx"],"names":[],"mappings":";AAYA,MAAM,CAAC,MAAM,KAAK,GAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACpD,OAAO,CACL,0BACG,QAAQ,GACH,CACT,CAAA;AACH,CAAC,CAAA;AAQD,MAAM,CAAC,MAAM,QAAQ,GAAsB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;IACpE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CACL,0BACE,uBAAK,QAAQ,GAAM,GACb,CACT,CAAA;IACH,CAAC;IACD,OAAO,uBAAK,QAAQ,GAAM,CAAA;AAC5B,CAAC,CAAA;AAOD,MAAM,CAAC,MAAM,SAAS,GAAuB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAA;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,KAA2C,CAAA;IACpE,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAEtD,OAAO,KAAC,GAAG,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAO,CAAA;AAC5C,CAAC,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,28 @@
|
|
|
1
|
+
import { Heading } from './Heading';
|
|
2
|
+
import { Paragraph } from './Paragraph';
|
|
3
|
+
import { List, ListItem } from './List';
|
|
4
|
+
import { Table, TableRow, TableCell } from './Table';
|
|
5
|
+
import { Code, InlineCodeComponent } from './Code';
|
|
6
|
+
import { Link } from './Link';
|
|
7
|
+
import { Image } from './Image';
|
|
8
|
+
import { Blockquote } from './Blockquote';
|
|
9
|
+
// Re-export all components
|
|
10
|
+
export { Heading, Paragraph, List, ListItem, Table, TableRow, TableCell, Code, InlineCodeComponent, Link, Image, Blockquote, };
|
|
11
|
+
/**
|
|
12
|
+
* Default component map
|
|
13
|
+
*/
|
|
14
|
+
export const defaultComponents = {
|
|
15
|
+
heading: Heading,
|
|
16
|
+
paragraph: Paragraph,
|
|
17
|
+
list: List,
|
|
18
|
+
listItem: ListItem,
|
|
19
|
+
table: Table,
|
|
20
|
+
tableRow: TableRow,
|
|
21
|
+
tableCell: TableCell,
|
|
22
|
+
code: Code,
|
|
23
|
+
inlineCode: InlineCodeComponent,
|
|
24
|
+
link: Link,
|
|
25
|
+
image: Image,
|
|
26
|
+
blockquote: Blockquote,
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/defaults/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAA4B,MAAM,QAAQ,CAAA;AACjE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAA6C,MAAM,SAAS,CAAA;AAC/F,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAA8B,MAAM,QAAQ,CAAA;AAC9E,OAAO,EAAE,IAAI,EAAa,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,KAAK,EAAc,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAmB,MAAM,cAAc,CAAA;AAE1D,2BAA2B;AAC3B,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;AAsCD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC7C,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,IAAI;IACV,UAAU,EAAE,mBAAmB;IAC/B,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,UAAU;CACvB,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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { createParser } from '@pd-markdown/parser';
|
|
3
|
+
// Cached parser instance
|
|
4
|
+
let cachedParser = null;
|
|
5
|
+
function getParser(options) {
|
|
6
|
+
if (options) {
|
|
7
|
+
return createParser(options);
|
|
8
|
+
}
|
|
9
|
+
if (!cachedParser) {
|
|
10
|
+
cachedParser = createParser();
|
|
11
|
+
}
|
|
12
|
+
return cachedParser;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Hook for parsing markdown on the client side
|
|
16
|
+
*
|
|
17
|
+
* @param source - Markdown source string
|
|
18
|
+
* @param options - Parser options
|
|
19
|
+
* @returns Parsed AST
|
|
20
|
+
*/
|
|
21
|
+
export function useMarkdown(source, options) {
|
|
22
|
+
const ast = useMemo(() => {
|
|
23
|
+
const parser = getParser(options);
|
|
24
|
+
return parser.parse(source);
|
|
25
|
+
}, [source, options]);
|
|
26
|
+
return ast;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=useMarkdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMarkdown.js","sourceRoot":"","sources":["../../src/hooks/useMarkdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAE,YAAY,EAAsB,MAAM,qBAAqB,CAAA;AAEtE,yBAAyB;AACzB,IAAI,YAAY,GAA2C,IAAI,CAAA;AAE/D,SAAS,SAAS,CAAC,OAAuB;IACxC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,YAAY,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,YAAY,EAAE,CAAA;IAC/B,CAAC;IACD,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,OAAuB;IACjE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;QACvB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;QACjC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAErB,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/index.d.ts
ADDED
|
@@ -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"}
|
package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Components
|
|
2
|
+
export { MarkdownRenderer } from './components/MarkdownRenderer';
|
|
3
|
+
export { NodeRenderer } from './components/NodeRenderer';
|
|
4
|
+
export { MarkdownContext, useMarkdownContext } from './components/context';
|
|
5
|
+
// Default components
|
|
6
|
+
export { Heading, Paragraph, List, ListItem, Table, TableRow, TableCell, Code, InlineCodeComponent, Link, Image, Blockquote, defaultComponents, } from './components/defaults';
|
|
7
|
+
// Hooks
|
|
8
|
+
export { useMarkdown } from './hooks/useMarkdown';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
package/packages/web/.rollup.cache/Users/pidan/Work/Learn/pd-markdown/packages/web/dist/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,gBAAgB,EAA8B,MAAM,+BAA+B,CAAA;AAC5F,OAAO,EAAE,YAAY,EAA0B,MAAM,2BAA2B,CAAA;AAChF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAA6B,MAAM,sBAAsB,CAAA;AAErG,qBAAqB;AACrB,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,GAclB,MAAM,uBAAuB,CAAA;AAE9B,QAAQ;AACR,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { render, screen } from '@testing-library/react'
|
|
3
|
+
import { MarkdownRenderer } from '../src/components/MarkdownRenderer'
|
|
4
|
+
import { createParser } from '@pd-markdown/parser'
|
|
5
|
+
|
|
6
|
+
describe('MarkdownRenderer', () => {
|
|
7
|
+
it('should render markdown string', () => {
|
|
8
|
+
render(<MarkdownRenderer source="# Hello World" />)
|
|
9
|
+
|
|
10
|
+
expect(screen.getByRole('heading', { level: 1 })).toHaveTextContent('Hello World')
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
it('should render pre-parsed AST', () => {
|
|
14
|
+
const parser = createParser()
|
|
15
|
+
const ast = parser.parse('# From AST')
|
|
16
|
+
|
|
17
|
+
render(<MarkdownRenderer ast={ast} />)
|
|
18
|
+
|
|
19
|
+
expect(screen.getByRole('heading', { level: 1 })).toHaveTextContent('From AST')
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it('should render nothing when no content provided', () => {
|
|
23
|
+
const { container } = render(<MarkdownRenderer />)
|
|
24
|
+
|
|
25
|
+
expect(container.firstChild).toBeNull()
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
it('should apply className', () => {
|
|
29
|
+
const { container } = render(
|
|
30
|
+
<MarkdownRenderer source="# Test" className="markdown-body" />
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
expect(container.firstChild).toHaveClass('markdown-body')
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
it('should apply inline styles', () => {
|
|
37
|
+
const { container } = render(
|
|
38
|
+
<MarkdownRenderer source="# Test" style={{ color: 'red' }} />
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
expect(container.firstChild).toHaveStyle({ color: 'rgb(255, 0, 0)' })
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
it('should support custom components override', () => {
|
|
45
|
+
const CustomHeading = ({ children }: { children: React.ReactNode }) => (
|
|
46
|
+
<div data-testid="custom-heading">{children}</div>
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
render(
|
|
50
|
+
<MarkdownRenderer
|
|
51
|
+
source="# Custom"
|
|
52
|
+
components={{ heading: CustomHeading as any }}
|
|
53
|
+
/>
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
expect(screen.getByTestId('custom-heading')).toHaveTextContent('Custom')
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
it('should render multiple elements', () => {
|
|
60
|
+
render(
|
|
61
|
+
<MarkdownRenderer
|
|
62
|
+
source={`
|
|
63
|
+
# Heading
|
|
64
|
+
|
|
65
|
+
Paragraph text.
|
|
66
|
+
|
|
67
|
+
- Item 1
|
|
68
|
+
- Item 2
|
|
69
|
+
`.trim()}
|
|
70
|
+
/>
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
expect(screen.getByRole('heading')).toBeInTheDocument()
|
|
74
|
+
expect(screen.getByText('Paragraph text.')).toBeInTheDocument()
|
|
75
|
+
expect(screen.getByRole('list')).toBeInTheDocument()
|
|
76
|
+
})
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
describe('MarkdownRenderer SSR compatibility', () => {
|
|
80
|
+
it('should render from AST without re-parsing', () => {
|
|
81
|
+
const parser = createParser()
|
|
82
|
+
const ast = parser.parse('# Pre-rendered')
|
|
83
|
+
|
|
84
|
+
// This simulates SSR where AST is passed directly
|
|
85
|
+
const { container } = render(<MarkdownRenderer ast={ast} />)
|
|
86
|
+
|
|
87
|
+
expect(container.querySelector('h1')).toHaveTextContent('Pre-rendered')
|
|
88
|
+
})
|
|
89
|
+
})
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { render, screen } from '@testing-library/react'
|
|
3
|
+
import { NodeRenderer } from '../src/components/NodeRenderer'
|
|
4
|
+
import { MarkdownContext } from '../src/components/context'
|
|
5
|
+
import type { Root, Heading, Paragraph } from 'mdast'
|
|
6
|
+
|
|
7
|
+
const renderWithContext = (node: any, components = {}) => {
|
|
8
|
+
return render(
|
|
9
|
+
<MarkdownContext.Provider value={{ components }}>
|
|
10
|
+
<NodeRenderer node={node} />
|
|
11
|
+
</MarkdownContext.Provider>
|
|
12
|
+
)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
describe('NodeRenderer', () => {
|
|
16
|
+
it('should render root node', () => {
|
|
17
|
+
const root: Root = {
|
|
18
|
+
type: 'root',
|
|
19
|
+
children: [
|
|
20
|
+
{
|
|
21
|
+
type: 'paragraph',
|
|
22
|
+
children: [{ type: 'text', value: 'Hello' }],
|
|
23
|
+
} as Paragraph,
|
|
24
|
+
],
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
renderWithContext(root)
|
|
28
|
+
expect(screen.getByText('Hello')).toBeInTheDocument()
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
it('should render heading with correct level', () => {
|
|
32
|
+
const heading: Heading = {
|
|
33
|
+
type: 'heading',
|
|
34
|
+
depth: 2,
|
|
35
|
+
children: [{ type: 'text', value: 'Title' }],
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
renderWithContext(heading)
|
|
39
|
+
expect(screen.getByRole('heading', { level: 2 })).toHaveTextContent('Title')
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
it('should render heading with id from data', () => {
|
|
43
|
+
const heading: Heading = {
|
|
44
|
+
type: 'heading',
|
|
45
|
+
depth: 1,
|
|
46
|
+
children: [{ type: 'text', value: 'Hello' }],
|
|
47
|
+
data: { id: 'hello' },
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
renderWithContext(heading)
|
|
51
|
+
expect(screen.getByRole('heading')).toHaveAttribute('id', 'hello')
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
it('should render inline formatting', () => {
|
|
55
|
+
const paragraph: Paragraph = {
|
|
56
|
+
type: 'paragraph',
|
|
57
|
+
children: [
|
|
58
|
+
{ type: 'text', value: 'Hello ' },
|
|
59
|
+
{ type: 'strong', children: [{ type: 'text', value: 'bold' }] },
|
|
60
|
+
{ type: 'text', value: ' and ' },
|
|
61
|
+
{ type: 'emphasis', children: [{ type: 'text', value: 'italic' }] },
|
|
62
|
+
],
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const { container } = renderWithContext(paragraph)
|
|
66
|
+
expect(container.querySelector('strong')).toHaveTextContent('bold')
|
|
67
|
+
expect(container.querySelector('em')).toHaveTextContent('italic')
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
it('should handle unknown node types gracefully', () => {
|
|
71
|
+
const unknown = {
|
|
72
|
+
type: 'unknown-type',
|
|
73
|
+
children: [
|
|
74
|
+
{ type: 'paragraph', children: [{ type: 'text', value: 'Content' }] },
|
|
75
|
+
],
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Should not throw and should try to render children
|
|
79
|
+
renderWithContext(unknown)
|
|
80
|
+
expect(screen.getByText('Content')).toBeInTheDocument()
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
it('should use custom component override', () => {
|
|
84
|
+
const heading: Heading = {
|
|
85
|
+
type: 'heading',
|
|
86
|
+
depth: 1,
|
|
87
|
+
children: [{ type: 'text', value: 'Custom' }],
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const CustomHeading = ({ children }: { children: React.ReactNode }) => (
|
|
91
|
+
<span data-testid="custom">{children}</span>
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
renderWithContext(heading, { heading: CustomHeading })
|
|
95
|
+
expect(screen.getByTestId('custom')).toHaveTextContent('Custom')
|
|
96
|
+
})
|
|
97
|
+
})
|