pd-markdown 1.1.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +52 -170
  2. package/package.json +12 -11
  3. package/packages/parser/README.md +120 -0
  4. package/packages/utils/README.md +130 -0
  5. package/packages/web/README.md +110 -0
  6. package/packages/parser/dist/index.cjs +0 -191
  7. package/packages/parser/dist/index.cjs.map +0 -1
  8. package/packages/parser/dist/index.d.ts +0 -4
  9. package/packages/parser/dist/index.d.ts.map +0 -1
  10. package/packages/parser/dist/index.mjs +0 -185
  11. package/packages/parser/dist/index.mjs.map +0 -1
  12. package/packages/parser/dist/plugins/index.d.ts +0 -4
  13. package/packages/parser/dist/plugins/index.d.ts.map +0 -1
  14. package/packages/parser/dist/plugins/transform/heading.d.ts +0 -6
  15. package/packages/parser/dist/plugins/transform/heading.d.ts.map +0 -1
  16. package/packages/parser/dist/plugins/transform/list.d.ts +0 -14
  17. package/packages/parser/dist/plugins/transform/list.d.ts.map +0 -1
  18. package/packages/parser/dist/plugins/transform/table.d.ts +0 -27
  19. package/packages/parser/dist/plugins/transform/table.d.ts.map +0 -1
  20. package/packages/parser/dist/processor.d.ts +0 -22
  21. package/packages/parser/dist/processor.d.ts.map +0 -1
  22. package/packages/parser/dist/types/index.d.ts +0 -55
  23. package/packages/parser/dist/types/index.d.ts.map +0 -1
  24. package/packages/utils/dist/ast/query.d.ts +0 -36
  25. package/packages/utils/dist/ast/query.d.ts.map +0 -1
  26. package/packages/utils/dist/ast/traverse.d.ts +0 -22
  27. package/packages/utils/dist/ast/traverse.d.ts.map +0 -1
  28. package/packages/utils/dist/index.cjs +0 -358
  29. package/packages/utils/dist/index.cjs.map +0 -1
  30. package/packages/utils/dist/index.d.ts +0 -7
  31. package/packages/utils/dist/index.d.ts.map +0 -1
  32. package/packages/utils/dist/index.mjs +0 -343
  33. package/packages/utils/dist/index.mjs.map +0 -1
  34. package/packages/utils/dist/string/sanitize.d.ts +0 -22
  35. package/packages/utils/dist/string/sanitize.d.ts.map +0 -1
  36. package/packages/utils/dist/string/slugify.d.ts +0 -16
  37. package/packages/utils/dist/string/slugify.d.ts.map +0 -1
  38. package/packages/utils/dist/types/index.d.ts +0 -49
  39. package/packages/utils/dist/types/index.d.ts.map +0 -1
  40. package/packages/web/dist/components/MarkdownRenderer.d.ts +0 -27
  41. package/packages/web/dist/components/MarkdownRenderer.d.ts.map +0 -1
  42. package/packages/web/dist/components/NodeRenderer.d.ts +0 -10
  43. package/packages/web/dist/components/NodeRenderer.d.ts.map +0 -1
  44. package/packages/web/dist/components/context.d.ts +0 -17
  45. package/packages/web/dist/components/context.d.ts.map +0 -1
  46. package/packages/web/dist/components/defaults/Blockquote.d.ts +0 -8
  47. package/packages/web/dist/components/defaults/Blockquote.d.ts.map +0 -1
  48. package/packages/web/dist/components/defaults/Code.d.ts +0 -13
  49. package/packages/web/dist/components/defaults/Code.d.ts.map +0 -1
  50. package/packages/web/dist/components/defaults/Heading.d.ts +0 -8
  51. package/packages/web/dist/components/defaults/Heading.d.ts.map +0 -1
  52. package/packages/web/dist/components/defaults/Image.d.ts +0 -7
  53. package/packages/web/dist/components/defaults/Image.d.ts.map +0 -1
  54. package/packages/web/dist/components/defaults/Link.d.ts +0 -8
  55. package/packages/web/dist/components/defaults/Link.d.ts.map +0 -1
  56. package/packages/web/dist/components/defaults/List.d.ts +0 -13
  57. package/packages/web/dist/components/defaults/List.d.ts.map +0 -1
  58. package/packages/web/dist/components/defaults/Paragraph.d.ts +0 -8
  59. package/packages/web/dist/components/defaults/Paragraph.d.ts.map +0 -1
  60. package/packages/web/dist/components/defaults/Table.d.ts +0 -19
  61. package/packages/web/dist/components/defaults/Table.d.ts.map +0 -1
  62. package/packages/web/dist/components/defaults/index.d.ts +0 -34
  63. package/packages/web/dist/components/defaults/index.d.ts.map +0 -1
  64. package/packages/web/dist/hooks/useMarkdown.d.ts +0 -11
  65. package/packages/web/dist/hooks/useMarkdown.d.ts.map +0 -1
  66. package/packages/web/dist/index.cjs +0 -306
  67. package/packages/web/dist/index.cjs.map +0 -1
  68. package/packages/web/dist/index.d.ts +0 -6
  69. package/packages/web/dist/index.d.ts.map +0 -1
  70. package/packages/web/dist/index.mjs +0 -287
  71. package/packages/web/dist/index.mjs.map +0 -1
@@ -1,287 +0,0 @@
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
@@ -1 +0,0 @@
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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"}