safe-mdx 1.3.1 → 1.3.3

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 (81) 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/dynamic-esm-component.d.ts.map +1 -1
  14. package/dist/dynamic-esm-component.js +16 -1
  15. package/dist/dynamic-esm-component.js.map +1 -1
  16. package/dist/html/attributes.d.ts +19 -0
  17. package/dist/html/attributes.d.ts.map +1 -0
  18. package/dist/html/attributes.js +289 -0
  19. package/dist/html/attributes.js.map +1 -0
  20. package/dist/html/convert-attributes.d.ts +6 -0
  21. package/dist/html/convert-attributes.d.ts.map +1 -0
  22. package/dist/html/convert-attributes.js +43 -0
  23. package/dist/html/convert-attributes.js.map +1 -0
  24. package/dist/html/domparser-browser.d.ts +4 -0
  25. package/dist/html/domparser-browser.d.ts.map +1 -0
  26. package/dist/html/domparser-browser.js +7 -0
  27. package/dist/html/domparser-browser.js.map +1 -0
  28. package/dist/html/domparser.d.ts +2 -0
  29. package/dist/html/domparser.d.ts.map +1 -0
  30. package/dist/html/domparser.js +5 -0
  31. package/dist/html/domparser.js.map +1 -0
  32. package/dist/html/html-to-mdx-ast.d.ts +23 -0
  33. package/dist/html/html-to-mdx-ast.d.ts.map +1 -0
  34. package/dist/html/html-to-mdx-ast.js +227 -0
  35. package/dist/html/html-to-mdx-ast.js.map +1 -0
  36. package/dist/html/html-to-mdx-ast.test.d.ts +2 -0
  37. package/dist/html/html-to-mdx-ast.test.d.ts.map +1 -0
  38. package/dist/html/html-to-mdx-ast.test.js +324 -0
  39. package/dist/html/html-to-mdx-ast.test.js.map +1 -0
  40. package/dist/html/remark-mdx-jsx-normalize.d.ts +10 -0
  41. package/dist/html/remark-mdx-jsx-normalize.d.ts.map +1 -0
  42. package/dist/html/remark-mdx-jsx-normalize.js +117 -0
  43. package/dist/html/remark-mdx-jsx-normalize.js.map +1 -0
  44. package/dist/html/valid-html-elements.d.ts +10 -0
  45. package/dist/html/valid-html-elements.d.ts.map +1 -0
  46. package/dist/html/valid-html-elements.js +50 -0
  47. package/dist/html/valid-html-elements.js.map +1 -0
  48. package/dist/index.html +19 -0
  49. package/dist/parse.d.ts +2 -0
  50. package/dist/parse.d.ts.map +1 -1
  51. package/dist/parse.js +2 -0
  52. package/dist/parse.js.map +1 -1
  53. package/dist/safe-mdx.d.ts +2 -2
  54. package/dist/safe-mdx.d.ts.map +1 -1
  55. package/dist/safe-mdx.js +39 -77
  56. package/dist/safe-mdx.js.map +1 -1
  57. package/dist/safe-mdx.test.js +161 -8
  58. package/dist/safe-mdx.test.js.map +1 -1
  59. package/package.json +27 -6
  60. package/src/dynamic-esm-component.tsx +40 -10
  61. package/src/html/README +17 -0
  62. package/src/html/attributes.ts +297 -0
  63. package/src/html/convert-attributes.ts +59 -0
  64. package/src/html/domparser-browser.ts +6 -0
  65. package/src/html/domparser.ts +5 -0
  66. package/src/html/html-to-mdx-ast.test.ts +365 -0
  67. package/src/html/html-to-mdx-ast.ts +304 -0
  68. package/src/html/remark-mdx-jsx-normalize.ts +128 -0
  69. package/src/html/valid-html-elements.ts +65 -0
  70. package/src/parse.ts +3 -0
  71. package/src/safe-mdx.test.tsx +178 -12
  72. package/src/safe-mdx.tsx +61 -93
  73. package/dist/HtmlToJsxConverter.d.ts +0 -10
  74. package/dist/HtmlToJsxConverter.d.ts.map +0 -1
  75. package/dist/HtmlToJsxConverter.js +0 -22
  76. package/dist/HtmlToJsxConverter.js.map +0 -1
  77. package/dist/plugins.d.ts +0 -12
  78. package/dist/plugins.d.ts.map +0 -1
  79. package/dist/plugins.js +0 -68
  80. package/dist/plugins.js.map +0 -1
  81. package/src/HtmlToJsxConverter.tsx +0 -37
package/dist/plugins.d.ts DELETED
@@ -1,12 +0,0 @@
1
- import { Root } from 'mdast';
2
- /**
3
- * https://github.com/mdx-js/mdx/blob/b3351fadcb6f78833a72757b7135dcfb8ab646fe/packages/mdx/lib/plugin/remark-mark-and-unravel.js
4
- * A tiny plugin that unravels `<p><h1>x</h1></p>` but also
5
- * `<p><Component /></p>` (so it has no knowledge of "HTML").
6
- *
7
- * It also marks JSX as being explicitly JSX, so when a user passes a `h1`
8
- * component, it is used for `# heading` but not for `<h1>heading</h1>`.
9
- *
10
- */
11
- export declare function remarkMarkAndUnravel(): (tree: Root) => void;
12
- //# sourceMappingURL=plugins.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAe,MAAM,OAAO,CAAA;AAKzC;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,WACT,IAAI,UAuE9B"}
package/dist/plugins.js DELETED
@@ -1,68 +0,0 @@
1
- import { collapseWhiteSpace } from 'collapse-white-space';
2
- import { visit } from 'unist-util-visit';
3
- /**
4
- * https://github.com/mdx-js/mdx/blob/b3351fadcb6f78833a72757b7135dcfb8ab646fe/packages/mdx/lib/plugin/remark-mark-and-unravel.js
5
- * A tiny plugin that unravels `<p><h1>x</h1></p>` but also
6
- * `<p><Component /></p>` (so it has no knowledge of "HTML").
7
- *
8
- * It also marks JSX as being explicitly JSX, so when a user passes a `h1`
9
- * component, it is used for `# heading` but not for `<h1>heading</h1>`.
10
- *
11
- */
12
- export function remarkMarkAndUnravel() {
13
- return function (tree) {
14
- visit(tree, function (node, index, parent) {
15
- let offset = -1;
16
- let all = true;
17
- let oneOrMore = false;
18
- if (parent &&
19
- typeof index === 'number' &&
20
- node.type === 'paragraph') {
21
- const children = node.children;
22
- while (++offset < children.length) {
23
- const child = children[offset];
24
- if (child.type === 'mdxJsxTextElement' ||
25
- child.type === 'mdxTextExpression') {
26
- oneOrMore = true;
27
- }
28
- else if (child.type === 'text' &&
29
- collapseWhiteSpace(child.value, {
30
- style: 'html',
31
- trim: true,
32
- }) === '') {
33
- // Empty.
34
- }
35
- else {
36
- all = false;
37
- break;
38
- }
39
- }
40
- if (all && oneOrMore) {
41
- offset = -1;
42
- const newChildren = [];
43
- while (++offset < children.length) {
44
- const child = children[offset];
45
- if (child.type === 'mdxJsxTextElement') {
46
- // @ts-expect-error: mutate because it is faster; content model is fine.
47
- child.type = 'mdxJsxFlowElement';
48
- }
49
- if (child.type === 'mdxTextExpression') {
50
- // @ts-expect-error: mutate because it is faster; content model is fine.
51
- child.type = 'mdxFlowExpression';
52
- }
53
- if (child.type === 'text' &&
54
- /^[\t\r\n ]+$/.test(String(child.value))) {
55
- // Empty.
56
- }
57
- else {
58
- newChildren.push(child);
59
- }
60
- }
61
- parent.children.splice(index, 1, ...newChildren);
62
- return index;
63
- }
64
- }
65
- });
66
- };
67
- }
68
- //# sourceMappingURL=plugins.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAGxC;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB;IAChC,OAAO,UAAU,IAAU;QAEvB,KAAK,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,KAAK,EAAE,MAAM;YACrC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAA;YACf,IAAI,GAAG,GAAG,IAAI,CAAA;YACd,IAAI,SAAS,GAAG,KAAK,CAAA;YAGrB,IACI,MAAM;gBACN,OAAO,KAAK,KAAK,QAAQ;gBACzB,IAAI,CAAC,IAAI,KAAK,WAAW,EAC3B;gBACE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;gBAE9B,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;oBAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;oBAE9B,IACI,KAAK,CAAC,IAAI,KAAK,mBAAmB;wBAClC,KAAK,CAAC,IAAI,KAAK,mBAAmB,EACpC;wBACE,SAAS,GAAG,IAAI,CAAA;qBACnB;yBAAM,IACH,KAAK,CAAC,IAAI,KAAK,MAAM;wBACrB,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE;4BAC5B,KAAK,EAAE,MAAM;4BACb,IAAI,EAAE,IAAI;yBACb,CAAC,KAAK,EAAE,EACX;wBACE,SAAS;qBACZ;yBAAM;wBACH,GAAG,GAAG,KAAK,CAAA;wBACX,MAAK;qBACR;iBACJ;gBAED,IAAI,GAAG,IAAI,SAAS,EAAE;oBAClB,MAAM,GAAG,CAAC,CAAC,CAAA;oBAEX,MAAM,WAAW,GAAkB,EAAE,CAAA;oBAErC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;wBAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;wBAE9B,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE;4BACpC,wEAAwE;4BACxE,KAAK,CAAC,IAAI,GAAG,mBAAmB,CAAA;yBACnC;wBAED,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE;4BACpC,wEAAwE;4BACxE,KAAK,CAAC,IAAI,GAAG,mBAAmB,CAAA;yBACnC;wBAED,IACI,KAAK,CAAC,IAAI,KAAK,MAAM;4BACrB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAC1C;4BACE,SAAS;yBACZ;6BAAM;4BACH,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;yBAC1B;qBACJ;oBAED,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,CAAA;oBAChD,OAAO,KAAK,CAAA;iBACf;aACJ;QACL,CAAC,CAAC,CAAA;IACN,CAAC,CAAA;AACL,CAAC"}
@@ -1,37 +0,0 @@
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
- }