safe-mdx 0.3.2 → 1.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.
package/README.md CHANGED
@@ -39,6 +39,7 @@ npm i safe-mdx
39
39
 
40
40
  ```tsx
41
41
  import { SafeMdxRenderer } from 'safe-mdx'
42
+ import { mdxParse } from 'safe-mdx/parse'
42
43
 
43
44
  const code = `
44
45
  # Hello world
@@ -49,9 +50,11 @@ This is a paragraph
49
50
  `
50
51
 
51
52
  export function Page() {
53
+ const ast = mdxParse(code)
52
54
  return (
53
55
  <SafeMdxRenderer
54
- code={code}
56
+ markdown={code}
57
+ mdast={ast}
55
58
  components={{
56
59
  // You can pass your own components here
57
60
  Heading({ children }) {
@@ -107,7 +110,7 @@ const file = parser.processSync(code)
107
110
  const mdast = file.data.ast as Root
108
111
 
109
112
  export function Page() {
110
- return <SafeMdxRenderer code={code} mdast={mdast} />
113
+ return <SafeMdxRenderer markdown={code} mdast={mdast} />
111
114
  }
112
115
  ```
113
116
 
@@ -143,7 +146,7 @@ export function Page() {
143
146
  const parsedFrontmatter = yaml.load(yamlFrontmatter.value || '')
144
147
 
145
148
  console.log(parsedFrontmatter)
146
- return <SafeMdxRenderer code={code} mdast={mdast} />
149
+ return <SafeMdxRenderer markdown={code} mdast={mdast} />
147
150
  }
148
151
  ```
149
152
 
@@ -151,11 +154,11 @@ export function Page() {
151
154
 
152
155
  It's not pratical to override the code block component using `code` as a component override, because it will also be used for inline code blocks. It also does not have access to meta string and language.
153
156
 
154
- Instead you can use `customTransformer` to return some jsx for a specific mdast node:
157
+ Instead you can use `renderNode` to return some jsx for a specific mdast node:
155
158
 
156
159
  ```tsx
157
160
  <SafeMdxRenderer
158
- customTransformer={(node, transform) => {
161
+ renderNode={(node, transform) => {
159
162
  if (node.type === 'code') {
160
163
  const language = node.lang || ''
161
164
  const meta = parseMetaString(node.meta)
@@ -180,7 +183,7 @@ Instead you can use `customTransformer` to return some jsx for a specific mdast
180
183
  import { MdastToJsx } from 'safe-mdx'
181
184
 
182
185
  export function Page() {
183
- const visitor = new MdastToJsx({ code, mdast, components })
186
+ const visitor = new MdastToJsx({ markdown: code, mdast, components })
184
187
  const jsx = visitor.run()
185
188
 
186
189
  if (visitor.errors.length) {
@@ -191,28 +194,6 @@ export function Page() {
191
194
  }
192
195
  ```
193
196
 
194
- ## Rendering streaming MDX from an LLM
195
-
196
- Use `completeJsxTags` to make streaming invalid MDX render, this function will add missing closing tags
197
-
198
- ```tsx
199
- import { SafeMdxRenderer } from 'safe-mdx'
200
-
201
- export function Page() {
202
- const { messages } = useChat()
203
- return (
204
- <>
205
- {messages.map((message, i) => (
206
- <SafeMdxRenderer
207
- key={i}
208
- code={completeJsxTags(message.content)}
209
- />
210
- ))}
211
- </>
212
- )
213
- }
214
- ```
215
-
216
197
  ## Security
217
198
 
218
199
  safe-mdx is designed to avoid server-side evaluation of untrusted MDX input.
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import type { MdastToJsx, MyRootContent } from './safe-mdx.js';
3
+ interface HtmlToJsxConverterProps {
4
+ htmlText: string;
5
+ instance: MdastToJsx;
6
+ node: MyRootContent;
7
+ }
8
+ export declare function HtmlToJsxConverter({ htmlText, instance, node, }: HtmlToJsxConverterProps): string | number | bigint | true | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode>>;
9
+ export {};
10
+ //# sourceMappingURL=HtmlToJsxConverter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlToJsxConverter.d.ts","sourceRoot":"","sources":["../src/HtmlToJsxConverter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAI9D,UAAU,uBAAuB;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,UAAU,CAAA;IACpB,IAAI,EAAE,aAAa,CAAA;CACtB;AAED,wBAAgB,kBAAkB,CAAC,EAC/B,QAAQ,EACR,QAAQ,EACR,IAAI,GACP,EAAE,uBAAuB,+SAoBzB"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { htmlToJsx } from 'html-to-jsx-transform';
3
+ React;
4
+ export function HtmlToJsxConverter({ htmlText, instance, node, }) {
5
+ try {
6
+ const jsx = htmlToJsx(htmlText);
7
+ const originalJsxStr = instance.jsxStr;
8
+ instance.jsxStr = jsx;
9
+ const result = instance.jsxTransformer(node);
10
+ instance.jsxStr = originalJsxStr;
11
+ if (Array.isArray(result)) {
12
+ console.log(`Unexpected array result`);
13
+ return null;
14
+ }
15
+ return result || null;
16
+ }
17
+ catch (error) {
18
+ console.error('Error converting HTML to JSX:', error);
19
+ return null;
20
+ }
21
+ }
22
+ //# sourceMappingURL=HtmlToJsxConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlToJsxConverter.js","sourceRoot":"","sources":["../src/HtmlToJsxConverter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAGjD,KAAK,CAAA;AAQL,MAAM,UAAU,kBAAkB,CAAC,EAC/B,QAAQ,EACR,QAAQ,EACR,IAAI,GACkB;IACtB,IAAI;QACA,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;QAC/B,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAA;QACtC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAA;QAErB,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAE5C,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAA;QAEhC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;YACtC,OAAO,IAAI,CAAA;SACd;QAED,OAAO,MAAM,IAAI,IAAI,CAAA;KACxB;IAAC,OAAO,KAAK,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAA;QACrD,OAAO,IAAI,CAAA;KACd;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Root } from 'mdast';
2
+ export declare function mdxParse(code: string): Root;
3
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +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"}
package/dist/parse.js ADDED
@@ -0,0 +1,86 @@
1
+ import remarkFrontmatter from 'remark-frontmatter';
2
+ import { collapseWhiteSpace } from 'collapse-white-space';
3
+ import { visit } from 'unist-util-visit';
4
+ import { remark } from 'remark';
5
+ import remarkGfm from 'remark-gfm';
6
+ import remarkMdx from 'remark-mdx';
7
+ export function mdxParse(code) {
8
+ const file = mdxProcessor.processSync(code);
9
+ return file.data.ast;
10
+ }
11
+ /**
12
+ * https://github.com/mdx-js/mdx/blob/b3351fadcb6f78833a72757b7135dcfb8ab646fe/packages/mdx/lib/plugin/remark-mark-and-unravel.js
13
+ * A tiny plugin that unravels `<p><h1>x</h1></p>` but also
14
+ * `<p><Component /></p>` (so it has no knowledge of "HTML").
15
+ *
16
+ * It also marks JSX as being explicitly JSX, so when a user passes a `h1`
17
+ * component, it is used for `# heading` but not for `<h1>heading</h1>`.
18
+ *
19
+ */
20
+ function remarkMarkAndUnravel() {
21
+ return function (tree) {
22
+ visit(tree, function (node, index, parent) {
23
+ let offset = -1;
24
+ let all = true;
25
+ let oneOrMore = false;
26
+ if (parent &&
27
+ typeof index === 'number' &&
28
+ node.type === 'paragraph') {
29
+ const children = node.children;
30
+ while (++offset < children.length) {
31
+ const child = children[offset];
32
+ if (child.type === 'mdxJsxTextElement' ||
33
+ child.type === 'mdxTextExpression') {
34
+ oneOrMore = true;
35
+ }
36
+ else if (child.type === 'text' &&
37
+ collapseWhiteSpace(child.value, {
38
+ style: 'html',
39
+ trim: true,
40
+ }) === '') {
41
+ // Empty.
42
+ }
43
+ else {
44
+ all = false;
45
+ break;
46
+ }
47
+ }
48
+ if (all && oneOrMore) {
49
+ offset = -1;
50
+ const newChildren = [];
51
+ while (++offset < children.length) {
52
+ const child = children[offset];
53
+ if (child.type === 'mdxJsxTextElement') {
54
+ // @ts-expect-error: mutate because it is faster; content model is fine.
55
+ child.type = 'mdxJsxFlowElement';
56
+ }
57
+ if (child.type === 'mdxTextExpression') {
58
+ // @ts-expect-error: mutate because it is faster; content model is fine.
59
+ child.type = 'mdxFlowExpression';
60
+ }
61
+ if (child.type === 'text' &&
62
+ /^[\t\r\n ]+$/.test(String(child.value))) {
63
+ // Empty.
64
+ }
65
+ else {
66
+ newChildren.push(child);
67
+ }
68
+ }
69
+ parent.children.splice(index, 1, ...newChildren);
70
+ return index;
71
+ }
72
+ }
73
+ });
74
+ };
75
+ }
76
+ const mdxProcessor = remark()
77
+ .use(remarkMdx)
78
+ .use(remarkFrontmatter, ['yaml', 'toml'])
79
+ .use(remarkGfm)
80
+ .use(remarkMarkAndUnravel)
81
+ .use(() => {
82
+ return (tree, file) => {
83
+ file.data.ast = tree;
84
+ };
85
+ });
86
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,8 @@
1
1
  import React from 'react';
2
- import { Root, RootContent, Node, Parent } from 'mdast';
3
- import { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx-jsx';
2
+ import type { Node, Parent, Root, RootContent } from 'mdast';
3
+ import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx-jsx';
4
4
  import { ReactNode } from 'react';
5
- import { completeJsxTags } from './streaming.js';
6
- type MyRootContent = RootContent | Root;
7
- export declare function mdxParse(code: string): Root;
5
+ export type MyRootContent = RootContent | Root;
8
6
  declare module 'mdast' {
9
7
  interface HProperties {
10
8
  id?: string;
@@ -16,9 +14,9 @@ declare module 'mdast' {
16
14
  export type CustomTransformer = (node: MyRootContent, transform: (node: MyRootContent) => ReactNode) => ReactNode | undefined;
17
15
  export declare const SafeMdxRenderer: React.NamedExoticComponent<{
18
16
  components?: ComponentsMap;
19
- code?: string;
20
- mdast?: MyRootContent;
21
- customTransformer?: CustomTransformer;
17
+ markdown?: string;
18
+ mdast: MyRootContent;
19
+ renderNode?: CustomTransformer;
22
20
  }>;
23
21
  export declare class MdastToJsx {
24
22
  mdast: MyRootContent;
@@ -28,12 +26,12 @@ export declare class MdastToJsx {
28
26
  errors: {
29
27
  message: string;
30
28
  }[];
31
- customTransformer?: CustomTransformer;
32
- constructor({ code, mdast, components, customTransformer, }: {
33
- code?: string;
34
- mdast?: MyRootContent;
29
+ renderNode?: CustomTransformer;
30
+ constructor({ markdown: code, mdast, components, renderNode, }: {
31
+ markdown?: string;
32
+ mdast: MyRootContent;
35
33
  components?: ComponentsMap;
36
- customTransformer?: (node: MyRootContent, transform: (node: MyRootContent) => ReactNode) => ReactNode | undefined;
34
+ renderNode?: (node: MyRootContent, transform: (node: MyRootContent) => ReactNode) => ReactNode | undefined;
37
35
  });
38
36
  mapMdastChildren(node: any): any;
39
37
  mapJsxChildren(node: any): any;
@@ -51,15 +49,5 @@ type ComponentsMap = {
51
49
  } & {
52
50
  [key: string]: any;
53
51
  };
54
- /**
55
- * https://github.com/mdx-js/mdx/blob/b3351fadcb6f78833a72757b7135dcfb8ab646fe/packages/mdx/lib/plugin/remark-mark-and-unravel.js
56
- * A tiny plugin that unravels `<p><h1>x</h1></p>` but also
57
- * `<p><Component /></p>` (so it has no knowledge of "HTML").
58
- *
59
- * It also marks JSX as being explicitly JSX, so when a user passes a `h1`
60
- * component, it is used for `# heading` but not for `<h1>heading</h1>`.
61
- *
62
- */
63
- export declare function remarkMarkAndUnravel(): (tree: Root) => void;
64
- export { completeJsxTags };
52
+ export {};
65
53
  //# sourceMappingURL=safe-mdx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"safe-mdx.d.ts","sourceRoot":"","sources":["../src/safe-mdx.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuB,MAAM,OAAO,CAAA;AAQ3C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAKzE,OAAO,EAAY,SAAS,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,KAAK,aAAa,GAAG,WAAW,GAAG,IAAI,CAAA;AAEvC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,QAGpC;AAED,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,iBAAiB,GAAG,CAC5B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,KAC5C,SAAS,GAAG,SAAS,CAAA;AAE1B,eAAO,MAAM,eAAe;iBAMX,aAAa;WACnB,MAAM;YACL,aAAa;wBACD,iBAAiB;EAUvC,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;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAK;IAClC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;gBAEzB,EACR,IAAS,EACT,KAAwB,EACxB,UAAgC,EAChC,iBAAiB,GACpB,EAAE;QACC,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,aAAa,CAAA;QACrB,UAAU,CAAC,EAAE,aAAa,CAAA;QAC1B,iBAAiB,CAAC,EAAE,CAChB,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,KAC5C,SAAS,GAAG,SAAS,CAAA;KAC7B;IAcD,gBAAgB,CAAC,IAAI,EAAE,GAAG;IAiB1B,cAAc,CAAC,IAAI,EAAE,GAAG;IAiBxB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS;IAsC9C,GAAG;IAQH,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS;CA+TnD;AAED,wBAAgB,WAAW,CACvB,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,EAC3C,OAAO,GAAE,CAAC,GAAG,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAAK,IAAoB,mBAmE9D;AAcD,wBAAgB,QAAQ,CACpB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,KAAK,GAAG,SAiBpC;AAUD,QAAA,MAAM,UAAU,+eA6DN,CAAA;AA2RV,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;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,WACT,IAAI,UAqE9B;AAaD,OAAO,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"safe-mdx.d.ts","sourceRoot":"","sources":["../src/safe-mdx.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAE1D,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;AAS3C,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,iBAAiB,GAAG,CAC5B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,KAC5C,SAAS,GAAG,SAAS,CAAA;AAE1B,eAAO,MAAM,eAAe;iBAMX,aAAa;eACf,MAAM;WACV,aAAa;iBACP,iBAAiB;EAUhC,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;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAK;IAClC,UAAU,CAAC,EAAE,iBAAiB,CAAA;gBAElB,EACR,QAAQ,EAAE,IAAS,EACnB,KAAwB,EACxB,UAAgC,EAChC,UAAU,GACb,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;KAC7B;IAgBD,gBAAgB,CAAC,IAAI,EAAE,GAAG;IAiB1B,cAAc,CAAC,IAAI,EAAE,GAAG;IAiBxB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS;IAsC9C,GAAG;IAQH,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS;CA0TnD;AAED,wBAAgB,WAAW,CACvB,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,EAC3C,OAAO,GAAE,CAAC,GAAG,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAAK,IAAoB,mBAmE9D;AAcD,wBAAgB,QAAQ,CACpB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,KAAK,GAAG,SAiBpC;AAUD,QAAA,MAAM,UAAU,+eA6DN,CAAA;AA2RV,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,23 +1,15 @@
1
- import React, { cloneElement } from 'react';
2
- import { htmlToJsx } from 'html-to-jsx-transform';
3
- import remarkFrontmatter from 'remark-frontmatter';
4
- import { collapseWhiteSpace } from 'collapse-white-space';
5
- import { visit } from 'unist-util-visit';
6
- import { remark } from 'remark';
7
- import remarkGfm from 'remark-gfm';
8
- import remarkMdx from 'remark-mdx';
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { cloneElement, Suspense } from 'react';
9
3
  import { Fragment } from 'react';
10
- import { completeJsxTags } from './streaming.js';
11
- export function mdxParse(code) {
12
- const file = mdxProcessor.processSync(code);
13
- return file.data.ast;
14
- }
15
- export const SafeMdxRenderer = React.memo(function SafeMdxRenderer({ components, code = '', mdast = null, customTransformer, }) {
4
+ const HtmlToJsxConverter = React.lazy(() => import('./HtmlToJsxConverter.js').then((module) => ({
5
+ default: module.HtmlToJsxConverter,
6
+ })));
7
+ export const SafeMdxRenderer = React.memo(function SafeMdxRenderer({ components, markdown = '', mdast = null, renderNode, }) {
16
8
  const visitor = new MdastToJsx({
17
- code,
9
+ markdown,
18
10
  mdast,
19
11
  components,
20
- customTransformer,
12
+ renderNode,
21
13
  });
22
14
  const result = visitor.run();
23
15
  return result;
@@ -28,11 +20,11 @@ export class MdastToJsx {
28
20
  jsxStr = '';
29
21
  c;
30
22
  errors = [];
31
- customTransformer;
32
- constructor({ code = '', mdast = undefined, components = {}, customTransformer, }) {
23
+ renderNode;
24
+ constructor({ markdown: code = '', mdast = undefined, components = {}, renderNode, }) {
33
25
  this.str = code;
34
- this.mdast = mdast || mdxParse(code);
35
- this.customTransformer = customTransformer;
26
+ this.mdast = mdast;
27
+ this.renderNode = renderNode;
36
28
  this.c = {
37
29
  ...Object.fromEntries(nativeTags.map((tag) => {
38
30
  return [tag, tag];
@@ -95,7 +87,7 @@ export class MdastToJsx {
95
87
  this.errors.push(err);
96
88
  });
97
89
  let attrs = Object.fromEntries(attrsList);
98
- return (React.createElement(Component, { ...attrs }, this.mapJsxChildren(node)));
90
+ return (_jsx(Component, { ...attrs, children: this.mapJsxChildren(node) }));
99
91
  }
100
92
  default: {
101
93
  return this.mdastTransformer(node);
@@ -114,8 +106,8 @@ export class MdastToJsx {
114
106
  return [];
115
107
  }
116
108
  // Check for custom transformer first, giving it higher priority
117
- if (this.customTransformer) {
118
- const customResult = this.customTransformer(node, this.mdastTransformer.bind(this));
109
+ if (this.renderNode) {
110
+ const customResult = this.renderNode(node, this.mdastTransformer.bind(this));
119
111
  if (customResult !== undefined) {
120
112
  return customResult;
121
113
  }
@@ -163,16 +155,16 @@ export class MdastToJsx {
163
155
  case 'heading': {
164
156
  const level = node.depth;
165
157
  const Tag = this.c[`h${level}`] ?? `h${level}`;
166
- return (React.createElement(Tag, { ...node.data?.hProperties }, this.mapMdastChildren(node)));
158
+ return (_jsx(Tag, { ...node.data?.hProperties, children: this.mapMdastChildren(node) }));
167
159
  }
168
160
  case 'paragraph': {
169
- return (React.createElement(this.c.p, { ...node.data?.hProperties }, this.mapMdastChildren(node)));
161
+ return (_jsx(this.c.p, { ...node.data?.hProperties, children: this.mapMdastChildren(node) }));
170
162
  }
171
163
  case 'blockquote': {
172
- return (React.createElement(this.c.blockquote, { ...node.data?.hProperties }, this.mapMdastChildren(node)));
164
+ return (_jsx(this.c.blockquote, { ...node.data?.hProperties, children: this.mapMdastChildren(node) }));
173
165
  }
174
166
  case 'thematicBreak': {
175
- return React.createElement(this.c.hr, { ...node.data?.hProperties });
167
+ return _jsx(this.c.hr, { ...node.data?.hProperties });
176
168
  }
177
169
  case 'code': {
178
170
  if (!node.value) {
@@ -180,8 +172,7 @@ export class MdastToJsx {
180
172
  }
181
173
  const language = node.lang || '';
182
174
  const code = node.value;
183
- const codeBlock = (className) => (React.createElement(this.c.pre, { ...node.data?.hProperties },
184
- React.createElement(this.c.code, { className: className }, code)));
175
+ const codeBlock = (className) => (_jsx(this.c.pre, { ...node.data?.hProperties, children: _jsx(this.c.code, { className: className, children: code }) }));
185
176
  if (language) {
186
177
  if (supportedLanguagesSet.has(language)) {
187
178
  return codeBlock(`language-${language}`);
@@ -197,23 +188,23 @@ export class MdastToJsx {
197
188
  }
198
189
  case 'list': {
199
190
  if (node.ordered) {
200
- return (React.createElement(this.c.ol, { start: node.start, ...node.data?.hProperties }, this.mapMdastChildren(node)));
191
+ return (_jsx(this.c.ol, { start: node.start, ...node.data?.hProperties, children: this.mapMdastChildren(node) }));
201
192
  }
202
- return (React.createElement(this.c.ul, { ...node.data?.hProperties }, this.mapMdastChildren(node)));
193
+ return (_jsx(this.c.ul, { ...node.data?.hProperties, children: this.mapMdastChildren(node) }));
203
194
  }
204
195
  case 'listItem': {
205
196
  // https://github.com/syntax-tree/mdast-util-gfm-task-list-item#syntax-tree
206
197
  if (node?.checked != null) {
207
- return (React.createElement(this.c.li, { "data-checked": node.checked, ...node.data?.hProperties }, this.mapMdastChildren(node)));
198
+ return (_jsx(this.c.li, { "data-checked": node.checked, ...node.data?.hProperties, children: this.mapMdastChildren(node) }));
208
199
  }
209
- return (React.createElement(this.c.li, { ...node.data?.hProperties }, this.mapMdastChildren(node)));
200
+ return (_jsx(this.c.li, { ...node.data?.hProperties, children: this.mapMdastChildren(node) }));
210
201
  }
211
202
  case 'text': {
212
203
  if (!node.value) {
213
204
  return [];
214
205
  }
215
206
  if (node.data?.hProperties) {
216
- return (React.createElement(this.c.span, { ...node.data.hProperties }, node.value));
207
+ return (_jsx(this.c.span, { ...node.data.hProperties, children: node.value }));
217
208
  }
218
209
  return node.value;
219
210
  }
@@ -221,49 +212,47 @@ export class MdastToJsx {
221
212
  const src = node.url || '';
222
213
  const alt = node.alt || '';
223
214
  const title = node.title || '';
224
- return (React.createElement(this.c.img, { src: src, alt: alt, title: title, ...node.data?.hProperties }));
215
+ return (_jsx(this.c.img, { src: src, alt: alt, title: title, ...node.data?.hProperties }));
225
216
  }
226
217
  case 'link': {
227
218
  const href = node.url || '';
228
219
  const title = node.title || '';
229
- return (React.createElement(this.c.a, { href, title, ...node.data?.hProperties }, this.mapMdastChildren(node)));
220
+ return (_jsx(this.c.a, { href, title, ...node.data?.hProperties, children: this.mapMdastChildren(node) }));
230
221
  }
231
222
  case 'strong': {
232
- return (React.createElement(this.c.strong, { ...node.data?.hProperties }, this.mapMdastChildren(node)));
223
+ return (_jsx(this.c.strong, { ...node.data?.hProperties, children: this.mapMdastChildren(node) }));
233
224
  }
234
225
  case 'emphasis': {
235
- return (React.createElement(this.c.em, { ...node.data?.hProperties }, this.mapMdastChildren(node)));
226
+ return (_jsx(this.c.em, { ...node.data?.hProperties, children: this.mapMdastChildren(node) }));
236
227
  }
237
228
  case 'delete': {
238
- return (React.createElement(this.c.del, { ...node.data?.hProperties }, this.mapMdastChildren(node)));
229
+ return (_jsx(this.c.del, { ...node.data?.hProperties, children: this.mapMdastChildren(node) }));
239
230
  }
240
231
  case 'inlineCode': {
241
232
  if (!node.value) {
242
233
  return [];
243
234
  }
244
- return (React.createElement(this.c.code, { ...node.data?.hProperties }, node.value));
235
+ return (_jsx(this.c.code, { ...node.data?.hProperties, children: node.value }));
245
236
  }
246
237
  case 'break': {
247
- return React.createElement(this.c.br, { ...node.data?.hProperties });
238
+ return _jsx(this.c.br, { ...node.data?.hProperties });
248
239
  }
249
240
  case 'root': {
250
241
  if (node.data?.hProperties) {
251
- return (React.createElement(this.c.div, { ...node.data.hProperties }, this.mapMdastChildren(node)));
242
+ return (_jsx(this.c.div, { ...node.data.hProperties, children: this.mapMdastChildren(node) }));
252
243
  }
253
- return React.createElement(Fragment, null, this.mapMdastChildren(node));
244
+ return _jsx(Fragment, { children: this.mapMdastChildren(node) });
254
245
  }
255
246
  case 'table': {
256
247
  const [head, ...body] = React.Children.toArray(this.mapMdastChildren(node));
257
- return (React.createElement(this.c.table, { ...node.data?.hProperties },
258
- head && React.createElement(this.c.thead, null, head),
259
- !!body?.length && React.createElement(this.c.tbody, null, body)));
248
+ return (_jsxs(this.c.table, { ...node.data?.hProperties, children: [head && _jsx(this.c.thead, { children: head }), !!body?.length && _jsx(this.c.tbody, { children: body })] }));
260
249
  }
261
250
  case 'tableRow': {
262
- return (React.createElement(this.c.tr, { className: '', ...node.data?.hProperties }, this.mapMdastChildren(node)));
251
+ return (_jsx(this.c.tr, { className: '', ...node.data?.hProperties, children: this.mapMdastChildren(node) }));
263
252
  }
264
253
  case 'tableCell': {
265
254
  let content = this.mapMdastChildren(node);
266
- return (React.createElement(this.c.td, { className: '', ...node.data?.hProperties }, content));
255
+ return (_jsx(this.c.td, { className: '', ...node.data?.hProperties, children: content }));
267
256
  }
268
257
  case 'definition': {
269
258
  return [];
@@ -276,7 +265,7 @@ export class MdastToJsx {
276
265
  href = child.url;
277
266
  }
278
267
  });
279
- return (React.createElement(this.c.a, { href: href, ...node.data?.hProperties }, this.mapMdastChildren(node)));
268
+ return (_jsx(this.c.a, { href: href, ...node.data?.hProperties, children: this.mapMdastChildren(node) }));
280
269
  }
281
270
  case 'footnoteReference': {
282
271
  return [];
@@ -291,21 +280,7 @@ export class MdastToJsx {
291
280
  if (!text) {
292
281
  return [];
293
282
  }
294
- const jsx = htmlToJsx(text);
295
- try {
296
- this.jsxStr = jsx;
297
- const result = this.jsxTransformer(node);
298
- if (Array.isArray(result)) {
299
- console.log(`Unexpected array result`);
300
- }
301
- else if (result) {
302
- return result;
303
- }
304
- }
305
- finally {
306
- this.jsxStr = '';
307
- }
308
- return [];
283
+ return (_jsx(Suspense, { fallback: null, children: _jsx(HtmlToJsxConverter, { htmlText: text, instance: this, node: node }) }));
309
284
  }
310
285
  case 'imageReference': {
311
286
  return [];
@@ -760,80 +735,4 @@ const supportedLanguages = [
760
735
  'zig',
761
736
  ];
762
737
  const supportedLanguagesSet = new Set(supportedLanguages);
763
- /**
764
- * https://github.com/mdx-js/mdx/blob/b3351fadcb6f78833a72757b7135dcfb8ab646fe/packages/mdx/lib/plugin/remark-mark-and-unravel.js
765
- * A tiny plugin that unravels `<p><h1>x</h1></p>` but also
766
- * `<p><Component /></p>` (so it has no knowledge of "HTML").
767
- *
768
- * It also marks JSX as being explicitly JSX, so when a user passes a `h1`
769
- * component, it is used for `# heading` but not for `<h1>heading</h1>`.
770
- *
771
- */
772
- export function remarkMarkAndUnravel() {
773
- return function (tree) {
774
- visit(tree, function (node, index, parent) {
775
- let offset = -1;
776
- let all = true;
777
- let oneOrMore = false;
778
- if (parent &&
779
- typeof index === 'number' &&
780
- node.type === 'paragraph') {
781
- const children = node.children;
782
- while (++offset < children.length) {
783
- const child = children[offset];
784
- if (child.type === 'mdxJsxTextElement' ||
785
- child.type === 'mdxTextExpression') {
786
- oneOrMore = true;
787
- }
788
- else if (child.type === 'text' &&
789
- collapseWhiteSpace(child.value, {
790
- style: 'html',
791
- trim: true,
792
- }) === '') {
793
- // Empty.
794
- }
795
- else {
796
- all = false;
797
- break;
798
- }
799
- }
800
- if (all && oneOrMore) {
801
- offset = -1;
802
- const newChildren = [];
803
- while (++offset < children.length) {
804
- const child = children[offset];
805
- if (child.type === 'mdxJsxTextElement') {
806
- // @ts-expect-error: mutate because it is faster; content model is fine.
807
- child.type = 'mdxJsxFlowElement';
808
- }
809
- if (child.type === 'mdxTextExpression') {
810
- // @ts-expect-error: mutate because it is faster; content model is fine.
811
- child.type = 'mdxFlowExpression';
812
- }
813
- if (child.type === 'text' &&
814
- /^[\t\r\n ]+$/.test(String(child.value))) {
815
- // Empty.
816
- }
817
- else {
818
- newChildren.push(child);
819
- }
820
- }
821
- parent.children.splice(index, 1, ...newChildren);
822
- return index;
823
- }
824
- }
825
- });
826
- };
827
- }
828
- const mdxProcessor = remark()
829
- .use(remarkMdx)
830
- .use(remarkFrontmatter, ['yaml', 'toml'])
831
- .use(remarkGfm)
832
- .use(remarkMarkAndUnravel)
833
- .use(() => {
834
- return (tree, file) => {
835
- file.data.ast = tree;
836
- };
837
- });
838
- export { completeJsxTags };
839
738
  //# sourceMappingURL=safe-mdx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"safe-mdx.js","sourceRoot":"","sources":["../src/safe-mdx.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safe-mdx.js","sourceRoot":"","sources":["../src/safe-mdx.tsx"],"names":[],"mappings":"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"}
@@ -1,26 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import dedent from 'dedent';
2
- import React from 'react';
3
+ import { htmlToJsx } from 'html-to-jsx-transform';
3
4
  import { renderToStaticMarkup } from 'react-dom/server';
4
5
  import { expect, test } from 'vitest';
5
- import { mdastBfs, MdastToJsx, mdxParse } from './safe-mdx.js';
6
- void React;
6
+ import { mdxParse } from './parse.js';
7
+ import { MdastToJsx, mdastBfs } from './safe-mdx.js';
8
+ import { completeJsxTags } from './streaming.js';
7
9
  const components = {
8
10
  Heading({ level, children }) {
9
- return React.createElement("h1", null, children);
11
+ return _jsx("h1", { children: children });
10
12
  },
11
13
  Cards({ level, children }) {
12
- return React.createElement("div", null, children);
14
+ return _jsx("div", { children: children });
13
15
  },
14
16
  };
15
17
  function render(code) {
16
- const visitor = new MdastToJsx({ code, components });
18
+ const mdast = mdxParse(code);
19
+ const visitor = new MdastToJsx({ markdown: code, mdast, components });
17
20
  const result = visitor.run();
18
21
  const html = renderToStaticMarkup(result);
19
22
  // console.log(JSON.stringify(result, null, 2))
20
23
  return { result, errors: visitor.errors || [], html };
21
24
  }
22
- import { htmlToJsx } from 'html-to-jsx-transform';
23
- import { completeJsxTags } from './streaming.js';
24
25
  test('htmlToJsx', () => {
25
26
  expect(htmlToJsx('<p x="y">')).toMatchInlineSnapshot(`"<p x="y" />"`);
26
27
  expect(htmlToJsx('<p>text</p>')).toMatchInlineSnapshot(`"<p>text</p>"`);
@@ -1 +1 @@
1
- {"version":3,"file":"safe-mdx.test.js","sourceRoot":"","sources":["../src/safe-mdx.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safe-mdx.test.js","sourceRoot":"","sources":["../src/safe-mdx.test.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "safe-mdx",
3
- "version": "0.3.2",
3
+ "version": "1.0.1",
4
4
  "private": false,
5
5
  "description": "Render MDX in React without eval",
6
6
  "repository": "https://github.com/holocron-hq/safe-mdx",
@@ -11,6 +11,10 @@
11
11
  "types": "./dist/safe-mdx.d.ts",
12
12
  "default": "./dist/safe-mdx.js"
13
13
  },
14
+ "./parse": {
15
+ "types": "./dist/parse.d.ts",
16
+ "default": "./dist/parse.js"
17
+ },
14
18
  "./src/*": "./src/*.tsx",
15
19
  "./package.json": "./package.json"
16
20
  },
@@ -0,0 +1,37 @@
1
+ import React from 'react'
2
+ import { htmlToJsx } from 'html-to-jsx-transform'
3
+ import type { MdastToJsx, MyRootContent } from './safe-mdx.js'
4
+
5
+ React
6
+
7
+ interface HtmlToJsxConverterProps {
8
+ htmlText: string
9
+ instance: MdastToJsx
10
+ node: MyRootContent
11
+ }
12
+
13
+ export function HtmlToJsxConverter({
14
+ htmlText,
15
+ instance,
16
+ node,
17
+ }: HtmlToJsxConverterProps) {
18
+ try {
19
+ const jsx = htmlToJsx(htmlText)
20
+ const originalJsxStr = instance.jsxStr
21
+ instance.jsxStr = jsx
22
+
23
+ const result = instance.jsxTransformer(node)
24
+
25
+ instance.jsxStr = originalJsxStr
26
+
27
+ if (Array.isArray(result)) {
28
+ console.log(`Unexpected array result`)
29
+ return null
30
+ }
31
+
32
+ return result || null
33
+ } catch (error) {
34
+ console.error('Error converting HTML to JSX:', error)
35
+ return null
36
+ }
37
+ }
package/src/parse.ts ADDED
@@ -0,0 +1,104 @@
1
+ import remarkFrontmatter from 'remark-frontmatter'
2
+ import { collapseWhiteSpace } from 'collapse-white-space'
3
+ import { visit } from 'unist-util-visit'
4
+ import { Root, RootContent } from 'mdast'
5
+ import { remark } from 'remark'
6
+ import remarkGfm from 'remark-gfm'
7
+ import remarkMdx from 'remark-mdx'
8
+
9
+ export function mdxParse(code: string) {
10
+ const file = mdxProcessor.processSync(code)
11
+ return file.data.ast as Root
12
+ }
13
+
14
+ /**
15
+ * https://github.com/mdx-js/mdx/blob/b3351fadcb6f78833a72757b7135dcfb8ab646fe/packages/mdx/lib/plugin/remark-mark-and-unravel.js
16
+ * A tiny plugin that unravels `<p><h1>x</h1></p>` but also
17
+ * `<p><Component /></p>` (so it has no knowledge of "HTML").
18
+ *
19
+ * It also marks JSX as being explicitly JSX, so when a user passes a `h1`
20
+ * component, it is used for `# heading` but not for `<h1>heading</h1>`.
21
+ *
22
+ */
23
+ function remarkMarkAndUnravel() {
24
+ return function (tree: Root) {
25
+ visit(tree, function (node, index, parent) {
26
+ let offset = -1
27
+ let all = true
28
+ let oneOrMore = false
29
+
30
+ if (
31
+ parent &&
32
+ typeof index === 'number' &&
33
+ node.type === 'paragraph'
34
+ ) {
35
+ const children = node.children
36
+
37
+ while (++offset < children.length) {
38
+ const child = children[offset]
39
+
40
+ if (
41
+ child.type === 'mdxJsxTextElement' ||
42
+ child.type === 'mdxTextExpression'
43
+ ) {
44
+ oneOrMore = true
45
+ } else if (
46
+ child.type === 'text' &&
47
+ collapseWhiteSpace(child.value, {
48
+ style: 'html',
49
+ trim: true,
50
+ }) === ''
51
+ ) {
52
+ // Empty.
53
+ } else {
54
+ all = false
55
+ break
56
+ }
57
+ }
58
+
59
+ if (all && oneOrMore) {
60
+ offset = -1
61
+
62
+ const newChildren: RootContent[] = []
63
+
64
+ while (++offset < children.length) {
65
+ const child = children[offset]
66
+
67
+ if (child.type === 'mdxJsxTextElement') {
68
+ // @ts-expect-error: mutate because it is faster; content model is fine.
69
+ child.type = 'mdxJsxFlowElement'
70
+ }
71
+
72
+ if (child.type === 'mdxTextExpression') {
73
+ // @ts-expect-error: mutate because it is faster; content model is fine.
74
+ child.type = 'mdxFlowExpression'
75
+ }
76
+
77
+ if (
78
+ child.type === 'text' &&
79
+ /^[\t\r\n ]+$/.test(String(child.value))
80
+ ) {
81
+ // Empty.
82
+ } else {
83
+ newChildren.push(child)
84
+ }
85
+ }
86
+
87
+ parent.children.splice(index, 1, ...newChildren)
88
+ return index
89
+ }
90
+ }
91
+ })
92
+ }
93
+ }
94
+
95
+ const mdxProcessor = remark()
96
+ .use(remarkMdx)
97
+ .use(remarkFrontmatter, ['yaml', 'toml'])
98
+ .use(remarkGfm)
99
+ .use(remarkMarkAndUnravel)
100
+ .use(() => {
101
+ return (tree, file) => {
102
+ file.data.ast = tree
103
+ }
104
+ })
@@ -1,11 +1,11 @@
1
1
  import dedent from 'dedent'
2
+ import { htmlToJsx } from 'html-to-jsx-transform'
2
3
  import React from 'react'
3
4
  import { renderToStaticMarkup } from 'react-dom/server'
4
5
  import { expect, test } from 'vitest'
5
- import { mdastBfs, MdastToJsx, mdxParse } from './safe-mdx.js'
6
- import { remark } from 'remark'
7
- import remarkMdx from 'remark-mdx'
8
- void React
6
+ import { mdxParse } from './parse.js'
7
+ import { MdastToJsx, mdastBfs } from './safe-mdx.js'
8
+ import { completeJsxTags } from './streaming.js'
9
9
 
10
10
  const components = {
11
11
  Heading({ level, children }) {
@@ -17,14 +17,13 @@ const components = {
17
17
  }
18
18
 
19
19
  function render(code) {
20
- const visitor = new MdastToJsx({ code, components })
20
+ const mdast = mdxParse(code)
21
+ const visitor = new MdastToJsx({ markdown: code, mdast, components })
21
22
  const result = visitor.run()
22
23
  const html = renderToStaticMarkup(result)
23
24
  // console.log(JSON.stringify(result, null, 2))
24
25
  return { result, errors: visitor.errors || [], html }
25
26
  }
26
- import { htmlToJsx } from 'html-to-jsx-transform'
27
- import { completeJsxTags } from './streaming.js'
28
27
 
29
28
  test('htmlToJsx', () => {
30
29
  expect(htmlToJsx('<p x="y">')).toMatchInlineSnapshot(`"<p x="y" />"`)
package/src/safe-mdx.tsx CHANGED
@@ -1,26 +1,18 @@
1
- import React, { cloneElement } from 'react'
2
- import { htmlToJsx } from 'html-to-jsx-transform'
1
+ import React, { use, cloneElement, Suspense } from 'react'
3
2
 
4
- import remarkFrontmatter from 'remark-frontmatter'
5
-
6
- import { collapseWhiteSpace } from 'collapse-white-space'
7
- import { visit } from 'unist-util-visit'
8
-
9
- import { Root, RootContent, Node, Parent } from 'mdast'
10
- import { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx-jsx'
11
- import { remark } from 'remark'
12
- import remarkGfm from 'remark-gfm'
13
- import remarkMdx from 'remark-mdx'
3
+ import type { Node, Parent, Root, RootContent } from 'mdast'
4
+ import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx-jsx'
14
5
 
15
6
  import { Fragment, ReactNode } from 'react'
16
7
  import { completeJsxTags } from './streaming.js'
17
8
 
18
- type MyRootContent = RootContent | Root
9
+ const HtmlToJsxConverter = React.lazy(() =>
10
+ import('./HtmlToJsxConverter.js').then((module) => ({
11
+ default: module.HtmlToJsxConverter,
12
+ })),
13
+ )
19
14
 
20
- export function mdxParse(code: string) {
21
- const file = mdxProcessor.processSync(code)
22
- return file.data.ast as Root
23
- }
15
+ export type MyRootContent = RootContent | Root
24
16
 
25
17
  declare module 'mdast' {
26
18
  export interface HProperties {
@@ -38,20 +30,20 @@ export type CustomTransformer = (
38
30
 
39
31
  export const SafeMdxRenderer = React.memo(function SafeMdxRenderer({
40
32
  components,
41
- code = '',
33
+ markdown = '',
42
34
  mdast = null as any,
43
- customTransformer,
35
+ renderNode,
44
36
  }: {
45
37
  components?: ComponentsMap
46
- code?: string
47
- mdast?: MyRootContent
48
- customTransformer?: CustomTransformer
38
+ markdown?: string
39
+ mdast: MyRootContent
40
+ renderNode?: CustomTransformer
49
41
  }) {
50
42
  const visitor = new MdastToJsx({
51
- code,
43
+ markdown,
52
44
  mdast,
53
45
  components,
54
- customTransformer,
46
+ renderNode,
55
47
  })
56
48
  const result = visitor.run()
57
49
  return result
@@ -63,25 +55,27 @@ export class MdastToJsx {
63
55
  jsxStr: string = ''
64
56
  c: ComponentsMap
65
57
  errors: { message: string }[] = []
66
- customTransformer?: CustomTransformer
58
+ renderNode?: CustomTransformer
67
59
 
68
60
  constructor({
69
- code = '',
61
+ markdown: code = '',
70
62
  mdast = undefined as any,
71
63
  components = {} as ComponentsMap,
72
- customTransformer,
64
+ renderNode,
73
65
  }: {
74
- code?: string
75
- mdast?: MyRootContent
66
+ markdown?: string
67
+ mdast: MyRootContent
76
68
  components?: ComponentsMap
77
- customTransformer?: (
69
+ renderNode?: (
78
70
  node: MyRootContent,
79
71
  transform: (node: MyRootContent) => ReactNode,
80
72
  ) => ReactNode | undefined
81
73
  }) {
82
74
  this.str = code
83
- this.mdast = mdast || mdxParse(code)
84
- this.customTransformer = customTransformer
75
+
76
+ this.mdast = mdast
77
+
78
+ this.renderNode = renderNode
85
79
 
86
80
  this.c = {
87
81
  ...Object.fromEntries(
@@ -178,8 +172,8 @@ export class MdastToJsx {
178
172
  }
179
173
 
180
174
  // Check for custom transformer first, giving it higher priority
181
- if (this.customTransformer) {
182
- const customResult = this.customTransformer(
175
+ if (this.renderNode) {
176
+ const customResult = this.renderNode(
183
177
  node,
184
178
  this.mdastTransformer.bind(this),
185
179
  )
@@ -459,20 +453,15 @@ export class MdastToJsx {
459
453
  return []
460
454
  }
461
455
 
462
- const jsx = htmlToJsx(text)
463
- try {
464
- this.jsxStr = jsx
465
- const result = this.jsxTransformer(node)
466
- if (Array.isArray(result)) {
467
- console.log(`Unexpected array result`)
468
- } else if (result) {
469
- return result
470
- }
471
- } finally {
472
- this.jsxStr = ''
473
- }
474
-
475
- return []
456
+ return (
457
+ <Suspense fallback={null}>
458
+ <HtmlToJsxConverter
459
+ htmlText={text}
460
+ instance={this}
461
+ node={node}
462
+ />
463
+ </Suspense>
464
+ )
476
465
  }
477
466
  case 'imageReference': {
478
467
  return []
@@ -952,97 +941,3 @@ const supportedLanguagesSet = new Set(supportedLanguages)
952
941
  type ComponentsMap = { [k in (typeof nativeTags)[number]]?: any } & {
953
942
  [key: string]: any
954
943
  }
955
-
956
- /**
957
- * https://github.com/mdx-js/mdx/blob/b3351fadcb6f78833a72757b7135dcfb8ab646fe/packages/mdx/lib/plugin/remark-mark-and-unravel.js
958
- * A tiny plugin that unravels `<p><h1>x</h1></p>` but also
959
- * `<p><Component /></p>` (so it has no knowledge of "HTML").
960
- *
961
- * It also marks JSX as being explicitly JSX, so when a user passes a `h1`
962
- * component, it is used for `# heading` but not for `<h1>heading</h1>`.
963
- *
964
- */
965
- export function remarkMarkAndUnravel() {
966
- return function (tree: Root) {
967
- visit(tree, function (node, index, parent) {
968
- let offset = -1
969
- let all = true
970
- let oneOrMore = false
971
-
972
- if (
973
- parent &&
974
- typeof index === 'number' &&
975
- node.type === 'paragraph'
976
- ) {
977
- const children = node.children
978
-
979
- while (++offset < children.length) {
980
- const child = children[offset]
981
-
982
- if (
983
- child.type === 'mdxJsxTextElement' ||
984
- child.type === 'mdxTextExpression'
985
- ) {
986
- oneOrMore = true
987
- } else if (
988
- child.type === 'text' &&
989
- collapseWhiteSpace(child.value, {
990
- style: 'html',
991
- trim: true,
992
- }) === ''
993
- ) {
994
- // Empty.
995
- } else {
996
- all = false
997
- break
998
- }
999
- }
1000
-
1001
- if (all && oneOrMore) {
1002
- offset = -1
1003
-
1004
- const newChildren: RootContent[] = []
1005
-
1006
- while (++offset < children.length) {
1007
- const child = children[offset]
1008
-
1009
- if (child.type === 'mdxJsxTextElement') {
1010
- // @ts-expect-error: mutate because it is faster; content model is fine.
1011
- child.type = 'mdxJsxFlowElement'
1012
- }
1013
-
1014
- if (child.type === 'mdxTextExpression') {
1015
- // @ts-expect-error: mutate because it is faster; content model is fine.
1016
- child.type = 'mdxFlowExpression'
1017
- }
1018
-
1019
- if (
1020
- child.type === 'text' &&
1021
- /^[\t\r\n ]+$/.test(String(child.value))
1022
- ) {
1023
- // Empty.
1024
- } else {
1025
- newChildren.push(child)
1026
- }
1027
- }
1028
-
1029
- parent.children.splice(index, 1, ...newChildren)
1030
- return index
1031
- }
1032
- }
1033
- })
1034
- }
1035
- }
1036
-
1037
- const mdxProcessor = remark()
1038
- .use(remarkMdx)
1039
- .use(remarkFrontmatter, ['yaml', 'toml'])
1040
- .use(remarkGfm)
1041
- .use(remarkMarkAndUnravel)
1042
- .use(() => {
1043
- return (tree, file) => {
1044
- file.data.ast = tree
1045
- }
1046
- })
1047
-
1048
- export { completeJsxTags }