x-star-editor 0.2.2 → 0.2.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.
- package/dist/components/FileInput.js +2 -2
- package/dist/components/Toolbar.js +164 -107
- package/dist/icons/Blockquote.d.ts +4 -0
- package/dist/icons/Blockquote.js +16 -0
- package/dist/icons/Code.d.ts +4 -0
- package/dist/icons/Code.js +15 -0
- package/dist/icons/Delete.d.ts +4 -0
- package/dist/icons/Delete.js +15 -0
- package/dist/icons/Emphasis.d.ts +4 -0
- package/dist/icons/Emphasis.js +15 -0
- package/dist/icons/EnterFullscreen.d.ts +4 -0
- package/dist/icons/EnterFullscreen.js +15 -0
- package/dist/icons/ExitFullscreen.d.ts +4 -0
- package/dist/icons/ExitFullscreen.js +15 -0
- package/dist/icons/Heading.d.ts +4 -0
- package/dist/icons/Heading.js +15 -0
- package/dist/icons/Image.d.ts +4 -0
- package/dist/icons/Image.js +15 -0
- package/dist/icons/InlineCode.d.ts +4 -0
- package/dist/icons/InlineCode.js +19 -0
- package/dist/icons/InlineMath.d.ts +4 -0
- package/dist/icons/InlineMath.js +25 -0
- package/dist/icons/Link.d.ts +4 -0
- package/dist/icons/Link.js +15 -0
- package/dist/icons/Math.d.ts +4 -0
- package/dist/icons/Math.js +15 -0
- package/dist/icons/OrderedList.d.ts +4 -0
- package/dist/icons/OrderedList.js +15 -0
- package/dist/icons/Redo.d.ts +4 -0
- package/dist/icons/Redo.js +15 -0
- package/dist/icons/Strong.d.ts +4 -0
- package/dist/icons/Strong.js +15 -0
- package/dist/icons/Table.d.ts +4 -0
- package/dist/icons/Table.js +15 -0
- package/dist/icons/ThematicBreak.d.ts +4 -0
- package/dist/icons/ThematicBreak.js +15 -0
- package/dist/icons/ToHtml.d.ts +4 -0
- package/dist/icons/ToHtml.js +15 -0
- package/dist/icons/ToMarkdown.d.ts +4 -0
- package/dist/icons/ToMarkdown.js +15 -0
- package/dist/icons/Undo.d.ts +4 -0
- package/dist/icons/Undo.js +15 -0
- package/dist/icons/UnorderedList.d.ts +4 -0
- package/dist/icons/UnorderedList.js +15 -0
- package/dist/locales/en_US.d.ts +5 -0
- package/dist/locales/en_US.js +6 -1
- package/dist/locales/index.d.ts +20 -0
- package/dist/locales/zh_CN.d.ts +5 -0
- package/dist/locales/zh_CN.js +6 -1
- package/dist/styles/index.css +8 -69
- package/dist/utils/container.d.ts +2 -3
- package/dist/utils/container.js +2 -7
- package/dist/utils/markdown.d.ts +6 -6
- package/dist/utils/markdown.js +146 -49
- package/dist/x-star-editor/index.js +3 -3
- package/dist/x-star-md-editor/index.js +4 -3
- package/dist/x-star-md-viewer/index.js +44 -14
- package/package.json +9 -5
- package/dist/styles/icons/blockquote.svg +0 -18
- package/dist/styles/icons/code.svg +0 -18
- package/dist/styles/icons/delete.svg +0 -18
- package/dist/styles/icons/emphasis.svg +0 -18
- package/dist/styles/icons/fullscreen-enter.svg +0 -18
- package/dist/styles/icons/fullscreen-exit.svg +0 -18
- package/dist/styles/icons/heading.svg +0 -16
- package/dist/styles/icons/image.svg +0 -18
- package/dist/styles/icons/inline-code.svg +0 -19
- package/dist/styles/icons/inline-math.svg +0 -20
- package/dist/styles/icons/link.svg +0 -18
- package/dist/styles/icons/math.svg +0 -17
- package/dist/styles/icons/ordered-list.svg +0 -18
- package/dist/styles/icons/redo.svg +0 -18
- package/dist/styles/icons/strong.svg +0 -18
- package/dist/styles/icons/table.svg +0 -18
- package/dist/styles/icons/thematic-break.svg +0 -18
- package/dist/styles/icons/to-html.svg +0 -18
- package/dist/styles/icons/to-markdown.svg +0 -18
- package/dist/styles/icons/undo.svg +0 -18
- package/dist/styles/icons/unordered-list.svg +0 -18
package/dist/utils/container.js
CHANGED
|
@@ -39,14 +39,10 @@ export var getRange = function getRange(_ref) {
|
|
|
39
39
|
/**
|
|
40
40
|
* 获取一个可以设置文本和选区的容器
|
|
41
41
|
*
|
|
42
|
+
* @param ref 容器挂载的 DOM 节点
|
|
42
43
|
* @returns 容器
|
|
43
44
|
*/
|
|
44
|
-
export var useContainer = function useContainer() {
|
|
45
|
-
/**
|
|
46
|
-
* 容器挂载的 DOM 节点
|
|
47
|
-
*/
|
|
48
|
-
var ref = useRef(null);
|
|
49
|
-
|
|
45
|
+
export var useContainer = function useContainer(ref) {
|
|
50
46
|
/**
|
|
51
47
|
* 是否在遍历时忽略节点及其子节点
|
|
52
48
|
*
|
|
@@ -362,7 +358,6 @@ export var useContainer = function useContainer() {
|
|
|
362
358
|
}
|
|
363
359
|
};
|
|
364
360
|
return useRef({
|
|
365
|
-
ref: ref,
|
|
366
361
|
normalize: normalize,
|
|
367
362
|
getText: getText,
|
|
368
363
|
setText: setText,
|
package/dist/utils/markdown.d.ts
CHANGED
|
@@ -15,14 +15,14 @@ declare const toHastProcessor: import("unified").FrozenProcessor<import("mdast")
|
|
|
15
15
|
/**
|
|
16
16
|
* Hast 根节点
|
|
17
17
|
*/
|
|
18
|
-
export type HastRoot = ReturnType<(typeof toHastProcessor)['
|
|
18
|
+
export type HastRoot = Awaited<ReturnType<(typeof toHastProcessor)['run']>>;
|
|
19
19
|
/**
|
|
20
20
|
* 将 Markdown 文本转成 Hast 树
|
|
21
21
|
*
|
|
22
22
|
* @param sourceCode Markdown 文本
|
|
23
23
|
* @returns Hast 树
|
|
24
24
|
*/
|
|
25
|
-
export declare const preViewerRender: (sourceCode: string) => import("hast").Root
|
|
25
|
+
export declare const preViewerRender: (sourceCode: string) => Promise<import("hast").Root>;
|
|
26
26
|
/**
|
|
27
27
|
* 过滤模式
|
|
28
28
|
*/
|
|
@@ -35,7 +35,7 @@ export declare const getDefaultSchema: () => Schema;
|
|
|
35
35
|
* @param schema 过滤模式
|
|
36
36
|
* @returns 新的 Hast 树
|
|
37
37
|
*/
|
|
38
|
-
export declare const viewerRender: (root: HastRoot, schema: Schema) => import("hast").Root
|
|
38
|
+
export declare const viewerRender: (root: HastRoot, schema: Schema) => Promise<import("hast").Root>;
|
|
39
39
|
/**
|
|
40
40
|
* 将 Hast 树映射到 React 虚拟 DOM 树
|
|
41
41
|
*
|
|
@@ -50,19 +50,19 @@ export declare const postViewerRender: (root: HastRoot, options: ViewerOptions)
|
|
|
50
50
|
* @param sourceCode Markdown 文本
|
|
51
51
|
* @returns HTML 文本
|
|
52
52
|
*/
|
|
53
|
-
export declare const toHTML: (sourceCode: string) => string
|
|
53
|
+
export declare const toHTML: (sourceCode: string) => Promise<string>;
|
|
54
54
|
/**
|
|
55
55
|
* 将带有 HTML 的 Markdown 文本转成 Markdown 文本
|
|
56
56
|
*
|
|
57
57
|
* @param sourceCode 带有 HTML 的 Markdown 文本
|
|
58
58
|
* @returns Markdown 文本
|
|
59
59
|
*/
|
|
60
|
-
export declare const toMarkdown: (sourceCode: string) => string
|
|
60
|
+
export declare const toMarkdown: (sourceCode: string) => Promise<string>;
|
|
61
61
|
/**
|
|
62
62
|
* 将 Markdown 文本转成纯文本
|
|
63
63
|
*
|
|
64
64
|
* @param sourceCode Markdown 文本
|
|
65
65
|
* @returns 纯文本
|
|
66
66
|
*/
|
|
67
|
-
export declare const toText: (sourceCode: string) => string
|
|
67
|
+
export declare const toText: (sourceCode: string) => Promise<string>;
|
|
68
68
|
export {};
|
package/dist/utils/markdown.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
2
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
|
+
import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
|
|
4
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
3
5
|
import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
|
|
4
6
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
5
7
|
import { toJsxRuntime } from 'hast-util-to-jsx-runtime';
|
|
6
8
|
import { Fragment, jsx, jsxs } from 'react/jsx-runtime';
|
|
7
9
|
import rehypeKatex from 'rehype-katex';
|
|
10
|
+
import rehypeMermaid from 'rehype-mermaidjs';
|
|
8
11
|
import rehypePrism from 'rehype-prism-plus';
|
|
9
12
|
import rehypeRaw from 'rehype-raw';
|
|
10
13
|
import rehypeRemark from 'rehype-remark';
|
|
@@ -77,7 +80,7 @@ export var editorRender = function editorRender(sourceCode) {
|
|
|
77
80
|
/**
|
|
78
81
|
* DOM 树根元素
|
|
79
82
|
*/
|
|
80
|
-
var
|
|
83
|
+
var root = document.createElement('div');
|
|
81
84
|
|
|
82
85
|
/**
|
|
83
86
|
* 判断一个 Mdast 节点的子节点是否为流内容
|
|
@@ -98,16 +101,16 @@ export var editorRender = function editorRender(sourceCode) {
|
|
|
98
101
|
var node = stack[index].node;
|
|
99
102
|
|
|
100
103
|
// 如果节点为流内容,则将样式添加到该行的 `<div>` 元素上,否则添加到该节点的元素上
|
|
101
|
-
var styleElement = stack[index && !isFlowContent(stack[index - 1].node) ? index : 0].
|
|
104
|
+
var styleElement = stack[index && !isFlowContent(stack[index - 1].node) ? index : 0].element;
|
|
102
105
|
styleElement.classList.add("".concat(mdPrefix).concat(node.type));
|
|
103
106
|
if (node.type === 'heading') {
|
|
104
107
|
styleElement.classList.add("".concat(mdPrefix, "heading-").concat(node.depth));
|
|
105
108
|
}
|
|
106
109
|
|
|
107
110
|
// 如果索引为 0,则父节点为块级元素,否则为前一个索引的 DOM 元素
|
|
108
|
-
var parentElement = index ? stack[index - 1].
|
|
109
|
-
parentElement.append(stack[index].
|
|
110
|
-
stack[index].
|
|
111
|
+
var parentElement = index ? stack[index - 1].element : block;
|
|
112
|
+
parentElement.append(stack[index].element);
|
|
113
|
+
stack[index].element = document.createElement(index ? 'span' : 'div');
|
|
111
114
|
stack[index].counter++;
|
|
112
115
|
};
|
|
113
116
|
|
|
@@ -115,7 +118,7 @@ export var editorRender = function editorRender(sourceCode) {
|
|
|
115
118
|
* 将块级元素推到 DOM 树根元素中
|
|
116
119
|
*/
|
|
117
120
|
var pushBlock = function pushBlock() {
|
|
118
|
-
|
|
121
|
+
root.append(block);
|
|
119
122
|
block = document.createElement('div');
|
|
120
123
|
};
|
|
121
124
|
|
|
@@ -157,16 +160,16 @@ export var editorRender = function editorRender(sourceCode) {
|
|
|
157
160
|
if (stack.length) {
|
|
158
161
|
// 如果栈不为空,说明为块级元素内的文本,每一行都应推到块级元素中
|
|
159
162
|
if (lines[0]) {
|
|
160
|
-
stack[stack.length - 1].
|
|
163
|
+
stack[stack.length - 1].element.append(delimiter ? createDelimiter(lines[0]) : lines[0]);
|
|
161
164
|
}
|
|
162
165
|
for (var i = 1; i < lines.length; i++) {
|
|
163
166
|
for (var j = stack.length - 1; j; j--) {
|
|
164
167
|
pushElement(j);
|
|
165
168
|
}
|
|
166
|
-
stack[0].
|
|
169
|
+
stack[0].element.append("\u200B");
|
|
167
170
|
pushElement(0);
|
|
168
171
|
if (lines[i]) {
|
|
169
|
-
stack[stack.length - 1].
|
|
172
|
+
stack[stack.length - 1].element.append(delimiter ? createDelimiter(lines[i]) : lines[i]);
|
|
170
173
|
}
|
|
171
174
|
}
|
|
172
175
|
scanOffset += text.length;
|
|
@@ -213,7 +216,7 @@ export var editorRender = function editorRender(sourceCode) {
|
|
|
213
216
|
// 为 Mdast 节点创建 DOM 元素
|
|
214
217
|
stack.push({
|
|
215
218
|
node: node,
|
|
216
|
-
|
|
219
|
+
element: document.createElement(stack.length ? 'span' : 'div'),
|
|
217
220
|
counter: 0
|
|
218
221
|
});
|
|
219
222
|
if ('children' in node) {
|
|
@@ -226,7 +229,7 @@ export var editorRender = function editorRender(sourceCode) {
|
|
|
226
229
|
} else {
|
|
227
230
|
var _node$position3;
|
|
228
231
|
// 如果栈大小为 1,说明为块级元素终点
|
|
229
|
-
stack[0].
|
|
232
|
+
stack[0].element.append("\u200B");
|
|
230
233
|
pushElement(0);
|
|
231
234
|
block.dataset.line = "".concat((_node$position3 = node.position) === null || _node$position3 === void 0 ? void 0 : _node$position3.start.line);
|
|
232
235
|
pushBlock();
|
|
@@ -249,7 +252,7 @@ export var editorRender = function editorRender(sourceCode) {
|
|
|
249
252
|
block.append(createLine(sourceCode.slice(scanOffset)));
|
|
250
253
|
pushBlock();
|
|
251
254
|
}
|
|
252
|
-
return
|
|
255
|
+
return root;
|
|
253
256
|
};
|
|
254
257
|
|
|
255
258
|
/**
|
|
@@ -268,6 +271,11 @@ var toHastProcessor = unified().use(remarkBreaks).use(remarkRehype, {
|
|
|
268
271
|
);
|
|
269
272
|
}
|
|
270
273
|
}
|
|
274
|
+
}).use(rehypeMermaid, {
|
|
275
|
+
errorFallback: function errorFallback(element) {
|
|
276
|
+
return element;
|
|
277
|
+
},
|
|
278
|
+
strategy: 'img-svg'
|
|
271
279
|
}).use(rehypePrism, {
|
|
272
280
|
ignoreMissing: true
|
|
273
281
|
}).use(rehypeKatex).freeze();
|
|
@@ -282,9 +290,25 @@ var toHastProcessor = unified().use(remarkBreaks).use(remarkRehype, {
|
|
|
282
290
|
* @param sourceCode Markdown 文本
|
|
283
291
|
* @returns Hast 树
|
|
284
292
|
*/
|
|
285
|
-
export var preViewerRender = function
|
|
286
|
-
|
|
287
|
-
|
|
293
|
+
export var preViewerRender = /*#__PURE__*/function () {
|
|
294
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(sourceCode) {
|
|
295
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
296
|
+
while (1) switch (_context.prev = _context.next) {
|
|
297
|
+
case 0:
|
|
298
|
+
_context.next = 2;
|
|
299
|
+
return toHastProcessor.run(cachedParse(sourceCode));
|
|
300
|
+
case 2:
|
|
301
|
+
return _context.abrupt("return", _context.sent);
|
|
302
|
+
case 3:
|
|
303
|
+
case "end":
|
|
304
|
+
return _context.stop();
|
|
305
|
+
}
|
|
306
|
+
}, _callee);
|
|
307
|
+
}));
|
|
308
|
+
return function preViewerRender(_x) {
|
|
309
|
+
return _ref.apply(this, arguments);
|
|
310
|
+
};
|
|
311
|
+
}();
|
|
288
312
|
|
|
289
313
|
/**
|
|
290
314
|
* 过滤模式
|
|
@@ -316,27 +340,43 @@ export var getDefaultSchema = function getDefaultSchema() {
|
|
|
316
340
|
* @param schema 过滤模式
|
|
317
341
|
* @returns 新的 Hast 树
|
|
318
342
|
*/
|
|
319
|
-
export var viewerRender = function
|
|
320
|
-
|
|
321
|
-
return function (
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
343
|
+
export var viewerRender = /*#__PURE__*/function () {
|
|
344
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(root, schema) {
|
|
345
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
346
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
347
|
+
case 0:
|
|
348
|
+
_context2.next = 2;
|
|
349
|
+
return unified().use(rehypeRaw).use(rehypeSanitize, schema).use(function () {
|
|
350
|
+
return function (root) {
|
|
351
|
+
var _iterator2 = _createForOfIteratorHelper(root.children),
|
|
352
|
+
_step2;
|
|
353
|
+
try {
|
|
354
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
355
|
+
var node = _step2.value;
|
|
356
|
+
if ('properties' in node && node.properties) {
|
|
357
|
+
var _node$position4;
|
|
358
|
+
node.properties['data-line'] = (_node$position4 = node.position) === null || _node$position4 === void 0 ? void 0 : _node$position4.start.line;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
} catch (err) {
|
|
362
|
+
_iterator2.e(err);
|
|
363
|
+
} finally {
|
|
364
|
+
_iterator2.f();
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
}).run(root);
|
|
368
|
+
case 2:
|
|
369
|
+
return _context2.abrupt("return", _context2.sent);
|
|
370
|
+
case 3:
|
|
371
|
+
case "end":
|
|
372
|
+
return _context2.stop();
|
|
336
373
|
}
|
|
337
|
-
};
|
|
338
|
-
})
|
|
339
|
-
|
|
374
|
+
}, _callee2);
|
|
375
|
+
}));
|
|
376
|
+
return function viewerRender(_x2, _x3) {
|
|
377
|
+
return _ref2.apply(this, arguments);
|
|
378
|
+
};
|
|
379
|
+
}();
|
|
340
380
|
|
|
341
381
|
/**
|
|
342
382
|
* 将 Hast 树映射到 React 虚拟 DOM 树
|
|
@@ -351,10 +391,10 @@ export var postViewerRender = function postViewerRender(root, options) {
|
|
|
351
391
|
jsx: jsx,
|
|
352
392
|
jsxs: jsxs,
|
|
353
393
|
components: _objectSpread(_objectSpread({}, options.customHTMLElements), {}, {
|
|
354
|
-
custom: function custom(
|
|
394
|
+
custom: function custom(_ref3) {
|
|
355
395
|
var _options$customBlocks;
|
|
356
|
-
var meta =
|
|
357
|
-
value =
|
|
396
|
+
var meta = _ref3.meta,
|
|
397
|
+
value = _ref3.value;
|
|
358
398
|
return jsx((_options$customBlocks = options.customBlocks[meta]) !== null && _options$customBlocks !== void 0 ? _options$customBlocks : 'div', {
|
|
359
399
|
children: value
|
|
360
400
|
});
|
|
@@ -362,7 +402,7 @@ export var postViewerRender = function postViewerRender(root, options) {
|
|
|
362
402
|
})
|
|
363
403
|
});
|
|
364
404
|
};
|
|
365
|
-
var toHTMLProcessor = unified().use(remarkParse).use(remarkGfm).use(
|
|
405
|
+
var toHTMLProcessor = unified().use(remarkParse).use(remarkGfm).use(remarkRehype, {
|
|
366
406
|
allowDangerousHtml: true
|
|
367
407
|
}).use(rehypeRaw).use(rehypeStringify).freeze();
|
|
368
408
|
|
|
@@ -372,10 +412,28 @@ var toHTMLProcessor = unified().use(remarkParse).use(remarkGfm).use(remarkBreaks
|
|
|
372
412
|
* @param sourceCode Markdown 文本
|
|
373
413
|
* @returns HTML 文本
|
|
374
414
|
*/
|
|
375
|
-
export var toHTML = function
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
415
|
+
export var toHTML = /*#__PURE__*/function () {
|
|
416
|
+
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(sourceCode) {
|
|
417
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
418
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
419
|
+
case 0:
|
|
420
|
+
_context3.next = 2;
|
|
421
|
+
return toHTMLProcessor.process(sourceCode);
|
|
422
|
+
case 2:
|
|
423
|
+
return _context3.abrupt("return", _context3.sent.toString());
|
|
424
|
+
case 3:
|
|
425
|
+
case "end":
|
|
426
|
+
return _context3.stop();
|
|
427
|
+
}
|
|
428
|
+
}, _callee3);
|
|
429
|
+
}));
|
|
430
|
+
return function toHTML(_x4) {
|
|
431
|
+
return _ref4.apply(this, arguments);
|
|
432
|
+
};
|
|
433
|
+
}();
|
|
434
|
+
var toMarkdownProcessor = unified().use(rehypeRemark, {
|
|
435
|
+
newlines: true
|
|
436
|
+
}).use(remarkGfm).use(remarkStringify).freeze();
|
|
379
437
|
|
|
380
438
|
/**
|
|
381
439
|
* 将带有 HTML 的 Markdown 文本转成 Markdown 文本
|
|
@@ -383,9 +441,32 @@ var toMarkdownProcessor = unified().use(rehypeRemark).use(remarkGfm).use(remarkS
|
|
|
383
441
|
* @param sourceCode 带有 HTML 的 Markdown 文本
|
|
384
442
|
* @returns Markdown 文本
|
|
385
443
|
*/
|
|
386
|
-
export var toMarkdown = function
|
|
387
|
-
|
|
388
|
-
|
|
444
|
+
export var toMarkdown = /*#__PURE__*/function () {
|
|
445
|
+
var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(sourceCode) {
|
|
446
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
447
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
448
|
+
case 0:
|
|
449
|
+
_context4.t0 = toMarkdownProcessor;
|
|
450
|
+
_context4.t1 = toMarkdownProcessor;
|
|
451
|
+
_context4.next = 4;
|
|
452
|
+
return toHTMLProcessor.run(toHTMLProcessor.parse(sourceCode));
|
|
453
|
+
case 4:
|
|
454
|
+
_context4.t2 = _context4.sent;
|
|
455
|
+
_context4.next = 7;
|
|
456
|
+
return _context4.t1.run.call(_context4.t1, _context4.t2);
|
|
457
|
+
case 7:
|
|
458
|
+
_context4.t3 = _context4.sent;
|
|
459
|
+
return _context4.abrupt("return", _context4.t0.stringify.call(_context4.t0, _context4.t3));
|
|
460
|
+
case 9:
|
|
461
|
+
case "end":
|
|
462
|
+
return _context4.stop();
|
|
463
|
+
}
|
|
464
|
+
}, _callee4);
|
|
465
|
+
}));
|
|
466
|
+
return function toMarkdown(_x5) {
|
|
467
|
+
return _ref5.apply(this, arguments);
|
|
468
|
+
};
|
|
469
|
+
}();
|
|
389
470
|
var toTextProcessor = unified().use(remarkParse).use(remarkGfm).use(strip).use(remarkStringify).freeze();
|
|
390
471
|
|
|
391
472
|
/**
|
|
@@ -394,6 +475,22 @@ var toTextProcessor = unified().use(remarkParse).use(remarkGfm).use(strip).use(r
|
|
|
394
475
|
* @param sourceCode Markdown 文本
|
|
395
476
|
* @returns 纯文本
|
|
396
477
|
*/
|
|
397
|
-
export var toText = function
|
|
398
|
-
|
|
399
|
-
|
|
478
|
+
export var toText = /*#__PURE__*/function () {
|
|
479
|
+
var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(sourceCode) {
|
|
480
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
481
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
482
|
+
case 0:
|
|
483
|
+
_context5.next = 2;
|
|
484
|
+
return toTextProcessor.process(sourceCode);
|
|
485
|
+
case 2:
|
|
486
|
+
return _context5.abrupt("return", _context5.sent.toString());
|
|
487
|
+
case 3:
|
|
488
|
+
case "end":
|
|
489
|
+
return _context5.stop();
|
|
490
|
+
}
|
|
491
|
+
}, _callee5);
|
|
492
|
+
}));
|
|
493
|
+
return function toText(_x6) {
|
|
494
|
+
return _ref6.apply(this, arguments);
|
|
495
|
+
};
|
|
496
|
+
}();
|
|
@@ -19,11 +19,11 @@ var XStarEditor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
19
19
|
onInsertFile = _ref.onInsertFile;
|
|
20
20
|
var editorRef = useMdEditorRef();
|
|
21
21
|
var viewerRef = useMdViewerRef();
|
|
22
|
-
var
|
|
22
|
+
var containerRef = useRef(null);
|
|
23
23
|
useImperativeHandle(ref, function () {
|
|
24
24
|
return _objectSpread(_objectSpread(_objectSpread({}, editorRef.current), viewerRef.current), {}, {
|
|
25
25
|
getContainer: function getContainer() {
|
|
26
|
-
return
|
|
26
|
+
return containerRef.current;
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
29
|
}, []);
|
|
@@ -135,7 +135,7 @@ var XStarEditor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
135
135
|
value = _useState2[0],
|
|
136
136
|
setValue = _useState2[1];
|
|
137
137
|
return /*#__PURE__*/React.createElement("div", {
|
|
138
|
-
ref:
|
|
138
|
+
ref: containerRef,
|
|
139
139
|
className: classNames("".concat(prefix, "editor"), className),
|
|
140
140
|
style: style
|
|
141
141
|
}, /*#__PURE__*/React.createElement(XStarMdEditor, _extends({
|
|
@@ -19,7 +19,8 @@ var XStarMdEditor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
19
19
|
plugins = _ref.plugins,
|
|
20
20
|
onChange = _ref.onChange,
|
|
21
21
|
onInsertFile = _ref.onInsertFile;
|
|
22
|
-
var
|
|
22
|
+
var containerRef = useRef(null);
|
|
23
|
+
var container = useContainer(containerRef);
|
|
23
24
|
var _useHistory = useHistory(initialValue),
|
|
24
25
|
history = _useHistory.history,
|
|
25
26
|
sourceCode = _useHistory.sourceCode,
|
|
@@ -78,7 +79,7 @@ var XStarMdEditor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
78
79
|
return {
|
|
79
80
|
exec: exec,
|
|
80
81
|
getEditorContainer: function getEditorContainer() {
|
|
81
|
-
return
|
|
82
|
+
return containerRef.current;
|
|
82
83
|
}
|
|
83
84
|
};
|
|
84
85
|
}, []);
|
|
@@ -276,7 +277,7 @@ var XStarMdEditor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
276
277
|
items: options.toolbarItems,
|
|
277
278
|
exec: exec
|
|
278
279
|
}), /*#__PURE__*/React.createElement("div", {
|
|
279
|
-
ref:
|
|
280
|
+
ref: containerRef,
|
|
280
281
|
className: classNames("".concat(prefix, "md-editor"), className),
|
|
281
282
|
style: _objectSpread(_objectSpread({}, style), {}, {
|
|
282
283
|
height: height
|