x-star-editor 0.2.1 → 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.
Files changed (74) hide show
  1. package/dist/components/FileInput.js +2 -2
  2. package/dist/components/Toolbar.js +184 -44
  3. package/dist/icons/Blockquote.d.ts +4 -0
  4. package/dist/icons/Blockquote.js +16 -0
  5. package/dist/icons/Code.d.ts +4 -0
  6. package/dist/icons/Code.js +15 -0
  7. package/dist/icons/Delete.d.ts +4 -0
  8. package/dist/icons/Delete.js +15 -0
  9. package/dist/icons/Emphasis.d.ts +4 -0
  10. package/dist/icons/Emphasis.js +15 -0
  11. package/dist/icons/EnterFullscreen.d.ts +4 -0
  12. package/dist/icons/EnterFullscreen.js +15 -0
  13. package/dist/icons/ExitFullscreen.d.ts +4 -0
  14. package/dist/icons/ExitFullscreen.js +15 -0
  15. package/dist/icons/Heading.d.ts +4 -0
  16. package/dist/icons/Heading.js +15 -0
  17. package/dist/icons/Image.d.ts +4 -0
  18. package/dist/icons/Image.js +15 -0
  19. package/dist/icons/InlineCode.d.ts +4 -0
  20. package/dist/icons/InlineCode.js +19 -0
  21. package/dist/icons/InlineMath.d.ts +4 -0
  22. package/dist/icons/InlineMath.js +25 -0
  23. package/dist/icons/Link.d.ts +4 -0
  24. package/dist/icons/Link.js +15 -0
  25. package/dist/icons/Math.d.ts +4 -0
  26. package/dist/icons/Math.js +15 -0
  27. package/dist/icons/OrderedList.d.ts +4 -0
  28. package/dist/icons/OrderedList.js +15 -0
  29. package/dist/icons/Redo.d.ts +4 -0
  30. package/dist/icons/Redo.js +15 -0
  31. package/dist/icons/Strong.d.ts +4 -0
  32. package/dist/icons/Strong.js +15 -0
  33. package/dist/icons/Table.d.ts +4 -0
  34. package/dist/icons/Table.js +15 -0
  35. package/dist/icons/ThematicBreak.d.ts +4 -0
  36. package/dist/icons/ThematicBreak.js +15 -0
  37. package/dist/icons/ToHtml.d.ts +4 -0
  38. package/dist/icons/ToHtml.js +15 -0
  39. package/dist/icons/ToMarkdown.d.ts +4 -0
  40. package/dist/icons/ToMarkdown.js +15 -0
  41. package/dist/icons/Undo.d.ts +4 -0
  42. package/dist/icons/Undo.js +15 -0
  43. package/dist/icons/UnorderedList.d.ts +4 -0
  44. package/dist/icons/UnorderedList.js +15 -0
  45. package/dist/locales/en_US.d.ts +7 -0
  46. package/dist/locales/en_US.js +8 -1
  47. package/dist/locales/index.d.ts +28 -0
  48. package/dist/locales/zh_CN.d.ts +7 -0
  49. package/dist/locales/zh_CN.js +8 -1
  50. package/dist/styles/index.css +8 -48
  51. package/dist/utils/container.d.ts +2 -3
  52. package/dist/utils/container.js +2 -7
  53. package/dist/utils/markdown.d.ts +6 -6
  54. package/dist/utils/markdown.js +147 -50
  55. package/dist/x-star-editor/index.d.ts +3 -2
  56. package/dist/x-star-editor/index.js +12 -6
  57. package/dist/x-star-md-editor/index.js +4 -3
  58. package/dist/x-star-md-viewer/index.d.ts +1 -1
  59. package/dist/x-star-md-viewer/index.js +44 -14
  60. package/package.json +9 -5
  61. package/dist/styles/icons/blockquote.svg +0 -18
  62. package/dist/styles/icons/code.svg +0 -18
  63. package/dist/styles/icons/delete.svg +0 -18
  64. package/dist/styles/icons/emphasis.svg +0 -18
  65. package/dist/styles/icons/heading.svg +0 -16
  66. package/dist/styles/icons/image.svg +0 -18
  67. package/dist/styles/icons/inline-code.svg +0 -19
  68. package/dist/styles/icons/inline-math.svg +0 -20
  69. package/dist/styles/icons/link.svg +0 -18
  70. package/dist/styles/icons/math.svg +0 -17
  71. package/dist/styles/icons/redo.svg +0 -18
  72. package/dist/styles/icons/strong.svg +0 -18
  73. package/dist/styles/icons/thematic-break.svg +0 -18
  74. package/dist/styles/icons/undo.svg +0 -18
@@ -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 el = document.createElement('div');
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].el;
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].el : block;
109
- parentElement.append(stack[index].el);
110
- stack[index].el = document.createElement(index ? 'span' : 'div');
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
- el.append(block);
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].el.append(delimiter ? createDelimiter(lines[0]) : lines[0]);
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].el.append("\u200B");
169
+ stack[0].element.append("\u200B");
167
170
  pushElement(0);
168
171
  if (lines[i]) {
169
- stack[stack.length - 1].el.append(delimiter ? createDelimiter(lines[i]) : lines[i]);
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
- el: document.createElement(stack.length ? 'span' : 'div'),
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].el.append("\u200B");
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 el;
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 preViewerRender(sourceCode) {
286
- return toHastProcessor.runSync(cachedParse(sourceCode));
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 viewerRender(root, schema) {
320
- return unified().use(rehypeRaw).use(rehypeSanitize, schema).use(function () {
321
- return function (root) {
322
- var _iterator2 = _createForOfIteratorHelper(root.children),
323
- _step2;
324
- try {
325
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
326
- var node = _step2.value;
327
- if ('properties' in node && node.properties) {
328
- var _node$position4;
329
- node.properties['data-line'] = (_node$position4 = node.position) === null || _node$position4 === void 0 ? void 0 : _node$position4.start.line;
330
- }
331
- }
332
- } catch (err) {
333
- _iterator2.e(err);
334
- } finally {
335
- _iterator2.f();
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
- }).runSync(root);
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(_ref) {
394
+ custom: function custom(_ref3) {
355
395
  var _options$customBlocks;
356
- var meta = _ref.meta,
357
- value = _ref.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(remarkBreaks).use(remarkRehype, {
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 toHTML(sourceCode) {
376
- return toHTMLProcessor.processSync(sourceCode).toString();
377
- };
378
- var toMarkdownProcessor = unified().use(rehypeRemark).use(remarkGfm).use(remarkStringify).freeze();
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,10 +441,33 @@ 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 toMarkdown(sourceCode) {
387
- return toMarkdownProcessor.stringify(toMarkdownProcessor.runSync(toHTMLProcessor.runSync(toHTMLProcessor.parse(sourceCode))));
388
- };
389
- var toTextProcessor = unified().use(strip).freeze();
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
+ }();
470
+ var toTextProcessor = unified().use(remarkParse).use(remarkGfm).use(strip).use(remarkStringify).freeze();
390
471
 
391
472
  /**
392
473
  * 将 Markdown 文本转成纯文本
@@ -394,6 +475,22 @@ var toTextProcessor = unified().use(strip).freeze();
394
475
  * @param sourceCode Markdown 文本
395
476
  * @returns 纯文本
396
477
  */
397
- export var toText = function toText(sourceCode) {
398
- return toTextProcessor.processSync(sourceCode).toString();
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
+ }();
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import type { XStarMdEditorHandle, XStarMdEditorProps } from '../x-star-md-editor';
3
3
  import type { XStarMdViewerHandle, XStarMdViewerProps } from '../x-star-md-viewer';
4
4
  export interface XStarEditorHandle extends XStarMdEditorHandle, XStarMdViewerHandle {
5
+ getContainer: () => HTMLDivElement;
5
6
  }
6
7
  export interface XStarEditorProps {
7
8
  /**
@@ -13,7 +14,7 @@ export interface XStarEditorProps {
13
14
  */
14
15
  style?: React.CSSProperties;
15
16
  /**
16
- * 编辑器和浏览器的高度(不包括工具栏)
17
+ * 编辑器和查看器的高度(不包括工具栏)
17
18
  */
18
19
  height?: React.CSSProperties['height'];
19
20
  /**
@@ -33,7 +34,7 @@ export interface XStarEditorProps {
33
34
  */
34
35
  editorProps?: Omit<XStarMdEditorProps, 'height' | 'locale' | 'initialValue' | 'onChange' | 'onInsertFile'>;
35
36
  /**
36
- * 浏览器属性
37
+ * 查看器属性
37
38
  */
38
39
  viewerProps?: Omit<XStarMdViewerProps, 'height' | 'value' | 'enableWebWorker'>;
39
40
  /**
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
4
4
  import classNames from 'classnames';
5
5
  import React, { useEffect, useImperativeHandle, useRef, useState } from 'react';
6
6
  import { prefix } from "../utils/global";
@@ -17,14 +17,15 @@ var XStarEditor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
17
17
  viewerProps = _ref.viewerProps,
18
18
  _onChange = _ref.onChange,
19
19
  onInsertFile = _ref.onInsertFile;
20
- var _useState = useState(initialValue),
21
- _useState2 = _slicedToArray(_useState, 2),
22
- value = _useState2[0],
23
- setValue = _useState2[1];
24
20
  var editorRef = useMdEditorRef();
25
21
  var viewerRef = useMdViewerRef();
22
+ var containerRef = useRef(null);
26
23
  useImperativeHandle(ref, function () {
27
- return _objectSpread(_objectSpread({}, editorRef.current), viewerRef.current);
24
+ return _objectSpread(_objectSpread(_objectSpread({}, editorRef.current), viewerRef.current), {}, {
25
+ getContainer: function getContainer() {
26
+ return containerRef.current;
27
+ }
28
+ });
28
29
  }, []);
29
30
 
30
31
  // 同步滚动
@@ -129,7 +130,12 @@ var XStarEditor = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
129
130
  });
130
131
  };
131
132
  }, []);
133
+ var _useState = useState(initialValue),
134
+ _useState2 = _slicedToArray(_useState, 2),
135
+ value = _useState2[0],
136
+ setValue = _useState2[1];
132
137
  return /*#__PURE__*/React.createElement("div", {
138
+ ref: containerRef,
133
139
  className: classNames("".concat(prefix, "editor"), className),
134
140
  style: style
135
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 container = useContainer();
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 container.ref.current;
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: container.ref,
280
+ ref: containerRef,
280
281
  className: classNames("".concat(prefix, "md-editor"), className),
281
282
  style: _objectSpread(_objectSpread({}, style), {}, {
282
283
  height: height
@@ -33,7 +33,7 @@ export interface XStarMdViewerProps {
33
33
  */
34
34
  style?: React.CSSProperties;
35
35
  /**
36
- * 浏览器的高度
36
+ * 查看器的高度
37
37
  */
38
38
  height?: React.CSSProperties['height'];
39
39
  /**