safe-mdx 1.3.2 → 1.3.6

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 (77) hide show
  1. package/README.md +14 -14
  2. package/dist/assets/HtmlToJsxConverter-Ds0bTjpw.js +24 -0
  3. package/dist/assets/_commonjsHelpers-CqkleIqs.js +1 -0
  4. package/dist/assets/index-B5fPOjPt.css +1 -0
  5. package/dist/assets/index-B7ATSoRE.js +9 -0
  6. package/dist/assets/index-BwZ2FTRd.js +146 -0
  7. package/dist/assets/index-R1UqLMGJ.js +1 -0
  8. package/dist/assets/index-c0qeY2gs.js +9 -0
  9. package/dist/assets/jsx-runtime-BhZZLbvw.js +9 -0
  10. package/dist/assets/jsx-runtime-NArryeSM.js +1 -0
  11. package/dist/assets/react-Ca6JzGpx.js +1 -0
  12. package/dist/assets/react-dom-BYRHYqYl.js +1 -0
  13. package/dist/html/attributes.d.ts +19 -0
  14. package/dist/html/attributes.d.ts.map +1 -0
  15. package/dist/html/attributes.js +289 -0
  16. package/dist/html/attributes.js.map +1 -0
  17. package/dist/html/convert-attributes.d.ts +6 -0
  18. package/dist/html/convert-attributes.d.ts.map +1 -0
  19. package/dist/html/convert-attributes.js +43 -0
  20. package/dist/html/convert-attributes.js.map +1 -0
  21. package/dist/html/domparser-browser.d.ts +4 -0
  22. package/dist/html/domparser-browser.d.ts.map +1 -0
  23. package/dist/html/domparser-browser.js +7 -0
  24. package/dist/html/domparser-browser.js.map +1 -0
  25. package/dist/html/domparser.d.ts +2 -0
  26. package/dist/html/domparser.d.ts.map +1 -0
  27. package/dist/html/domparser.js +5 -0
  28. package/dist/html/domparser.js.map +1 -0
  29. package/dist/html/html-to-mdx-ast.d.ts +25 -0
  30. package/dist/html/html-to-mdx-ast.d.ts.map +1 -0
  31. package/dist/html/html-to-mdx-ast.js +247 -0
  32. package/dist/html/html-to-mdx-ast.js.map +1 -0
  33. package/dist/html/html-to-mdx-ast.test.d.ts +2 -0
  34. package/dist/html/html-to-mdx-ast.test.d.ts.map +1 -0
  35. package/dist/html/html-to-mdx-ast.test.js +411 -0
  36. package/dist/html/html-to-mdx-ast.test.js.map +1 -0
  37. package/dist/html/remark-mdx-jsx-normalize.d.ts +10 -0
  38. package/dist/html/remark-mdx-jsx-normalize.d.ts.map +1 -0
  39. package/dist/html/remark-mdx-jsx-normalize.js +194 -0
  40. package/dist/html/remark-mdx-jsx-normalize.js.map +1 -0
  41. package/dist/html/valid-html-elements.d.ts +10 -0
  42. package/dist/html/valid-html-elements.d.ts.map +1 -0
  43. package/dist/html/valid-html-elements.js +50 -0
  44. package/dist/html/valid-html-elements.js.map +1 -0
  45. package/dist/index.html +19 -0
  46. package/dist/parse.d.ts +2 -0
  47. package/dist/parse.d.ts.map +1 -1
  48. package/dist/parse.js +2 -0
  49. package/dist/parse.js.map +1 -1
  50. package/dist/safe-mdx.d.ts +2 -2
  51. package/dist/safe-mdx.d.ts.map +1 -1
  52. package/dist/safe-mdx.js +24 -76
  53. package/dist/safe-mdx.js.map +1 -1
  54. package/dist/safe-mdx.test.js +161 -8
  55. package/dist/safe-mdx.test.js.map +1 -1
  56. package/package.json +28 -6
  57. package/src/html/README +17 -0
  58. package/src/html/attributes.ts +297 -0
  59. package/src/html/convert-attributes.ts +59 -0
  60. package/src/html/domparser-browser.ts +6 -0
  61. package/src/html/domparser.ts +5 -0
  62. package/src/html/html-to-mdx-ast.test.ts +459 -0
  63. package/src/html/html-to-mdx-ast.ts +327 -0
  64. package/src/html/remark-mdx-jsx-normalize.ts +209 -0
  65. package/src/html/valid-html-elements.ts +65 -0
  66. package/src/parse.ts +3 -0
  67. package/src/safe-mdx.test.tsx +178 -12
  68. package/src/safe-mdx.tsx +25 -84
  69. package/dist/HtmlToJsxConverter.d.ts +0 -10
  70. package/dist/HtmlToJsxConverter.d.ts.map +0 -1
  71. package/dist/HtmlToJsxConverter.js +0 -22
  72. package/dist/HtmlToJsxConverter.js.map +0 -1
  73. package/dist/plugins.d.ts +0 -12
  74. package/dist/plugins.d.ts.map +0 -1
  75. package/dist/plugins.js +0 -68
  76. package/dist/plugins.js.map +0 -1
  77. package/src/HtmlToJsxConverter.tsx +0 -37
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-to-mdx-ast.test.js","sourceRoot":"","sources":["../../src/html/html-to-mdx-ast.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Root } from 'mdast';
2
+ /**
3
+ * remark plugin: make mdxJsx* element kinds match their context.
4
+ * - Inside phrasing parents → mdxJsxTextElement
5
+ * - Inside flow parents → mdxJsxFlowElement
6
+ * - Elements with block-level tag names → mdxJsxFlowElement
7
+ * - Elements containing non-phrasing children → mdxJsxFlowElement
8
+ */
9
+ export declare function remarkMdxJsxNormalize(): (tree: Root) => void;
10
+ //# sourceMappingURL=remark-mdx-jsx-normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remark-mdx-jsx-normalize.d.ts","sourceRoot":"","sources":["../../src/html/remark-mdx-jsx-normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAgC,MAAM,OAAO,CAAA;AA6I/D;;;;;;GAMG;AACH,wBAAgB,qBAAqB,WACD,IAAI,UAoDvC"}
@@ -0,0 +1,194 @@
1
+ import { visitParents } from 'unist-util-visit-parents';
2
+ // Type definitions for MDX and MDAST content types
3
+ // type FlowContent = Blockquote | Code | Heading | Html | List | ThematicBreak | Content
4
+ // type PhrasingContent = Break | Emphasis | Html | Image | ImageReference | InlineCode | Link | LinkReference | Strong | Text
5
+ // type MdxJsxFlowContent = MdxJsxFlowElement | FlowContent
6
+ // type MdxJsxPhrasingContent = MdxJsxTextElement | PhrasingContent
7
+ /** Parents that require phrasing/inline children */
8
+ const PHRASE_CONTAINERS = new Set([
9
+ 'paragraph',
10
+ 'heading',
11
+ 'emphasis',
12
+ 'strong',
13
+ 'delete',
14
+ 'link',
15
+ 'linkReference',
16
+ 'tableCell',
17
+ 'mdxJsxTextElement', // MDX JSX text elements should contain phrasing
18
+ ]);
19
+ /** HTML tags that require phrasing/inline children */
20
+ const PHRASE_HTML_CONTAINERS = new Set([
21
+ 'p',
22
+ 'h1',
23
+ 'h2',
24
+ 'h3',
25
+ 'h4',
26
+ 'h5',
27
+ 'h6',
28
+ 'em',
29
+ 'strong',
30
+ 'b',
31
+ 'i',
32
+ 'u',
33
+ 's',
34
+ 'del',
35
+ 'ins',
36
+ 'mark',
37
+ 'small',
38
+ 'sub',
39
+ 'sup',
40
+ 'a',
41
+ 'abbr',
42
+ 'cite',
43
+ 'code',
44
+ 'dfn',
45
+ 'kbd',
46
+ 'q',
47
+ 'samp',
48
+ 'span',
49
+ 'time',
50
+ 'var',
51
+ ]);
52
+ /** Parents that accept/expect flow (block) content */
53
+ const FLOW_CONTAINERS = new Set([
54
+ 'root',
55
+ 'listItem',
56
+ 'blockquote',
57
+ 'footnoteDefinition',
58
+ 'mdxJsxFlowElement', // MDX JSX flow elements should contain flow
59
+ ]);
60
+ /** Check if a node represents phrasing content */
61
+ function isPhrasing(node) {
62
+ const phrasingTypes = new Set([
63
+ 'text',
64
+ 'emphasis',
65
+ 'strong',
66
+ 'delete',
67
+ 'html',
68
+ 'image',
69
+ 'imageReference',
70
+ 'inlineCode',
71
+ 'link',
72
+ 'linkReference',
73
+ 'break',
74
+ 'mdxJsxTextElement',
75
+ ]);
76
+ return phrasingTypes.has(node.type);
77
+ }
78
+ /** Tags that are typically block-level elements */
79
+ const blockLevelTags = new Set([
80
+ 'div',
81
+ 'p',
82
+ 'blockquote',
83
+ 'h1',
84
+ 'h2',
85
+ 'h3',
86
+ 'h4',
87
+ 'h5',
88
+ 'h6',
89
+ 'ul',
90
+ 'ol',
91
+ 'li',
92
+ 'pre',
93
+ 'hr',
94
+ 'table',
95
+ 'thead',
96
+ 'tbody',
97
+ 'tfoot',
98
+ 'tr',
99
+ 'th',
100
+ 'td',
101
+ 'section',
102
+ 'article',
103
+ 'aside',
104
+ 'nav',
105
+ 'header',
106
+ 'footer',
107
+ 'main',
108
+ 'figure',
109
+ 'figcaption',
110
+ // Notion-specific block elements
111
+ 'callout',
112
+ 'columns',
113
+ 'column',
114
+ 'page',
115
+ 'database',
116
+ 'data-source',
117
+ 'audio',
118
+ 'video',
119
+ 'file',
120
+ 'pdf',
121
+ 'embed',
122
+ 'synced_block',
123
+ 'synced_block_reference',
124
+ 'meeting-notes',
125
+ 'summary',
126
+ 'notes',
127
+ 'transcript',
128
+ 'table_of_contents',
129
+ 'unknown',
130
+ 'image', // Images can be block-level in Notion
131
+ ]);
132
+ /**
133
+ * remark plugin: make mdxJsx* element kinds match their context.
134
+ * - Inside phrasing parents → mdxJsxTextElement
135
+ * - Inside flow parents → mdxJsxFlowElement
136
+ * - Elements with block-level tag names → mdxJsxFlowElement
137
+ * - Elements containing non-phrasing children → mdxJsxFlowElement
138
+ */
139
+ export function remarkMdxJsxNormalize() {
140
+ return function transform(tree) {
141
+ visitParents(tree, isMdxJsx, (node, ancestors) => {
142
+ const element = node;
143
+ const parent = ancestors[ancestors.length - 1];
144
+ if (!parent)
145
+ return;
146
+ // Check if parent expects phrasing or flow content
147
+ let parentExpectsPhrasing = false;
148
+ let parentExpectsFlow = false;
149
+ if ((parent.type === 'mdxJsxFlowElement' || parent.type === 'mdxJsxTextElement') &&
150
+ parent.name) {
151
+ // For MDX JSX elements, check the tag name
152
+ const parentTagName = parent.name.toLowerCase();
153
+ parentExpectsPhrasing = PHRASE_HTML_CONTAINERS.has(parentTagName);
154
+ // If not phrasing and is a block-level tag, it expects flow
155
+ parentExpectsFlow = !parentExpectsPhrasing && blockLevelTags.has(parentTagName);
156
+ }
157
+ else {
158
+ // For mdast nodes, check the type
159
+ parentExpectsPhrasing = PHRASE_CONTAINERS.has(parent.type);
160
+ parentExpectsFlow = FLOW_CONTAINERS.has(parent.type);
161
+ }
162
+ // Check element properties
163
+ const hasBlockTag = element.name
164
+ ? blockLevelTags.has(element.name.toLowerCase())
165
+ : false;
166
+ const children = (element.children || []);
167
+ const containsNonPhrasing = children.some((c) => !isPhrasing(c));
168
+ // Determine desired type
169
+ let desired = element.type;
170
+ // Priority rules:
171
+ // 1. If it has a block-level tag name, it should be flow
172
+ // 2. If it contains non-phrasing children, it should be flow
173
+ // 3. Otherwise, match parent context
174
+ if (hasBlockTag || containsNonPhrasing) {
175
+ desired = 'mdxJsxFlowElement';
176
+ }
177
+ else if (parentExpectsPhrasing) {
178
+ desired = 'mdxJsxTextElement';
179
+ }
180
+ else if (parentExpectsFlow) {
181
+ desired = 'mdxJsxFlowElement';
182
+ }
183
+ // Apply the change if needed
184
+ if (element.type !== desired) {
185
+ element.type = desired;
186
+ }
187
+ });
188
+ };
189
+ }
190
+ /** Check if a node is an MDX JSX element */
191
+ function isMdxJsx(node) {
192
+ return (node.type === 'mdxJsxTextElement' || node.type === 'mdxJsxFlowElement');
193
+ }
194
+ //# sourceMappingURL=remark-mdx-jsx-normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remark-mdx-jsx-normalize.js","sourceRoot":"","sources":["../../src/html/remark-mdx-jsx-normalize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const validHtmlElements: Set<string>;
2
+ export declare const nativeTags: readonly string[];
3
+ /**
4
+ * Convert HTML tag name to JSX component name
5
+ * Returns empty string if the tag is not a valid HTML element
6
+ */
7
+ export declare function htmlTagNameConverter({ tagName }: {
8
+ tagName: string;
9
+ }): string;
10
+ //# sourceMappingURL=valid-html-elements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valid-html-elements.d.ts","sourceRoot":"","sources":["../../src/html/valid-html-elements.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,aA2C5B,CAAA;AAGF,eAAO,MAAM,UAAU,mBAAqD,CAAA;AAE5E;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAU7E"}
@@ -0,0 +1,50 @@
1
+ // List of valid HTML elements that should be preserved
2
+ // All other elements will be filtered out (return empty string)
3
+ export const validHtmlElements = new Set([
4
+ // Document metadata
5
+ 'base', 'head', 'link', 'meta', 'style', 'title',
6
+ // Content sectioning
7
+ 'address', 'article', 'aside', 'footer', 'header', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',
8
+ 'main', 'nav', 'section',
9
+ // Text content
10
+ 'blockquote', 'dd', 'div', 'dl', 'dt', 'figcaption', 'figure', 'hr', 'li', 'ol', 'p', 'pre', 'ul',
11
+ // Inline text semantics
12
+ 'a', 'abbr', 'b', 'bdi', 'bdo', 'br', 'cite', 'code', 'data', 'dfn', 'em', 'i', 'kbd',
13
+ 'mark', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'small', 'span', 'strong', 'sub', 'sup',
14
+ 'time', 'u', 'var', 'wbr',
15
+ // Image and multimedia
16
+ 'area', 'audio', 'img', 'map', 'track', 'video',
17
+ // Embedded content
18
+ 'embed', 'iframe', 'object', 'param', 'picture', 'portal', 'source',
19
+ // SVG and MathML
20
+ 'svg', 'math', 'path',
21
+ // Scripting
22
+ 'canvas', 'noscript', 'script',
23
+ // Demarcating edits
24
+ 'del', 'ins',
25
+ // Table content
26
+ 'caption', 'col', 'colgroup', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr',
27
+ // Forms
28
+ 'button', 'datalist', 'fieldset', 'form', 'input', 'label', 'legend', 'meter', 'optgroup',
29
+ 'option', 'output', 'progress', 'select', 'textarea',
30
+ // Interactive elements
31
+ 'details', 'dialog', 'menu', 'summary',
32
+ // Web Components
33
+ 'slot', 'template',
34
+ ]);
35
+ // Export as an array for backward compatibility with nativeTags
36
+ export const nativeTags = Array.from(validHtmlElements);
37
+ /**
38
+ * Convert HTML tag name to JSX component name
39
+ * Returns empty string if the tag is not a valid HTML element
40
+ */
41
+ export function htmlTagNameConverter({ tagName }) {
42
+ const lowerTag = tagName.toLowerCase();
43
+ // Check if it's a valid HTML element
44
+ if (validHtmlElements.has(lowerTag)) {
45
+ return lowerTag;
46
+ }
47
+ // Return empty string for non-HTML elements
48
+ return '';
49
+ }
50
+ //# sourceMappingURL=valid-html-elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valid-html-elements.js","sourceRoot":"","sources":["../../src/html/valid-html-elements.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,gEAAgE;AAChE,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACrC,oBAAoB;IACpB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAEhD,qBAAqB;IACrB,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACrF,MAAM,EAAE,KAAK,EAAE,SAAS;IAExB,eAAe;IACf,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI;IAEjG,wBAAwB;IACxB,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK;IACrF,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK;IACrF,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK;IAEzB,uBAAuB;IACvB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO;IAE/C,mBAAmB;IACnB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ;IAEnE,iBAAiB;IACjB,KAAK,EAAE,MAAM,EAAE,MAAM;IAErB,YAAY;IACZ,QAAQ,EAAE,UAAU,EAAE,QAAQ;IAE9B,oBAAoB;IACpB,KAAK,EAAE,KAAK;IAEZ,gBAAgB;IAChB,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;IAElF,QAAQ;IACR,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU;IACzF,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU;IAEpD,uBAAuB;IACvB,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS;IAEtC,iBAAiB;IACjB,MAAM,EAAE,UAAU;CACrB,CAAC,CAAA;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAsB,CAAA;AAE5E;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAE,OAAO,EAAuB;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IAEtC,qCAAqC;IACrC,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QACjC,OAAO,QAAQ,CAAA;KAClB;IAED,4CAA4C;IAC5C,OAAO,EAAE,CAAA;AACb,CAAC"}
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Safe MDX Demo with Vite + React + Tailwind v4</title>
7
+
8
+ <script type="module" crossorigin src="/assets/index-BwZ2FTRd.js"></script>
9
+ <link rel="modulepreload" crossorigin href="/assets/_commonjsHelpers-CqkleIqs.js">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-BhZZLbvw.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/index-c0qeY2gs.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/index-B7ATSoRE.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/index-R1UqLMGJ.js">
14
+ <link rel="stylesheet" crossorigin href="/assets/index-B5fPOjPt.css">
15
+ </head>
16
+ <body>
17
+ <div id="root"></div>
18
+ </body>
19
+ </html>
package/dist/parse.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  import { Root } from 'mdast';
2
+ import { parseHtmlToMdxAst, remarkMdxJsxNormalize } from './html/html-to-mdx-ast.js';
3
+ export { parseHtmlToMdxAst, remarkMdxJsxNormalize };
2
4
  export declare function mdxParse(code: string): Root;
3
5
  /**
4
6
  * https://github.com/mdx-js/mdx/blob/b3351fadcb6f78833a72757b7135dcfb8ab646fe/packages/mdx/lib/plugin/remark-mark-and-unravel.js
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAe,MAAM,OAAO,CAAA;AAKzC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,QAGpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,WACT,IAAI,UAqE9B"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAe,MAAM,OAAO,CAAA;AAIzC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAEpF,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAA;AAEnD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,QAGpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,WACT,IAAI,UAqE9B"}
package/dist/parse.js CHANGED
@@ -4,6 +4,8 @@ import { visit } from 'unist-util-visit';
4
4
  import { remark } from 'remark';
5
5
  import remarkGfm from 'remark-gfm';
6
6
  import remarkMdx from 'remark-mdx';
7
+ import { parseHtmlToMdxAst, remarkMdxJsxNormalize } from './html/html-to-mdx-ast.js';
8
+ export { parseHtmlToMdxAst, remarkMdxJsxNormalize };
7
9
  export function mdxParse(code) {
8
10
  const file = mdxProcessor.processSync(code);
9
11
  return file.data.ast;
package/dist/parse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import type { JSXElement } from 'estree-jsx';
4
4
  import type { Node, Parent, Root, RootContent } from 'mdast';
5
5
  import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx-jsx';
6
6
  import { ReactNode } from 'react';
7
+ import { nativeTags } from './html/valid-html-elements.js';
7
8
  export type MyRootContent = RootContent | Root;
8
9
  declare module 'mdast' {
9
10
  interface HProperties {
@@ -61,10 +62,9 @@ export declare class MdastToJsx {
61
62
  transformJsxElement(jsxElement: JSXElement, onError?: (err: SafeMdxError) => void, line?: number): ReactNode;
62
63
  getJsxAttrs(node: MdxJsxFlowElement | MdxJsxTextElement, onError?: (err: SafeMdxError) => void): [string, any][];
63
64
  run(): any;
64
- mdastTransformer(node: MyRootContent): ReactNode;
65
+ mdastTransformer(node: MyRootContent, parentType?: string): ReactNode;
65
66
  }
66
67
  export declare function mdastBfs(node: Parent | Node, cb?: (node: Node | Parent) => any): any[];
67
- declare const nativeTags: readonly ["blockquote", "strong", "em", "del", "hr", "a", "b", "br", "button", "div", "form", "h1", "h2", "h3", "h4", "head", "iframe", "img", "input", "label", "li", "link", "ol", "p", "path", "picture", "script", "section", "source", "span", "sub", "sup", "svg", "table", "tbody", "td", "tfoot", "th", "thead", "tr", "ul", "video", "code", "pre", "figure", "canvas", "details", "dl", "dt", "dd", "fieldset", "footer", "header", "legend", "main", "mark", "nav", "progress", "summary", "time"];
68
68
  type ComponentsMap = {
69
69
  [k in (typeof nativeTags)[number]]?: any;
70
70
  } & {
@@ -1 +1 @@
1
- {"version":3,"file":"safe-mdx.d.ts","sourceRoot":"","sources":["../src/safe-mdx.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safe-mdx.d.ts","sourceRoot":"","sources":["../src/safe-mdx.tsx"],"names":[],"mappings":"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"}
package/dist/safe-mdx.js CHANGED
@@ -1,11 +1,10 @@
1
- import React, { Suspense, cloneElement } from 'react';
1
+ import React, { cloneElement } from 'react';
2
2
  import Evaluate from 'eval-estree-expression';
3
3
  import { Fragment } from 'react';
4
4
  import { DynamicEsmComponent } from './dynamic-esm-component.js';
5
5
  import { extractComponentInfo, parseEsmImports } from './esm-parser.js';
6
- const HtmlToJsxConverter = React.lazy(() => import('./HtmlToJsxConverter.js').then((module) => ({
7
- default: module.HtmlToJsxConverter,
8
- })));
6
+ import { htmlToMdxAst } from './html/html-to-mdx-ast.js';
7
+ import { validHtmlElements, nativeTags } from './html/valid-html-elements.js';
9
8
  export const SafeMdxRenderer = React.memo(function SafeMdxRenderer({ components, markdown = '', mdast = null, renderNode, componentPropsSchema, createElement, allowClientEsmImports = false, addMarkdownLineNumbers = false, }) {
10
9
  const visitor = new MdastToJsx({
11
10
  markdown,
@@ -86,7 +85,7 @@ export class MdastToJsx {
86
85
  }
87
86
  mapMdastChildren(node) {
88
87
  const res = node.children
89
- ?.flatMap((child) => this.mdastTransformer(child))
88
+ ?.flatMap((child) => this.mdastTransformer(child, node.type))
90
89
  .filter(Boolean);
91
90
  if (Array.isArray(res)) {
92
91
  if (!res.length) {
@@ -162,7 +161,7 @@ export class MdastToJsx {
162
161
  return this.createElement(Component, this.addLineNumberToProps(attrs, node), this.mapJsxChildren(node));
163
162
  }
164
163
  default: {
165
- return this.mdastTransformer(node);
164
+ return this.mdastTransformer(node, 'mdxJsxElement');
166
165
  }
167
166
  }
168
167
  }
@@ -392,19 +391,19 @@ export class MdastToJsx {
392
391
  return attrsList;
393
392
  }
394
393
  run() {
395
- const res = this.mdastTransformer(this.mdast);
394
+ const res = this.mdastTransformer(this.mdast, 'root');
396
395
  if (Array.isArray(res) && res.length === 1) {
397
396
  return res[0];
398
397
  }
399
398
  return res;
400
399
  }
401
- mdastTransformer(node) {
400
+ mdastTransformer(node, parentType) {
402
401
  if (!node) {
403
402
  return [];
404
403
  }
405
404
  // Check for custom transformer first, giving it higher priority
406
405
  if (this.renderNode) {
407
- const customResult = this.renderNode(node, this.mdastTransformer.bind(this));
406
+ const customResult = this.renderNode(node, (n) => this.mdastTransformer(n, node.type));
408
407
  if (customResult !== undefined) {
409
408
  return customResult;
410
409
  }
@@ -616,11 +615,22 @@ export class MdastToJsx {
616
615
  if (!text) {
617
616
  return [];
618
617
  }
619
- return this.createElement(Suspense, { fallback: null }, this.createElement(HtmlToJsxConverter, {
620
- htmlText: text,
621
- instance: this,
622
- node,
623
- }));
618
+ // Parse HTML to MDX AST using the new approach - always returns an array
619
+ const mdxAst = htmlToMdxAst({
620
+ html: text,
621
+ parentType: parentType || 'root',
622
+ convertTagName: ({ tagName }) => {
623
+ const lowerTag = tagName.toLowerCase();
624
+ // Only keep valid HTML elements
625
+ if (validHtmlElements.has(lowerTag)) {
626
+ return lowerTag;
627
+ }
628
+ // Return empty string for non-HTML elements
629
+ return '';
630
+ }
631
+ });
632
+ // Process the MDX AST nodes
633
+ return mdxAst.map(child => this.mdastTransformer(child, parentType));
624
634
  }
625
635
  case 'imageReference': {
626
636
  return [];
@@ -671,66 +681,4 @@ function safeJsonParse(str) {
671
681
  return null;
672
682
  }
673
683
  }
674
- const nativeTags = [
675
- 'blockquote',
676
- 'strong',
677
- 'em',
678
- 'del',
679
- 'hr',
680
- 'a',
681
- 'b',
682
- 'br',
683
- 'button',
684
- 'div',
685
- 'form',
686
- 'h1',
687
- 'h2',
688
- 'h3',
689
- 'h4',
690
- 'head',
691
- 'iframe',
692
- 'img',
693
- 'input',
694
- 'label',
695
- 'li',
696
- 'link',
697
- 'ol',
698
- 'p',
699
- 'path',
700
- 'picture',
701
- 'script',
702
- 'section',
703
- 'source',
704
- 'span',
705
- 'sub',
706
- 'sup',
707
- 'svg',
708
- 'table',
709
- 'tbody',
710
- 'td',
711
- 'tfoot',
712
- 'th',
713
- 'thead',
714
- 'tr',
715
- 'ul',
716
- 'video',
717
- 'code',
718
- 'pre',
719
- 'figure',
720
- 'canvas',
721
- 'details',
722
- 'dl',
723
- 'dt',
724
- 'dd',
725
- 'fieldset',
726
- 'footer',
727
- 'header',
728
- 'legend',
729
- 'main',
730
- 'mark',
731
- 'nav',
732
- 'progress',
733
- 'summary',
734
- 'time',
735
- ];
736
684
  //# sourceMappingURL=safe-mdx.js.map