@seafile/sdoc-editor 0.1.154 → 0.1.156

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 (30) hide show
  1. package/dist/basic-sdk/comment/comment-decorate.js +1 -1
  2. package/dist/basic-sdk/extension/constants/color.js +2 -2
  3. package/dist/basic-sdk/extension/constants/diff-view.js +2 -2
  4. package/dist/basic-sdk/extension/constants/element-type.js +1 -1
  5. package/dist/basic-sdk/extension/constants/index.js +6 -5
  6. package/dist/basic-sdk/extension/constants/menus-config.js +0 -5
  7. package/dist/basic-sdk/extension/plugins/blockquote/helpers.js +4 -4
  8. package/dist/basic-sdk/extension/plugins/code-block/helpers.js +1 -1
  9. package/dist/basic-sdk/extension/plugins/code-block/plugin.js +5 -5
  10. package/dist/basic-sdk/extension/plugins/file-link/render-elem.js +2 -2
  11. package/dist/basic-sdk/extension/plugins/font/helpers.js +0 -3
  12. package/dist/basic-sdk/extension/plugins/header/helpers.js +4 -4
  13. package/dist/basic-sdk/extension/plugins/header/menu/index.js +1 -1
  14. package/dist/basic-sdk/extension/plugins/header/plugin.js +2 -2
  15. package/dist/basic-sdk/extension/plugins/link/helpers.js +3 -3
  16. package/dist/basic-sdk/extension/plugins/list/helpers.js +2 -2
  17. package/dist/basic-sdk/extension/plugins/markdown/plugin.js +2 -2
  18. package/dist/basic-sdk/extension/plugins/sdoc-link/helpers.js +3 -3
  19. package/dist/basic-sdk/extension/plugins/sdoc-link/render-elem.js +2 -2
  20. package/dist/basic-sdk/extension/plugins/table/constants/index.js +3 -3
  21. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/cell-bg-color-menu.js +13 -9
  22. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.js +2 -2
  23. package/dist/basic-sdk/extension/plugins/table/render/render-cell.js +11 -11
  24. package/dist/basic-sdk/extension/plugins/text-style/helpers.js +2 -1
  25. package/dist/basic-sdk/extension/plugins/text-style/render-elem.js +2 -2
  26. package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +11 -4
  27. package/dist/basic-sdk/extension/toolbar/side-toolbar/index.js +1 -1
  28. package/dist/basic-sdk/hooks/use-color-context.js +10 -10
  29. package/dist/basic-sdk/views/diff-viewer.js +1 -1
  30. package/package.json +1 -1
@@ -23,7 +23,7 @@ export var commentDecorate = function commentDecorate(editor) {
23
23
  }
24
24
  };
25
25
  // rgba prevents occlusion of the cursor
26
- decoration['computed_bg_color'] = 'rgba(129, 237, 247, 0.5)';
26
+ decoration['computed_background_color'] = 'rgba(129, 237, 247, 0.5)';
27
27
  decoration['comment_count'] = unresolvedComments === null || unresolvedComments === void 0 ? void 0 : unresolvedComments.length;
28
28
  decorations.push(decoration);
29
29
  }
@@ -268,9 +268,9 @@ export var DEFAULT_FONT_COLOR = '#333333';
268
268
  // default last used color
269
269
  export var DEFAULT_LAST_USED_FONT_COLOR = '#FFFF00';
270
270
  export var DEFAULT_LAST_USED_HIGHLIGHT_COLOR = '#FF0000';
271
- export var DEFAULT_LAST_USED_TABLE_CELL_BG_COLOR = '#FF0000';
271
+ export var DEFAULT_LAST_USED_TABLE_CELL_BACKGROUND_COLOR = '#FF0000';
272
272
 
273
273
  // recent used colors key
274
274
  export var RECENT_USED_HIGHLIGHT_COLORS_KEY = 'sdoc-recent-used-highlight-colors';
275
275
  export var RECENT_USED_FONT_COLORS_KEY = 'sdoc-recent-used-font-colors';
276
- export var RECENT_USED_TABLE_CELL_BG_COLORS_KEY = 'sdoc-recent-used-bg-colors';
276
+ export var RECENT_USED_TABLE_CELL_BACKGROUND_COLORS_KEY = 'sdoc-recent-used-bg-colors';
@@ -5,10 +5,10 @@ export var DIFF_TYPE = {
5
5
  COMMON: 'common'
6
6
  };
7
7
  export var DELETED_STYLE = {
8
- computed_bg_color: '#ffeef0',
8
+ computed_background_color: '#ffeef0',
9
9
  color: 'rgb(165, 32, 21)'
10
10
  };
11
11
  export var ADDED_STYLE = {
12
- computed_bg_color: '#e6ffed',
12
+ computed_background_color: '#e6ffed',
13
13
  color: 'rgb(137, 181, 66)'
14
14
  };
@@ -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';
@@ -3,14 +3,13 @@ var _HEADER_TITLE_MAP;
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';
6
- export { DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_LIST, DEFAULT_FONT_COLOR, RECENT_USED_HIGHLIGHT_COLORS_KEY, RECENT_USED_FONT_COLORS_KEY, RECENT_USED_TABLE_CELL_BG_COLORS_KEY, DEFAULT_LAST_USED_FONT_COLOR, DEFAULT_LAST_USED_HIGHLIGHT_COLOR, DEFAULT_LAST_USED_TABLE_CELL_BG_COLOR } from './color';
6
+ export { DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_LIST, DEFAULT_FONT_COLOR, RECENT_USED_HIGHLIGHT_COLORS_KEY, RECENT_USED_FONT_COLORS_KEY, RECENT_USED_TABLE_CELL_BACKGROUND_COLORS_KEY, DEFAULT_LAST_USED_FONT_COLOR, DEFAULT_LAST_USED_HIGHLIGHT_COLOR, DEFAULT_LAST_USED_TABLE_CELL_BACKGROUND_COLOR } from './color';
7
7
  export { FONT_SIZE, DEFAULT_FONT, FONT, GOOGLE_FONT_CLASS, RECENT_USED_FONTS_KEY, SDOC_FONT_SIZE } from './font';
8
8
  export { DIFF_TYPE, ADDED_STYLE, DELETED_STYLE } from './diff-view';
9
9
  export { KEYBOARD, MAC_HOTKEYS, WIN_HOTKEYS } from './keyboard';
10
- export { UNDO, REDO, TEXT_STYLE, TEXT_STYLE_MAP, TEXT_STYLE_MORE, TEXT_ALIGN, REMOVE_TABLE, BG_COLOR, CLEAR_FORMAT, MENUS_CONFIG_MAP, SIDE_MENUS_CONFIG } from './menus-config';
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,8 @@ 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];
25
26
  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 };
@@ -6,7 +6,6 @@ export var UNDO = 'undo';
6
6
  export var REDO = 'redo';
7
7
  export var CLEAR_FORMAT = 'clear_format';
8
8
  export var REMOVE_TABLE = 'remove_table';
9
- export var BG_COLOR = 'bg_color';
10
9
 
11
10
  // text style
12
11
  var ITALIC = 'italic';
@@ -142,10 +141,6 @@ export var MENUS_CONFIG_MAP = (_MENUS_CONFIG_MAP = {}, _defineProperty(_MENUS_CO
142
141
  iconClass: 'sdocfont sdoc-redo',
143
142
  text: 'Redo',
144
143
  type: 'redo'
145
- }), _defineProperty(_MENUS_CONFIG_MAP, BG_COLOR, {
146
- id: "sdoc_".concat(BG_COLOR),
147
- iconClass: 'sdocfont sdoc-bg-color',
148
- text: 'Background_color'
149
144
  }), _defineProperty(_MENUS_CONFIG_MAP, CLEAR_FORMAT, {
150
145
  id: "sdoc_".concat(CLEAR_FORMAT),
151
146
  iconClass: 'sdocfont sdoc-format-clear',
@@ -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
  });
@@ -98,8 +98,8 @@ var FileLink = function FileLink(_ref) {
98
98
  } else if (element.DELETE) {
99
99
  style = _objectSpread({}, DELETED_STYLE);
100
100
  }
101
- if (style.computed_bg_color) {
102
- style['backgroundColor'] = style.computed_bg_color;
101
+ if (style.computed_background_color) {
102
+ style['backgroundColor'] = style.computed_background_color;
103
103
  }
104
104
  return /*#__PURE__*/React.createElement("span", Object.assign({}, attributes, {
105
105
  "data-id": element.id,
@@ -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);
@@ -97,8 +97,8 @@ var SdocFileLink = function SdocFileLink(_ref) {
97
97
  } else if (element.DELETE) {
98
98
  style = _objectSpread({}, DELETED_STYLE);
99
99
  }
100
- if (style.computed_bg_color) {
101
- style['backgroundColor'] = style.computed_bg_color;
100
+ if (style.computed_background_color) {
101
+ style['backgroundColor'] = style.computed_background_color;
102
102
  }
103
103
  return /*#__PURE__*/React.createElement("span", Object.assign({}, attributes, {
104
104
  "data-id": element.id,
@@ -21,8 +21,8 @@ export var TABLE_ELEMENT_POSITION = {
21
21
  AFTER: 'after',
22
22
  BEFORE: 'before'
23
23
  };
24
- export var SELECTED_TABLE_CELL_BG_COLOR = '#dee8fe';
25
- export var STYLE_KEY = {
24
+ export var SELECTED_TABLE_CELL_BACKGROUND_COLOR = '#dee8fe';
25
+ export var TABLE_CELL_STYLE = {
26
26
  TEXT_ALIGN: 'textAlign',
27
- BG_COLOR: 'bg_color'
27
+ BACKGROUND_COLOR: 'bg_color'
28
28
  };
@@ -1,17 +1,21 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import React, { useCallback } from 'react';
3
3
  import { ColorMenu } from '../../../../commons';
4
- import { MENUS_CONFIG_MAP, BG_COLOR, RECENT_USED_TABLE_CELL_BG_COLORS_KEY } from '../../../../constants';
4
+ import { RECENT_USED_TABLE_CELL_BACKGROUND_COLORS_KEY } from '../../../../constants';
5
5
  import { setCellStyle } from '../../helpers';
6
6
  import { useColorContext } from '../../../../../hooks/use-color-context';
7
- var CellBgColorMenu = function CellBgColorMenu(_ref) {
7
+ var menuConfig = {
8
+ id: 'sdoc_background_color',
9
+ iconClass: 'sdocfont sdoc-bg-color',
10
+ text: 'Background_color'
11
+ };
12
+ var CellBackgroundColorMenu = function CellBackgroundColorMenu(_ref) {
8
13
  var isRichEditor = _ref.isRichEditor,
9
14
  className = _ref.className,
10
15
  editor = _ref.editor;
11
16
  var _useColorContext = useColorContext(),
12
- lastUsedTableCellBgColor = _useColorContext.lastUsedTableCellBgColor,
13
- updateLastUsedTableCellBgColor = _useColorContext.updateLastUsedTableCellBgColor;
14
- var menuConfig = MENUS_CONFIG_MAP[BG_COLOR];
17
+ lastUsedTableCellBackgroundColor = _useColorContext.lastUsedTableCellBackgroundColor,
18
+ updateLastUsedTableCellBackgroundColor = _useColorContext.updateLastUsedTableCellBackgroundColor;
15
19
  var setColor = useCallback(function (color) {
16
20
  setCellStyle(editor, {
17
21
  bg_color: color
@@ -25,11 +29,11 @@ var CellBgColorMenu = function CellBgColorMenu(_ref) {
25
29
  }, menuConfig), {}, {
26
30
  onMouseDown: function onMouseDown() {},
27
31
  setColor: setColor,
28
- recentUsedColorsKey: RECENT_USED_TABLE_CELL_BG_COLORS_KEY,
29
- lastUsedColor: lastUsedTableCellBgColor,
30
- updateLastUsedColor: updateLastUsedTableCellBgColor,
32
+ recentUsedColorsKey: RECENT_USED_TABLE_CELL_BACKGROUND_COLORS_KEY,
33
+ lastUsedColor: lastUsedTableCellBackgroundColor,
34
+ updateLastUsedColor: updateLastUsedTableCellBackgroundColor,
31
35
  popoverClassName: 'sdoc-table-cell-bg-colors-popover'
32
36
  });
33
37
  return /*#__PURE__*/React.createElement(ColorMenu, props);
34
38
  };
35
- export default CellBgColorMenu;
39
+ export default CellBackgroundColorMenu;
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { withTranslation } from 'react-i18next';
3
3
  import { MenuGroup } from '../../../../commons';
4
4
  import { isAllInTable } from '../../helpers';
5
- import CellBgColorMenu from './cell-bg-color-menu';
5
+ import CellBackgroundColorMenu from './cell-bg-color-menu';
6
6
  import CellTextAlignMenu from './cell-text-align-menu';
7
7
  import RemoveTable from './remove-table-menu';
8
8
  import TableColumnMenu from './table-column-menu';
@@ -25,7 +25,7 @@ var ActiveTableMenu = function ActiveTableMenu(_ref) {
25
25
  }), /*#__PURE__*/React.createElement(TableRowMenu, {
26
26
  editor: editor,
27
27
  readonly: readonly
28
- }), /*#__PURE__*/React.createElement(CellBgColorMenu, {
28
+ }), /*#__PURE__*/React.createElement(CellBackgroundColorMenu, {
29
29
  editor: editor,
30
30
  isRichEditor: isRichEditor,
31
31
  className: className,
@@ -6,7 +6,7 @@ import { Transforms } from '@seafile/slate';
6
6
  import ObjectUtils from '../../../../utils/object-utils';
7
7
  import { findPath, focusEditor } from '../../../core';
8
8
  import { useResizeHandlersContext, useTableSelectedRangeContext } from './hooks';
9
- import { EMPTY_SELECTED_RANGE, SELECTED_TABLE_CELL_BG_COLOR, STYLE_KEY } from '../constants';
9
+ import { EMPTY_SELECTED_RANGE, SELECTED_TABLE_CELL_BACKGROUND_COLOR, TABLE_CELL_STYLE } from '../constants';
10
10
  import { getTableColumns, getCellColumn, colorBlend } from '../helpers';
11
11
  var TableCell = function TableCell(_ref) {
12
12
  var attributes = _ref.attributes,
@@ -39,16 +39,16 @@ var TableCell = function TableCell(_ref) {
39
39
  });
40
40
  }, [editor, element]);
41
41
  var style = attributes.style || {};
42
- if (ObjectUtils.hasProperty(element.style, STYLE_KEY.TEXT_ALIGN)) {
43
- style[STYLE_KEY.TEXT_ALIGN] = element.style[STYLE_KEY.TEXT_ALIGN];
42
+ if (ObjectUtils.hasProperty(element.style, TABLE_CELL_STYLE.TEXT_ALIGN)) {
43
+ style[TABLE_CELL_STYLE.TEXT_ALIGN] = element.style[TABLE_CELL_STYLE.TEXT_ALIGN];
44
44
  }
45
45
  if (isSelected) {
46
- style['backgroundColor'] = SELECTED_TABLE_CELL_BG_COLOR;
46
+ style['backgroundColor'] = SELECTED_TABLE_CELL_BACKGROUND_COLOR;
47
47
  }
48
- if (ObjectUtils.hasProperty(element.style, STYLE_KEY.BG_COLOR)) {
49
- var color = element.style[STYLE_KEY.BG_COLOR];
48
+ if (ObjectUtils.hasProperty(element.style, TABLE_CELL_STYLE.BACKGROUND_COLOR)) {
49
+ var color = element.style[TABLE_CELL_STYLE.BACKGROUND_COLOR];
50
50
  if (color && color !== 'transparent' && color !== 'unset') {
51
- style['backgroundColor'] = isSelected ? colorBlend(SELECTED_TABLE_CELL_BG_COLOR, color, 0.9) : color;
51
+ style['backgroundColor'] = isSelected ? colorBlend(SELECTED_TABLE_CELL_BACKGROUND_COLOR, color, 0.9) : color;
52
52
  }
53
53
  }
54
54
  return /*#__PURE__*/React.createElement("div", Object.assign({}, attributes, {
@@ -85,11 +85,11 @@ function renderTableCell(props) {
85
85
 
86
86
  // const cellValue = element;
87
87
  var style = attributes.style || {};
88
- if (ObjectUtils.hasProperty(element.style, STYLE_KEY.TEXT_ALIGN)) {
89
- style[STYLE_KEY.TEXT_ALIGN] = element[STYLE_KEY.TEXT_ALIGN];
88
+ if (ObjectUtils.hasProperty(element.style, TABLE_CELL_STYLE.TEXT_ALIGN)) {
89
+ style[TABLE_CELL_STYLE.TEXT_ALIGN] = element[TABLE_CELL_STYLE.TEXT_ALIGN];
90
90
  }
91
- if (ObjectUtils.hasProperty(element.style, STYLE_KEY.BG_COLOR) && element.style[STYLE_KEY.BG_COLOR]) {
92
- style['backgroundColor'] = element.style[STYLE_KEY.BG_COLOR];
91
+ if (ObjectUtils.hasProperty(element.style, TABLE_CELL_STYLE.BACKGROUND_COLOR) && element.style[TABLE_CELL_STYLE.BACKGROUND_COLOR]) {
92
+ style['backgroundColor'] = element.style[TABLE_CELL_STYLE.BACKGROUND_COLOR];
93
93
  }
94
94
  var column = getCellColumn(editor, element);
95
95
  var width = column.width;
@@ -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;
@@ -17,8 +17,8 @@ var renderText = function renderText(props, editor) {
17
17
  style['display'] = 'inline-block';
18
18
  style['minWidth'] = '2px';
19
19
  }
20
- if (leaf.computed_bg_color) {
21
- style['backgroundColor'] = leaf.computed_bg_color;
20
+ if (leaf.computed_background_color) {
21
+ style['backgroundColor'] = leaf.computed_background_color;
22
22
  }
23
23
  if (leaf.color) {
24
24
  style['color'] = leaf.color;
@@ -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,
@@ -1,6 +1,6 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import React, { useContext, useState } from 'react';
3
- import { DEFAULT_LAST_USED_FONT_COLOR, DEFAULT_LAST_USED_HIGHLIGHT_COLOR, DEFAULT_LAST_USED_TABLE_CELL_BG_COLOR } from '../extension/constants';
3
+ import { DEFAULT_LAST_USED_FONT_COLOR, DEFAULT_LAST_USED_HIGHLIGHT_COLOR, DEFAULT_LAST_USED_TABLE_CELL_BACKGROUND_COLOR } from '../extension/constants';
4
4
  var ColorContext = React.createContext(null);
5
5
  export var ColorProvider = function ColorProvider(props) {
6
6
  var _useState = useState(DEFAULT_LAST_USED_FONT_COLOR),
@@ -11,18 +11,18 @@ export var ColorProvider = function ColorProvider(props) {
11
11
  _useState4 = _slicedToArray(_useState3, 2),
12
12
  lastUsedHighlightColor = _useState4[0],
13
13
  updateLastUsedHighlightColor = _useState4[1];
14
- var _useState5 = useState(DEFAULT_LAST_USED_TABLE_CELL_BG_COLOR),
14
+ var _useState5 = useState(DEFAULT_LAST_USED_TABLE_CELL_BACKGROUND_COLOR),
15
15
  _useState6 = _slicedToArray(_useState5, 2),
16
- lastUsedTableCellBgColor = _useState6[0],
17
- updateLastUsedTableCellBgColor = _useState6[1];
16
+ lastUsedTableCellBackgroundColor = _useState6[0],
17
+ updateLastUsedTableCellBackgroundColor = _useState6[1];
18
18
  return /*#__PURE__*/React.createElement(ColorContext.Provider, {
19
19
  value: {
20
20
  lastUsedFontColor: lastUsedFontColor,
21
21
  updateLastUsedFontColor: updateLastUsedFontColor,
22
22
  lastUsedHighlightColor: lastUsedHighlightColor,
23
23
  updateLastUsedHighlightColor: updateLastUsedHighlightColor,
24
- lastUsedTableCellBgColor: lastUsedTableCellBgColor,
25
- updateLastUsedTableCellBgColor: updateLastUsedTableCellBgColor
24
+ lastUsedTableCellBackgroundColor: lastUsedTableCellBackgroundColor,
25
+ updateLastUsedTableCellBackgroundColor: updateLastUsedTableCellBackgroundColor
26
26
  }
27
27
  }, props.children);
28
28
  };
@@ -33,16 +33,16 @@ export var useColorContext = function useColorContext() {
33
33
  }
34
34
  var lastUsedFontColor = context.lastUsedFontColor,
35
35
  lastUsedHighlightColor = context.lastUsedHighlightColor,
36
- lastUsedTableCellBgColor = context.lastUsedTableCellBgColor,
36
+ lastUsedTableCellBackgroundColor = context.lastUsedTableCellBackgroundColor,
37
37
  updateLastUsedFontColor = context.updateLastUsedFontColor,
38
38
  updateLastUsedHighlightColor = context.updateLastUsedHighlightColor,
39
- updateLastUsedTableCellBgColor = context.updateLastUsedTableCellBgColor;
39
+ updateLastUsedTableCellBackgroundColor = context.updateLastUsedTableCellBackgroundColor;
40
40
  return {
41
41
  lastUsedFontColor: lastUsedFontColor,
42
42
  updateLastUsedFontColor: updateLastUsedFontColor,
43
43
  lastUsedHighlightColor: lastUsedHighlightColor,
44
44
  updateLastUsedHighlightColor: updateLastUsedHighlightColor,
45
- lastUsedTableCellBgColor: lastUsedTableCellBgColor,
46
- updateLastUsedTableCellBgColor: updateLastUsedTableCellBgColor
45
+ lastUsedTableCellBackgroundColor: lastUsedTableCellBackgroundColor,
46
+ updateLastUsedTableCellBackgroundColor: updateLastUsedTableCellBackgroundColor
47
47
  };
48
48
  };
@@ -29,7 +29,7 @@ var DiffViewer = function DiffViewer(_ref) {
29
29
  return /*#__PURE__*/React.createElement("span", {
30
30
  className: "d-inline-block p-1",
31
31
  style: {
32
- backgroundColor: style.computed_bg_color,
32
+ backgroundColor: style.computed_background_color,
33
33
  width: 'fit-content',
34
34
  height: 'fit-content'
35
35
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "0.1.154",
3
+ "version": "0.1.156",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",