@seafile/sdoc-editor 0.1.155 → 0.1.157

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.
@@ -7,14 +7,14 @@ import context from '../../../../context';
7
7
  import LocalFiles from './local-files';
8
8
  import toaster from '../../../../components/toast';
9
9
  import { getErrorMsg } from '../../../../utils/';
10
+ import { ELEMENT_TYPE, FILE_TYPE } from '../../constants';
10
11
  import './index.css';
11
12
  var SelectSdocFileDialog = function SelectSdocFileDialog(_ref) {
12
13
  var editor = _ref.editor,
13
14
  dialogType = _ref.dialogType,
14
15
  closeDialog = _ref.closeDialog,
15
16
  insertLinkCallback = _ref.insertLinkCallback;
16
- var type = dialogType === 'file-link' ? 'file' : 'sdoc';
17
- var modalTitle = dialogType === 'file-link' ? 'Select_file' : 'Select_sdoc_document';
17
+ var modalTitle = dialogType === ELEMENT_TYPE.FILE_LINK ? 'Select_file' : 'Select_sdoc_document';
18
18
  var _useTranslation = useTranslation(),
19
19
  t = _useTranslation.t;
20
20
  var _useState = useState(null),
@@ -27,7 +27,7 @@ var SelectSdocFileDialog = function SelectSdocFileDialog(_ref) {
27
27
  var insertFile = useCallback(function (fileInfo) {
28
28
  var insertFileLinkCallback = insertLinkCallback.insertFileLinkCallback,
29
29
  insertSdocFileLinkCallback = insertLinkCallback.insertSdocFileLinkCallback;
30
- if (dialogType === 'file-link') {
30
+ if (dialogType === ELEMENT_TYPE.FILE_LINK) {
31
31
  insertFileLinkCallback && insertFileLinkCallback(editor, fileInfo.name, fileInfo.file_uuid);
32
32
  } else {
33
33
  insertSdocFileLinkCallback && insertSdocFileLinkCallback(editor, fileInfo.name, fileInfo.file_uuid);
@@ -79,7 +79,7 @@ var SelectSdocFileDialog = function SelectSdocFileDialog(_ref) {
79
79
  }, t('Local_file')))), /*#__PURE__*/React.createElement("div", {
80
80
  className: "sdoc-file-select-right"
81
81
  }, /*#__PURE__*/React.createElement(LocalFiles, {
82
- type: type,
82
+ fileType: FILE_TYPE[dialogType],
83
83
  onSelectedFile: onSelectedFile,
84
84
  toggle: closeDialog
85
85
  }), /*#__PURE__*/React.createElement("div", {
@@ -14,7 +14,7 @@ import './index.css';
14
14
  var LocalFiles = function LocalFiles(_ref) {
15
15
  var onSelectedFile = _ref.onSelectedFile,
16
16
  toggle = _ref.toggle,
17
- fileType = _ref.type,
17
+ fileType = _ref.fileType,
18
18
  t = _ref.t;
19
19
  var folderRef = useRef(null);
20
20
  var _useState = useState(new Set([])),
@@ -9,7 +9,7 @@ export var HEADER4 = 'header4';
9
9
  export var HEADER5 = 'header5';
10
10
  export var HEADER6 = 'header6';
11
11
  export var ORDERED_LIST = 'ordered_list';
12
- export var UNORDERED_LIST = 'unordered_list'; // unordered_list can not work
12
+ export var UNORDERED_LIST = 'unordered_list';
13
13
  export var LIST_ITEM = 'list-item';
14
14
  export var LIST_LIC = 'list-lic'; // placeholder
15
15
  export var CHECK_LIST_ITEM = 'check-list-item';
@@ -1,5 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- var _HEADER_TITLE_MAP;
2
+ var _HEADER_TITLE_MAP, _FILE_TYPE;
3
3
  // extension plugin
4
4
  import * as ELEMENT_TYPE from './element-type';
5
5
  import { BLOCKQUOTE, TITLE, SUBTITLE, HEADER, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, PARAGRAPH, ORDERED_LIST, UNORDERED_LIST, LIST_ITEM, LIST_LIC, CHECK_LIST_ITEM, CODE_BLOCK, CODE_LINE, TABLE, TABLE_CELL, TABLE_ROW, LINK, SDOC_LINK, FILE_LINK, IMAGE } from './element-type';
@@ -10,7 +10,6 @@ export { KEYBOARD, MAC_HOTKEYS, WIN_HOTKEYS } from './keyboard';
10
10
  export { UNDO, REDO, TEXT_STYLE, TEXT_STYLE_MAP, TEXT_STYLE_MORE, TEXT_ALIGN, REMOVE_TABLE, CLEAR_FORMAT, MENUS_CONFIG_MAP, SIDE_MENUS_CONFIG } from './menus-config';
11
11
  export var HEADERS = [HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6];
12
12
  export var HEADER_TITLE_MAP = (_HEADER_TITLE_MAP = {}, _defineProperty(_HEADER_TITLE_MAP, TITLE, 'Title'), _defineProperty(_HEADER_TITLE_MAP, SUBTITLE, 'Subtitle'), _defineProperty(_HEADER_TITLE_MAP, HEADER1, 'Header_one'), _defineProperty(_HEADER_TITLE_MAP, HEADER2, 'Header_two'), _defineProperty(_HEADER_TITLE_MAP, HEADER3, 'Header_three'), _defineProperty(_HEADER_TITLE_MAP, HEADER4, 'Header_four'), _defineProperty(_HEADER_TITLE_MAP, HEADER5, 'Header_five'), _defineProperty(_HEADER_TITLE_MAP, HEADER6, 'Header_six'), _defineProperty(_HEADER_TITLE_MAP, PARAGRAPH, 'Paragraph'), _HEADER_TITLE_MAP);
13
- export var LIST_TYPE_ARRAY = ['unordered_list', 'ordered_list'];
14
13
  export var TRANSPARENT = 'transparent';
15
14
  export var CLIPBOARD_FORMAT_KEY = 'x-slate-fragment';
16
15
  export var INSERT_FILE_DISPLAY_TYPE = ['text_link', 'icon_link', 'card_link'];
@@ -20,6 +19,9 @@ export var INSERT_POSITION = {
20
19
  AFTER: 'after'
21
20
  };
22
21
  export var LOCAL_IMAGE = 'local-image';
23
- export var LIST_ITEM_CORRELATION_TYPE = ['unordered_list', 'ordered_list', 'list-item'];
24
- export var LIST_ITEM_SUPPORTED_TRANSFORMATION = ['unordered_list', 'ordered_list', 'left', 'center', 'right', 'blockquote'];
22
+ export var LIST_TYPE_ARRAY = [UNORDERED_LIST, ORDERED_LIST];
23
+ export var LIST_ITEM_CORRELATION_TYPE = [UNORDERED_LIST, ORDERED_LIST, LIST_ITEM];
24
+ export var LIST_ITEM_SUPPORTED_TRANSFORMATION = [UNORDERED_LIST, ORDERED_LIST, 'left', 'center', 'right', BLOCKQUOTE];
25
+ export var ADD_POSITION_OFFSET_TYPE = [PARAGRAPH, SUBTITLE, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, CHECK_LIST_ITEM];
26
+ export var FILE_TYPE = (_FILE_TYPE = {}, _defineProperty(_FILE_TYPE, FILE_LINK, 'file'), _defineProperty(_FILE_TYPE, SDOC_LINK, 'sdoc'), _FILE_TYPE);
25
27
  export { ELEMENT_TYPE, BLOCKQUOTE, TITLE, SUBTITLE, HEADER, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, PARAGRAPH, ORDERED_LIST, UNORDERED_LIST, LIST_ITEM, LIST_LIC, CHECK_LIST_ITEM, CODE_BLOCK, CODE_LINE, TABLE, TABLE_CELL, TABLE_ROW, LINK, SDOC_LINK, FILE_LINK, IMAGE };
@@ -1,7 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import { Editor, Transforms, Element } from '@seafile/slate';
3
3
  import slugid from 'slugid';
4
- import { BLOCKQUOTE, CHECK_LIST_ITEM, IMAGE, ORDERED_LIST, UNORDERED_LIST } from '../../constants';
4
+ import { BLOCKQUOTE, CHECK_LIST_ITEM, IMAGE, ORDERED_LIST, PARAGRAPH, UNORDERED_LIST } from '../../constants';
5
5
  import { focusEditor, getNodeType } from '../../core';
6
6
  export var isMenuDisabled = function isMenuDisabled(editor, readonly) {
7
7
  if (readonly) return true;
@@ -11,8 +11,8 @@ export var isMenuDisabled = function isMenuDisabled(editor, readonly) {
11
11
  var type = getNodeType(n);
12
12
 
13
13
  // Only available for p and blockquote
14
- if (type === 'paragraph') return true;
15
- if (type === 'blockquote') return true;
14
+ if (type === PARAGRAPH) return true;
15
+ if (type === BLOCKQUOTE) return true;
16
16
  if (type === UNORDERED_LIST) return true;
17
17
  if (type === ORDERED_LIST) return true;
18
18
  if (type === CHECK_LIST_ITEM) return true;
@@ -42,7 +42,7 @@ export var getBlockQuoteType = function getBlockQuoteType(editor) {
42
42
  }),
43
43
  _Editor$nodes4 = _slicedToArray(_Editor$nodes3, 1),
44
44
  match = _Editor$nodes4[0];
45
- if (!match) return 'paragraph';
45
+ if (!match) return PARAGRAPH;
46
46
  var _match = _slicedToArray(match, 1),
47
47
  n = _match[0];
48
48
  return getNodeType(n);
@@ -114,7 +114,7 @@ export var changeToPlainText = function changeToPlainText(editor) {
114
114
  var pList = str.split('\n').map(function (s) {
115
115
  return {
116
116
  id: elem.id,
117
- type: 'paragraph',
117
+ type: PARAGRAPH,
118
118
  children: [{
119
119
  text: s,
120
120
  id: slugid.nice()
@@ -102,7 +102,7 @@ var withCodeBlock = function withCodeBlock(editor) {
102
102
  var type = getNodeType(node);
103
103
  if (type === CODE_LINE && path.length <= 1) {
104
104
  Transforms.setNodes(newEditor, {
105
- type: 'paragraph'
105
+ type: PARAGRAPH
106
106
  }, {
107
107
  at: path
108
108
  });
@@ -126,19 +126,19 @@ var withCodeBlock = function withCodeBlock(editor) {
126
126
  }
127
127
 
128
128
  // There must be a code node below code-block
129
- if (getNodeType(node.children[0]) !== 'code-line') {
129
+ if (getNodeType(node.children[0]) !== CODE_LINE) {
130
130
  Transforms.unwrapNodes(newEditor);
131
131
  Transforms.setNodes(newEditor, {
132
- type: 'paragraph'
132
+ type: PARAGRAPH
133
133
  }, {
134
134
  mode: 'highest'
135
135
  });
136
136
  }
137
137
  if (node.children.length > 1) {
138
138
  node.children.forEach(function (child, index) {
139
- if (child.type !== 'code-line') {
139
+ if (child.type !== CODE_LINE) {
140
140
  Transforms.setNodes(newEditor, {
141
- type: 'code-line'
141
+ type: CODE_LINE
142
142
  }, {
143
143
  at: [].concat(_toConsumableArray(path), [index])
144
144
  });
@@ -37,7 +37,6 @@ export var getFontSize = function getFontSize(editor) {
37
37
  if (n['font-size']) return true;
38
38
  var _parentNode = getParentNode(editor.children, n.id);
39
39
  if (!_parentNode) return false;
40
- // title | subtitle | header | code-line
41
40
  if ([TITLE, SUBTITLE].concat(_toConsumableArray(HEADERS), [CODE_LINE]).includes(_parentNode.type)) {
42
41
  return true;
43
42
  }
@@ -52,8 +51,6 @@ export var getFontSize = function getFontSize(editor) {
52
51
  // has font-size attrubute
53
52
  var matched = match[0];
54
53
  if (matched['font-size']) return matched['font-size'];
55
-
56
- // title | subtitle | header | code-line
57
54
  var parentNode = getParentNode(editor.children, matched.id);
58
55
  return SDOC_FONT_SIZE[parentNode.type];
59
56
  };
@@ -1,7 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import { Editor, Transforms } from '@seafile/slate';
3
3
  import { getNodeType, isTextNode, getParentNode } from '../../core';
4
- import { ELEMENT_TYPE, SUBTITLE, TITLE } from '../../constants';
4
+ import { ELEMENT_TYPE, HEADER, PARAGRAPH, SUBTITLE, TITLE } from '../../constants';
5
5
  export var isMenuDisabled = function isMenuDisabled(editor) {
6
6
  var readonly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
7
7
  if (readonly) return true;
@@ -16,7 +16,7 @@ export var isMenuDisabled = function isMenuDisabled(editor) {
16
16
  if (type === ELEMENT_TYPE.CODE_LINE) return true;
17
17
  if (type === ELEMENT_TYPE.CODE_BLOCK) return true;
18
18
  if (type === ELEMENT_TYPE.PARAGRAPH) return true;
19
- if (type.startsWith('header')) return true;
19
+ if (type.startsWith(HEADER)) return true;
20
20
  if (type === TITLE) return true;
21
21
  if (type === SUBTITLE) return true;
22
22
  return false;
@@ -32,7 +32,7 @@ export var getHeaderType = function getHeaderType(editor) {
32
32
  var _Editor$nodes3 = Editor.nodes(editor, {
33
33
  match: function match(n) {
34
34
  var nodeType = getNodeType(n);
35
- if (nodeType.includes('header')) return true;
35
+ if (nodeType.includes(HEADER)) return true;
36
36
  if (nodeType === TITLE) return true;
37
37
  if (nodeType === SUBTITLE) return true;
38
38
  return false;
@@ -41,7 +41,7 @@ export var getHeaderType = function getHeaderType(editor) {
41
41
  }),
42
42
  _Editor$nodes4 = _slicedToArray(_Editor$nodes3, 1),
43
43
  match = _Editor$nodes4[0];
44
- if (!match) return 'paragraph';
44
+ if (!match) return PARAGRAPH;
45
45
  var _match = _slicedToArray(match, 1),
46
46
  n = _match[0];
47
47
  return getNodeType(n);
@@ -68,7 +68,7 @@ var HeaderMenu = /*#__PURE__*/function (_React$Component) {
68
68
  return function () {
69
69
  var editor = _this.props.editor;
70
70
  var active = _this.isActive(type);
71
- var newType = active ? 'paragraph' : type;
71
+ var newType = active ? PARAGRAPH : type;
72
72
  setHeaderType(editor, newType);
73
73
  _this.setState({
74
74
  isShowHeaderPopover: false
@@ -1,6 +1,6 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import { Editor, Element, Transforms, Node } from '@seafile/slate';
3
- import { PARAGRAPH, HEADERS, LIST_TYPE_ARRAY, TITLE, SUBTITLE } from '../../constants';
3
+ import { PARAGRAPH, HEADERS, LIST_TYPE_ARRAY, TITLE, SUBTITLE, HEADER } from '../../constants';
4
4
  import { generateEmptyElement, getSelectedNodeByTypes } from '../../core';
5
5
  import { isMenuDisabled, setHeaderType } from './helpers';
6
6
  import isHotkey from 'is-hotkey';
@@ -23,7 +23,7 @@ var withHeader = function withHeader(editor) {
23
23
  var _Editor$nodes = Editor.nodes(newEditor, {
24
24
  match: function match(n) {
25
25
  if (!Element.isElement(n)) return false;
26
- if (n.type.startsWith('header')) return true;
26
+ if (n.type.startsWith(HEADER)) return true;
27
27
  if (n.type === TITLE) return true;
28
28
  if (n.type === SUBTITLE) return true;
29
29
  return false;
@@ -5,7 +5,7 @@ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyri
5
5
  import { Editor, Transforms, Range, Path } from '@seafile/slate';
6
6
  import { ReactEditor } from '@seafile/slate-react';
7
7
  import slugid from 'slugid';
8
- import { ELEMENT_TYPE, INSERT_POSITION, LINK, LIST_ITEM } from '../../constants';
8
+ import { CODE_BLOCK, CODE_LINE, ELEMENT_TYPE, INSERT_POSITION, LINK, LIST_ITEM, PARAGRAPH } from '../../constants';
9
9
  import { getNodeType, getSelectedElems, getAboveNode, getEditorString, replaceNodeChildren, generateEmptyElement } from '../../core';
10
10
  export var isMenuDisabled = function isMenuDisabled(editor, readonly) {
11
11
  if (readonly) return true;
@@ -14,7 +14,7 @@ export var isMenuDisabled = function isMenuDisabled(editor, readonly) {
14
14
  var notMatch = selectedElems.some(function (elem) {
15
15
  var type = elem.type;
16
16
  if (editor.isVoid(elem)) return true;
17
- if (['code-block', 'code-line', 'link'].includes(type)) return true;
17
+ if ([CODE_BLOCK, CODE_LINE, LINK].includes(type)) return true;
18
18
  return false;
19
19
  });
20
20
  if (notMatch) return true; // disabled
@@ -49,7 +49,7 @@ export var getLinkType = function getLinkType(editor) {
49
49
  }),
50
50
  _Editor$nodes2 = _slicedToArray(_Editor$nodes, 1),
51
51
  match = _Editor$nodes2[0];
52
- if (!match) return 'paragraph';
52
+ if (!match) return PARAGRAPH;
53
53
  var _match = _slicedToArray(match, 1),
54
54
  n = _match[0];
55
55
  return getNodeType(n);
@@ -1,7 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
3
3
  import { Editor, Element } from '@seafile/slate';
4
- import { PARAGRAPH } from '../../constants';
4
+ import { CHECK_LIST_ITEM, CODE_BLOCK, CODE_LINE, PARAGRAPH, TABLE } from '../../constants';
5
5
  import { getSelectedNodeByType } from '../../core';
6
6
  import { toggleList } from './transforms';
7
7
  export var isMenuDisabled = function isMenuDisabled(editor, readonly) {
@@ -28,7 +28,7 @@ export var isMenuDisabled = function isMenuDisabled(editor, readonly) {
28
28
  var notMatch = selectedElements.some(function (element) {
29
29
  if (Editor.isVoid(editor, element) && Editor.isBlock(editor, element)) return true;
30
30
  var type = element.type;
31
- if (['code-line', 'code-block', 'table', 'check-list-item'].includes(type)) return true;
31
+ if ([CODE_LINE, CODE_BLOCK, TABLE, CHECK_LIST_ITEM].includes(type)) return true;
32
32
  return false;
33
33
  });
34
34
  if (notMatch) return true;
@@ -2,7 +2,7 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import { Editor, Transforms, Range } from '@seafile/slate';
3
3
  import { toggleList } from '../list/transforms';
4
4
  import { getSelectedNodeByType } from '../../core';
5
- import { HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, UNORDERED_LIST, BLOCKQUOTE, TEXT_STYLE_MAP } from '../../constants';
5
+ import { HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, UNORDERED_LIST, BLOCKQUOTE, TEXT_STYLE_MAP, PARAGRAPH } from '../../constants';
6
6
  var KEY_TO_TYPE_FOR_SPACE = {
7
7
  // Title shortcut
8
8
  '#': HEADER1,
@@ -61,7 +61,7 @@ var withMarkDown = function withMarkDown(editor) {
61
61
  var selection = editor.selection;
62
62
  if (selection == null) return insertText(text);
63
63
  if (Range.isExpanded(selection)) return insertText(text);
64
- if (getSelectedNodeByType(editor, 'paragraph') == null) return insertText(text); // It must be in paragraph
64
+ if (getSelectedNodeByType(editor, PARAGRAPH) == null) return insertText(text); // It must be in paragraph
65
65
  if (text !== ' ') return insertText(text); // The value must be an input space
66
66
 
67
67
  // Gets the text before the space
@@ -4,7 +4,7 @@ import { Editor, Transforms, Range } from '@seafile/slate';
4
4
  import slugid from 'slugid';
5
5
  import copy from 'copy-to-clipboard';
6
6
  import context from '../../../../context';
7
- import { SDOC_LINK, LINK, INSERT_FILE_DISPLAY_TYPE } from '../../constants';
7
+ import { SDOC_LINK, LINK, INSERT_FILE_DISPLAY_TYPE, CODE_BLOCK, CODE_LINE, PARAGRAPH } from '../../constants';
8
8
  import { getNodeType, getSelectedElems } from '../../core';
9
9
  export var isMenuDisabled = function isMenuDisabled(editor, readonly) {
10
10
  if (readonly) return true;
@@ -13,7 +13,7 @@ export var isMenuDisabled = function isMenuDisabled(editor, readonly) {
13
13
  var notMatch = selectedElems.some(function (elem) {
14
14
  var type = elem.type;
15
15
  if (editor.isVoid(elem)) return true;
16
- if (['code-block', 'code-line', 'link'].includes(type)) return true;
16
+ if ([CODE_BLOCK, CODE_LINE, LINK].includes(type)) return true;
17
17
  return false;
18
18
  });
19
19
  if (notMatch) return true; // disabled
@@ -43,7 +43,7 @@ export var getType = function getType(editor) {
43
43
  }),
44
44
  _Editor$nodes2 = _slicedToArray(_Editor$nodes, 1),
45
45
  match = _Editor$nodes2[0];
46
- if (!match) return 'paragraph';
46
+ if (!match) return PARAGRAPH;
47
47
  var _match = _slicedToArray(match, 1),
48
48
  n = _match[0];
49
49
  return getNodeType(n);
@@ -1,13 +1,14 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import { Editor } from '@seafile/slate';
3
3
  import { getNodeType } from '../../core';
4
+ import { CODE_BLOCK } from '../../constants/element-type';
4
5
  export var isMenuDisabled = function isMenuDisabled(editor, readonly) {
5
6
  if (readonly) return true;
6
7
  if (editor.selection == null) return true;
7
8
  var _Editor$nodes = Editor.nodes(editor, {
8
9
  match: function match(n) {
9
10
  var type = getNodeType(n);
10
- if (type === 'code-block') return true; // Code block
11
+ if (type === CODE_BLOCK) return true; // Code block
11
12
  if (Editor.isVoid(editor, n)) return true; // void node
12
13
 
13
14
  return false;
@@ -3,7 +3,7 @@ import slugid from 'slugid';
3
3
  import { ReactEditor } from '@seafile/slate-react';
4
4
  import copy from 'copy-to-clipboard';
5
5
  import { toggleList } from '../../plugins/list/transforms';
6
- import { ORDERED_LIST, UNORDERED_LIST, PARAGRAPH, CHECK_LIST_ITEM, IMAGE, TABLE, CODE_BLOCK, LIST_ITEM, BLOCKQUOTE, LIST_ITEM_CORRELATION_TYPE } from '../../constants';
6
+ import { ORDERED_LIST, UNORDERED_LIST, PARAGRAPH, CHECK_LIST_ITEM, IMAGE, TABLE, CODE_BLOCK, LIST_ITEM, BLOCKQUOTE, LIST_ITEM_CORRELATION_TYPE, ADD_POSITION_OFFSET_TYPE } from '../../constants';
7
7
  export var onSetNodeType = function onSetNodeType(editor, element, type) {
8
8
  if (!type) return;
9
9
  if ([ORDERED_LIST, UNORDERED_LIST].includes(type)) {
@@ -62,10 +62,17 @@ export var onDeleteNode = function onDeleteNode(editor, element) {
62
62
  at: path
63
63
  });
64
64
  };
65
- export var getDomTopHeight = function getDomTopHeight(dom) {
66
- var HEADER_HEIGHT = 56 + 44;
65
+ export var getDomTopHeight = function getDomTopHeight(dom, slateNode) {
67
66
  var rect = dom.getBoundingClientRect();
68
- return rect.y - HEADER_HEIGHT;
67
+ var offsetY = 0;
68
+ var paddingTop = parseFloat(window.getComputedStyle(dom).getPropertyValue('padding-top'));
69
+ var lightHight = parseFloat(window.getComputedStyle(dom).getPropertyValue('line-height'));
70
+ if (ADD_POSITION_OFFSET_TYPE.includes(slateNode.type)) {
71
+ offsetY = lightHight / 2 + paddingTop - 12; // side toolbar icon is 12 px
72
+ }
73
+
74
+ var HEADER_HEIGHT = 56 + 44;
75
+ return rect.y - HEADER_HEIGHT + offsetY;
69
76
  };
70
77
  export var isVoidNode = function isVoidNode(node) {
71
78
  if (!node) return true;
@@ -69,8 +69,8 @@ var SideToolbar = function SideToolbar() {
69
69
  if (!dom.parentNode) return;
70
70
  dom = dom.parentNode;
71
71
  }
72
- var top = getDomTopHeight(dom);
73
72
  var node = ReactEditor.toSlateNode(editor, dom);
73
+ var top = getDomTopHeight(dom, node);
74
74
  var isEmpty = isVoidNode(node);
75
75
  setSidePosition({
76
76
  top: top + scrollRef.current.scrollTop,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "0.1.155",
3
+ "version": "0.1.157",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",