@mdxeditor/editor 2.3.5 → 2.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.
@@ -0,0 +1,137 @@
1
+ import { factorySpace } from "micromark-factory-space";
2
+ import { markdownLineEnding } from "./node_modules/micromark-util-character/index.js";
3
+ import { codes, types } from "micromark-util-symbol";
4
+ function commentFromMarkdown(_options) {
5
+ return {
6
+ canContainEols: ["comment"],
7
+ enter: {
8
+ comment(_) {
9
+ this.buffer();
10
+ }
11
+ },
12
+ exit: {
13
+ comment(token) {
14
+ const text = this.resume();
15
+ if (_options == null ? void 0 : _options.ast) {
16
+ this.enter(
17
+ {
18
+ // @ts-expect-error: hush.
19
+ type: "comment",
20
+ value: "",
21
+ commentValue: text.slice(0, -2)
22
+ },
23
+ token
24
+ );
25
+ this.exit(token);
26
+ }
27
+ }
28
+ }
29
+ };
30
+ }
31
+ const tokenize = (effects, ok, nok) => {
32
+ return start;
33
+ function start(code) {
34
+ effects.enter("comment");
35
+ effects.consume(code);
36
+ return open;
37
+ }
38
+ function open(code) {
39
+ if (code === codes.exclamationMark) {
40
+ effects.consume(code);
41
+ return declarationOpen;
42
+ }
43
+ return nok(code);
44
+ }
45
+ function declarationOpen(code) {
46
+ if (code === codes.dash) {
47
+ effects.consume(code);
48
+ return commentOpen;
49
+ }
50
+ return nok(code);
51
+ }
52
+ function commentOpen(code) {
53
+ if (code === codes.dash) {
54
+ effects.consume(code);
55
+ return commentStart;
56
+ }
57
+ return nok(code);
58
+ }
59
+ function commentStart(code) {
60
+ if (code === codes.greaterThan) {
61
+ return nok(code);
62
+ }
63
+ if (markdownLineEnding(code)) {
64
+ return atLineEnding(code);
65
+ }
66
+ effects.enter(types.data);
67
+ if (code === codes.dash) {
68
+ effects.consume(code);
69
+ return commentStartDash;
70
+ }
71
+ return comment2(code);
72
+ }
73
+ function commentStartDash(code) {
74
+ if (code === codes.greaterThan) {
75
+ return nok(code);
76
+ }
77
+ return comment2(code);
78
+ }
79
+ function comment2(code) {
80
+ if (code === codes.eof) {
81
+ return nok(code);
82
+ }
83
+ if (code === codes.dash) {
84
+ effects.consume(code);
85
+ return commentClose;
86
+ }
87
+ if (markdownLineEnding(code)) {
88
+ effects.exit(types.data);
89
+ return atLineEnding(code);
90
+ }
91
+ effects.consume(code);
92
+ return comment2;
93
+ }
94
+ function atLineEnding(code) {
95
+ effects.enter(types.lineEnding);
96
+ effects.consume(code);
97
+ effects.exit(types.lineEnding);
98
+ return factorySpace(effects, afterPrefix, types.linePrefix);
99
+ }
100
+ function afterPrefix(code) {
101
+ if (markdownLineEnding(code)) {
102
+ return atLineEnding(code);
103
+ }
104
+ effects.enter(types.data);
105
+ return comment2(code);
106
+ }
107
+ function commentClose(code) {
108
+ if (code === codes.dash) {
109
+ effects.consume(code);
110
+ return end;
111
+ }
112
+ return comment2(code);
113
+ }
114
+ function end(code) {
115
+ if (code === codes.greaterThan) {
116
+ effects.exit(types.data);
117
+ effects.enter("commentEnd");
118
+ effects.consume(code);
119
+ effects.exit("commentEnd");
120
+ effects.exit("comment");
121
+ return ok(code);
122
+ }
123
+ if (code === codes.dash) {
124
+ effects.consume(code);
125
+ return end;
126
+ }
127
+ return comment2(code);
128
+ }
129
+ };
130
+ const comment = {
131
+ flow: { [60]: { tokenize, concrete: true } },
132
+ text: { [60]: { tokenize } }
133
+ };
134
+ export {
135
+ comment,
136
+ commentFromMarkdown
137
+ };
@@ -0,0 +1,6 @@
1
+ function markdownLineEnding(code) {
2
+ return code !== null && code < -2;
3
+ }
4
+ export {
5
+ markdownLineEnding
6
+ };
@@ -27,6 +27,7 @@ import { MdastParagraphVisitor } from "./MdastParagraphVisitor.js";
27
27
  import { MdastRootVisitor } from "./MdastRootVisitor.js";
28
28
  import { MdastTextVisitor } from "./MdastTextVisitor.js";
29
29
  import { SharedHistoryPlugin } from "./SharedHistoryPlugin.js";
30
+ import { commentFromMarkdown, comment } from "../../mdastUtilHtmlComment.js";
30
31
  const NESTED_EDITOR_UPDATED_COMMAND = createCommand("NESTED_EDITOR_UPDATED_COMMAND");
31
32
  const rootEditor$ = Cell(null);
32
33
  const activeEditor$ = Cell(null);
@@ -488,8 +489,8 @@ const corePlugin = realmPlugin({
488
489
  });
489
490
  if (!(params == null ? void 0 : params.suppressHtmlProcessing)) {
490
491
  r.pubIn({
491
- [addMdastExtension$]: mdxJsxFromMarkdown(),
492
- [addSyntaxExtension$]: [mdxJsx(), mdxMd()],
492
+ [addMdastExtension$]: [mdxJsxFromMarkdown(), commentFromMarkdown({ ast: false })],
493
+ [addSyntaxExtension$]: [mdxJsx(), mdxMd(), comment],
493
494
  [addToMarkdownExtension$]: mdxJsxToMarkdown(),
494
495
  [addImportVisitor$]: MdastHTMLVisitor
495
496
  });
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "*.css"
12
12
  ],
13
13
  "type": "module",
14
- "version": "2.3.5",
14
+ "version": "2.3.6",
15
15
  "description": "React component for rich text markdown editing",
16
16
  "scripts": {
17
17
  "build": "vite build",
@@ -80,6 +80,8 @@
80
80
  "micromark-extension-mdx-jsx": "^3.0.0",
81
81
  "micromark-extension-mdx-md": "^2.0.0",
82
82
  "micromark-extension-mdxjs": "^3.0.0",
83
+ "micromark-factory-space": "^2.0.0",
84
+ "micromark-util-symbol": "^2.0.0",
83
85
  "react-hook-form": "^7.44.2",
84
86
  "unidiff": "^1.0.2"
85
87
  },