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.
- package/README.md +14 -14
- package/dist/assets/HtmlToJsxConverter-Ds0bTjpw.js +24 -0
- package/dist/assets/_commonjsHelpers-CqkleIqs.js +1 -0
- package/dist/assets/index-B5fPOjPt.css +1 -0
- package/dist/assets/index-B7ATSoRE.js +9 -0
- package/dist/assets/index-BwZ2FTRd.js +146 -0
- package/dist/assets/index-R1UqLMGJ.js +1 -0
- package/dist/assets/index-c0qeY2gs.js +9 -0
- package/dist/assets/jsx-runtime-BhZZLbvw.js +9 -0
- package/dist/assets/jsx-runtime-NArryeSM.js +1 -0
- package/dist/assets/react-Ca6JzGpx.js +1 -0
- package/dist/assets/react-dom-BYRHYqYl.js +1 -0
- package/dist/html/attributes.d.ts +19 -0
- package/dist/html/attributes.d.ts.map +1 -0
- package/dist/html/attributes.js +289 -0
- package/dist/html/attributes.js.map +1 -0
- package/dist/html/convert-attributes.d.ts +6 -0
- package/dist/html/convert-attributes.d.ts.map +1 -0
- package/dist/html/convert-attributes.js +43 -0
- package/dist/html/convert-attributes.js.map +1 -0
- package/dist/html/domparser-browser.d.ts +4 -0
- package/dist/html/domparser-browser.d.ts.map +1 -0
- package/dist/html/domparser-browser.js +7 -0
- package/dist/html/domparser-browser.js.map +1 -0
- package/dist/html/domparser.d.ts +2 -0
- package/dist/html/domparser.d.ts.map +1 -0
- package/dist/html/domparser.js +5 -0
- package/dist/html/domparser.js.map +1 -0
- package/dist/html/html-to-mdx-ast.d.ts +25 -0
- package/dist/html/html-to-mdx-ast.d.ts.map +1 -0
- package/dist/html/html-to-mdx-ast.js +247 -0
- package/dist/html/html-to-mdx-ast.js.map +1 -0
- package/dist/html/html-to-mdx-ast.test.d.ts +2 -0
- package/dist/html/html-to-mdx-ast.test.d.ts.map +1 -0
- package/dist/html/html-to-mdx-ast.test.js +411 -0
- package/dist/html/html-to-mdx-ast.test.js.map +1 -0
- package/dist/html/remark-mdx-jsx-normalize.d.ts +10 -0
- package/dist/html/remark-mdx-jsx-normalize.d.ts.map +1 -0
- package/dist/html/remark-mdx-jsx-normalize.js +194 -0
- package/dist/html/remark-mdx-jsx-normalize.js.map +1 -0
- package/dist/html/valid-html-elements.d.ts +10 -0
- package/dist/html/valid-html-elements.d.ts.map +1 -0
- package/dist/html/valid-html-elements.js +50 -0
- package/dist/html/valid-html-elements.js.map +1 -0
- package/dist/index.html +19 -0
- package/dist/parse.d.ts +2 -0
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +2 -0
- package/dist/parse.js.map +1 -1
- package/dist/safe-mdx.d.ts +2 -2
- package/dist/safe-mdx.d.ts.map +1 -1
- package/dist/safe-mdx.js +24 -76
- package/dist/safe-mdx.js.map +1 -1
- package/dist/safe-mdx.test.js +161 -8
- package/dist/safe-mdx.test.js.map +1 -1
- package/package.json +28 -6
- package/src/html/README +17 -0
- package/src/html/attributes.ts +297 -0
- package/src/html/convert-attributes.ts +59 -0
- package/src/html/domparser-browser.ts +6 -0
- package/src/html/domparser.ts +5 -0
- package/src/html/html-to-mdx-ast.test.ts +459 -0
- package/src/html/html-to-mdx-ast.ts +327 -0
- package/src/html/remark-mdx-jsx-normalize.ts +209 -0
- package/src/html/valid-html-elements.ts +65 -0
- package/src/parse.ts +3 -0
- package/src/safe-mdx.test.tsx +178 -12
- package/src/safe-mdx.tsx +25 -84
- package/dist/HtmlToJsxConverter.d.ts +0 -10
- package/dist/HtmlToJsxConverter.d.ts.map +0 -1
- package/dist/HtmlToJsxConverter.js +0 -22
- package/dist/HtmlToJsxConverter.js.map +0 -1
- package/dist/plugins.d.ts +0 -12
- package/dist/plugins.d.ts.map +0 -1
- package/dist/plugins.js +0 -68
- package/dist/plugins.js.map +0 -1
- 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"}
|
package/dist/index.html
ADDED
|
@@ -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
|
package/dist/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAe,MAAM,OAAO,CAAA;
|
|
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":"AAAA,OAAO,iBAAiB,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,SAAS,MAAM,YAAY,CAAA;AAClC,OAAO,SAAS,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
|
package/dist/safe-mdx.d.ts
CHANGED
|
@@ -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
|
} & {
|
package/dist/safe-mdx.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-mdx.d.ts","sourceRoot":"","sources":["../src/safe-mdx.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"safe-mdx.d.ts","sourceRoot":"","sources":["../src/safe-mdx.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuB,MAAM,OAAO,CAAA;AAE3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE9E,OAAO,EAAY,SAAS,EAAE,MAAM,OAAO,CAAA;AAI3C,OAAO,EAAqB,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAE7E,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,IAAI,CAAA;AAE9C,OAAO,QAAQ,OAAO,CAAC;IACnB,UAAiB,WAAW;QACxB,EAAE,CAAC,EAAE,MAAM,CAAA;KACd;IACD,UAAiB,IAAI;QACjB,WAAW,CAAC,EAAE,WAAW,CAAA;KAC5B;CACJ;AAED,MAAM,MAAM,UAAU,GAAG,CACrB,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,KAC5C,SAAS,GAAG,SAAS,CAAA;AAE1B,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;AAEnE,MAAM,MAAM,qBAAqB,GAAG,CAChC,IAAI,EAAE,GAAG,EACT,KAAK,CAAC,EAAE,GAAG,EACX,GAAG,QAAQ,EAAE,SAAS,EAAE,KACvB,SAAS,CAAA;AAEd,eAAO,MAAM,eAAe;iBAUX,aAAa;eACf,MAAM;WACV,aAAa;iBACP,UAAU;2BACA,oBAAoB;oBAC3B,qBAAqB;4BACb,OAAO;6BACN,OAAO;EAclC,CAAA;AAEF,qBAAa,UAAU;IACnB,KAAK,EAAE,aAAa,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAK;IACnB,CAAC,EAAE,aAAa,CAAA;IAChB,MAAM,EAAE,YAAY,EAAE,CAAK;IAC3B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C,aAAa,EAAE,qBAAqB,CAAA;IACpC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAY;IAC3C,qBAAqB,EAAE,OAAO,CAAA;IAC9B,sBAAsB,EAAE,OAAO,CAAA;gBAEnB,EACR,QAAQ,EAAE,IAAS,EACnB,KAAK,EACL,UAAgC,EAChC,UAAU,EACV,oBAAoB,EACpB,aAAmC,EACnC,qBAA6B,EAC7B,sBAA8B,GACjC,EAAE;QACC,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,KAAK,EAAE,aAAa,CAAA;QACpB,UAAU,CAAC,EAAE,aAAa,CAAA;QAC1B,UAAU,CAAC,EAAE,CACT,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,KAC5C,SAAS,GAAG,SAAS,CAAA;QAC1B,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;QAC3C,aAAa,CAAC,EAAE,qBAAqB,CAAA;QACrC,qBAAqB,CAAC,EAAE,OAAO,CAAA;QAC/B,sBAAsB,CAAC,EAAE,OAAO,CAAA;KACnC;IAyBD,oBAAoB,CAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACtC,IAAI,EAAE,aAAa,GACpB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAetB,sBAAsB,CAClB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,IAAI,CAAC,EAAE,MAAM,GACd,IAAI;IA4BP,gBAAgB,CAAC,IAAI,EAAE,GAAG;IAiB1B,cAAc,CAAC,IAAI,EAAE,GAAG;IAiBxB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS;IA0E9C,mBAAmB,CACf,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,EACrC,IAAI,CAAC,EAAE,MAAM,GACd,SAAS;IA6GZ,WAAW,CACP,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,EAC3C,OAAO,GAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAoB;IA4JxD,GAAG;IAQH,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS;CAwYxE;AAcD,wBAAgB,QAAQ,CACpB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,KAAK,GAAG,SAiBpC;AAUD,KAAK,aAAa,GAAG;KAAG,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG;CAAE,GAAG;IAChE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB,CAAA"}
|
package/dist/safe-mdx.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import 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
|
-
|
|
7
|
-
|
|
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.
|
|
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
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
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
|