@seafile/sdoc-editor 0.1.134 → 0.1.135

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 (29) hide show
  1. package/dist/basic-sdk/assets/css/default.css +6 -4
  2. package/dist/basic-sdk/assets/css/sdoc-editor-plugins.css +20 -2
  3. package/dist/basic-sdk/extension/constants/element-type.js +2 -0
  4. package/dist/basic-sdk/extension/constants/font.js +4 -77
  5. package/dist/basic-sdk/extension/constants/index.js +5 -6
  6. package/dist/basic-sdk/extension/constants/keyboard.js +34 -2
  7. package/dist/basic-sdk/extension/plugins/font/helpers.js +11 -13
  8. package/dist/basic-sdk/extension/plugins/font/menu/font-size/index.js +3 -16
  9. package/dist/basic-sdk/extension/plugins/header/helpers.js +16 -5
  10. package/dist/basic-sdk/extension/plugins/header/index.js +2 -2
  11. package/dist/basic-sdk/extension/plugins/header/menu/index.js +12 -13
  12. package/dist/basic-sdk/extension/plugins/header/menu/style.css +4 -25
  13. package/dist/basic-sdk/extension/plugins/header/plugin.js +29 -9
  14. package/dist/basic-sdk/extension/plugins/header/render-elem.js +44 -8
  15. package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +0 -12
  16. package/dist/basic-sdk/extension/plugins/text-style/render-elem.js +3 -20
  17. package/dist/basic-sdk/extension/render/render-element.js +16 -3
  18. package/dist/basic-sdk/outline/index.js +1 -1
  19. package/dist/basic-sdk/outline/outline-item.js +7 -1
  20. package/dist/basic-sdk/utils/event-handler.js +5 -11
  21. package/package.json +1 -1
  22. package/public/locales/cs/sdoc-editor.json +3 -1
  23. package/public/locales/de/sdoc-editor.json +3 -1
  24. package/public/locales/en/sdoc-editor.json +3 -1
  25. package/public/locales/es/sdoc-editor.json +3 -1
  26. package/public/locales/fr/sdoc-editor.json +3 -1
  27. package/public/locales/it/sdoc-editor.json +3 -1
  28. package/public/locales/ru/sdoc-editor.json +148 -146
  29. package/public/locales/zh_CN/sdoc-editor.json +3 -1
@@ -1,8 +1,10 @@
1
1
  /* modify default css */
2
- .sdoc-editor-container .article {
3
- font-size: 16px;
2
+ .sdoc-editor-container .article,
3
+ .sdoc-editor-container .sdoc-code-block-pre {
4
+ font-size: 11pt;
4
5
  }
5
6
 
6
- .sdoc-editor-container .sdoc-code-block-pre {
7
- font-size: 14px;
7
+ .sdoc-editor-container .article p {
8
+ padding: 0;
9
+ margin: 0;
8
10
  }
@@ -1,6 +1,24 @@
1
1
  /* header */
2
- .sdoc-editor-container .article h2 {
3
- border-bottom: none;
2
+ .sdoc-editor-container .article .sdoc-header-title,
3
+ .sdoc-editor-container .article .sdoc-header-subtitle,
4
+ .sdoc-editor-container .article .sdoc-header-1,
5
+ .sdoc-editor-container .article .sdoc-header-2,
6
+ .sdoc-editor-container .article .sdoc-header-3,
7
+ .sdoc-editor-container .article .sdoc-header-4,
8
+ .sdoc-editor-container .article .sdoc-header-5,
9
+ .sdoc-editor-container .article .sdoc-header-6 {
10
+ line-height: 1.1;
11
+ margin: 1.2em 0 0.4em;
12
+ font-weight: bold;
13
+ }
14
+
15
+ .sdoc-editor-container .article .sdoc-header-2,
16
+ .sdoc-editor-container .article .sdoc-header-3 {
17
+ line-height: 1.5;
18
+ }
19
+
20
+ .sdoc-editor-container .article .sdoc-header-4 {
21
+ line-height: 1.125;
4
22
  }
5
23
 
6
24
  /* list */
@@ -7,6 +7,8 @@ export var SUPERSCRIPT = 'superscript';
7
7
  export var SUBSCRIPT = 'subscript';
8
8
  export var COLOR = 'color';
9
9
  export var HIGHLIGHT_COLOR = 'highlight-color';
10
+ export var TITLE = 'title';
11
+ export var SUBTITLE = 'subtitle';
10
12
  export var HEADER = 'header';
11
13
  export var HEADER1 = 'header1';
12
14
  export var HEADER2 = 'header2';
@@ -1,5 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- var _HEADER_FONT_SIZE;
2
+ var _SDOC_FONT_SIZE;
3
3
  import * as ELEMENT_TYPE from './element-type';
4
4
 
5
5
  // font family
@@ -30,82 +30,7 @@ var FONT_WEIGHT_400_AND_ODD = [100, 300, 400, 500, 700, 900];
30
30
  var FONT_WEIGHT_400_700 = [400, 700];
31
31
  var FONT_WEIGHT_100_400_700 = [100, 400, 700];
32
32
  var FONT_WEIGHT_100_400_700_800 = [100, 400, 700, 800];
33
- export var SPECIAL_FONT_SIZE_NAME = ['初号', '小初', '一号', '小一', '二号', '小二', '三号', '小三', '四号', '小四', '五号', '小五'];
34
- export var DEFAULT_COMMON_FONT_SIZE = 16;
35
- export var DEFAULT_CODE_FONT_SIZE = 14;
36
33
  export var FONT_SIZE = [{
37
- name: '初号',
38
- value: 42,
39
- langOrder: {
40
- 'zh-cn': 0
41
- }
42
- }, {
43
- name: '小初',
44
- value: 36,
45
- langOrder: {
46
- 'zh-cn': 0
47
- }
48
- }, {
49
- name: '一号',
50
- value: 26,
51
- langOrder: {
52
- 'zh-cn': 0
53
- }
54
- }, {
55
- name: '小一',
56
- value: 24,
57
- langOrder: {
58
- 'zh-cn': 0
59
- }
60
- }, {
61
- name: '二号',
62
- value: 22,
63
- langOrder: {
64
- 'zh-cn': 0
65
- }
66
- }, {
67
- name: '小二',
68
- value: 18,
69
- langOrder: {
70
- 'zh-cn': 0
71
- }
72
- }, {
73
- name: '三号',
74
- value: 16,
75
- langOrder: {
76
- 'zh-cn': 0
77
- }
78
- }, {
79
- name: '小三',
80
- value: 15,
81
- langOrder: {
82
- 'zh-cn': 0
83
- }
84
- }, {
85
- name: '四号',
86
- value: 14,
87
- langOrder: {
88
- 'zh-cn': 0
89
- }
90
- }, {
91
- name: '小四',
92
- value: 12,
93
- langOrder: {
94
- 'zh-cn': 0
95
- }
96
- }, {
97
- name: '五号',
98
- value: 10.5,
99
- langOrder: {
100
- 'zh-cn': 0
101
- }
102
- }, {
103
- name: '小五',
104
- value: 9,
105
- langOrder: {
106
- 'zh-cn': 0
107
- }
108
- }, {
109
34
  name: '9',
110
35
  value: 9
111
36
  }, {
@@ -595,4 +520,6 @@ export var FONT = [
595
520
  } // 楷体
596
521
  ];
597
522
 
598
- export var HEADER_FONT_SIZE = (_HEADER_FONT_SIZE = {}, _defineProperty(_HEADER_FONT_SIZE, ELEMENT_TYPE.HEADER1, 32), _defineProperty(_HEADER_FONT_SIZE, ELEMENT_TYPE.HEADER2, 28), _defineProperty(_HEADER_FONT_SIZE, ELEMENT_TYPE.HEADER3, 24), _defineProperty(_HEADER_FONT_SIZE, ELEMENT_TYPE.HEADER4, 18), _defineProperty(_HEADER_FONT_SIZE, ELEMENT_TYPE.HEADER5, 16), _defineProperty(_HEADER_FONT_SIZE, ELEMENT_TYPE.HEADER6, 14), _HEADER_FONT_SIZE);
523
+ export var SDOC_FONT_SIZE = (_SDOC_FONT_SIZE = {
524
+ DEFAULT: 11
525
+ }, _defineProperty(_SDOC_FONT_SIZE, ELEMENT_TYPE.TITLE, 26), _defineProperty(_SDOC_FONT_SIZE, ELEMENT_TYPE.SUBTITLE, 15), _defineProperty(_SDOC_FONT_SIZE, ELEMENT_TYPE.HEADER1, 20), _defineProperty(_SDOC_FONT_SIZE, ELEMENT_TYPE.HEADER2, 16), _defineProperty(_SDOC_FONT_SIZE, ELEMENT_TYPE.HEADER3, 14), _defineProperty(_SDOC_FONT_SIZE, ELEMENT_TYPE.HEADER4, 12), _defineProperty(_SDOC_FONT_SIZE, ELEMENT_TYPE.HEADER5, 11), _defineProperty(_SDOC_FONT_SIZE, ELEMENT_TYPE.HEADER6, 11), _defineProperty(_SDOC_FONT_SIZE, ELEMENT_TYPE.CODE_LINE, 11), _SDOC_FONT_SIZE);
@@ -2,10 +2,10 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  var _MENUS_CONFIG_MAP, _HEADER_TITLE_MAP;
3
3
  // extension plugin
4
4
  import * as ELEMENT_TYPE from './element-type';
5
- import { BLOCKQUOTE, HEADER, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, PARAGRAPH, BOLD, ITALIC, UNDERLINE, STRIKETHROUGH, SUPERSCRIPT, SUBSCRIPT, ORDERED_LIST, UNORDERED_LIST, LIST_ITEM, LIST_LIC, CHECK_LIST, CHECK_LIST_ITEM, LINK, HTML, CODE_BLOCK, CODE_LINE, IMAGE, TABLE, TABLE_CELL, TABLE_ROW, FORMULA, COLUMN, TEXT_STYLE, TEXT_STYLE_MORE, BOLD_ITALIC, TEXT_ALIGN, ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER, CLEAR_FORMAT, COLOR, HIGHLIGHT_COLOR, SDOC_LINK } from './element-type';
6
- import KEYBOARD from './keyboard';
5
+ import { BLOCKQUOTE, HEADER, TITLE, SUBTITLE, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, PARAGRAPH, BOLD, ITALIC, UNDERLINE, STRIKETHROUGH, SUPERSCRIPT, SUBSCRIPT, ORDERED_LIST, UNORDERED_LIST, LIST_ITEM, LIST_LIC, CHECK_LIST, CHECK_LIST_ITEM, LINK, HTML, CODE_BLOCK, CODE_LINE, IMAGE, TABLE, TABLE_CELL, TABLE_ROW, FORMULA, COLUMN, TEXT_STYLE, TEXT_STYLE_MORE, BOLD_ITALIC, TEXT_ALIGN, ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER, CLEAR_FORMAT, COLOR, HIGHLIGHT_COLOR, SDOC_LINK } from './element-type';
6
+ import { KEYBOARD, MAC_HOTKEYS, WIN_HOTKEYS } from './keyboard';
7
7
  import { 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';
8
- import { SPECIAL_FONT_SIZE_NAME, DEFAULT_COMMON_FONT_SIZE, FONT_SIZE, DEFAULT_FONT, FONT, GOOGLE_FONT_CLASS, RECENT_USED_FONTS_KEY, HEADER_FONT_SIZE, DEFAULT_CODE_FONT_SIZE } from './font';
8
+ import { FONT_SIZE, DEFAULT_FONT, FONT, GOOGLE_FONT_CLASS, RECENT_USED_FONTS_KEY, SDOC_FONT_SIZE } from './font';
9
9
 
10
10
  // history
11
11
  export var UNDO = 'undo';
@@ -137,7 +137,7 @@ export var MENUS_CONFIG_MAP = (_MENUS_CONFIG_MAP = {}, _defineProperty(_MENUS_CO
137
137
  text: 'Insert'
138
138
  }), _MENUS_CONFIG_MAP);
139
139
  export var HEADERS = [HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6];
140
- export var HEADER_TITLE_MAP = (_HEADER_TITLE_MAP = {}, _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);
140
+ 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);
141
141
  export var DIFF_TYPE = {
142
142
  ADD: 'add',
143
143
  DELETE: 'delete',
@@ -156,7 +156,6 @@ export var ADDED_STYLE = {
156
156
  computed_bg_color: '#e6ffed',
157
157
  color: 'rgb(137, 181, 66)'
158
158
  };
159
- export var HEADER_TYPE_ARRAY = ['header1', 'header2', 'header3', 'header4', 'header5', 'header6'];
160
159
  export var LIST_TYPE_ARRAY = ['unordered_list', 'ordered_list'];
161
160
  export var TRANSPARENT = 'transparent';
162
161
  export var CLIPBOARD_FORMAT_KEY = 'x-slate-fragment';
@@ -232,4 +231,4 @@ export var SIDE_MENUS_CONFIG = [{
232
231
  type: BLOCKQUOTE,
233
232
  title: 'Quote'
234
233
  }];
235
- export { BLOCKQUOTE, HEADER, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, PARAGRAPH, BOLD, ITALIC, UNDERLINE, STRIKETHROUGH, SUPERSCRIPT, SUBSCRIPT, ORDERED_LIST, UNORDERED_LIST, LIST_ITEM, LIST_LIC, CHECK_LIST, CHECK_LIST_ITEM, LINK, HTML, CODE_BLOCK, CODE_LINE, IMAGE, TABLE, TABLE_CELL, TABLE_ROW, FORMULA, COLUMN, TEXT_STYLE, TEXT_STYLE_MORE, BOLD_ITALIC, TEXT_ALIGN, ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER, ELEMENT_TYPE, KEYBOARD, DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_LIST, CLEAR_FORMAT, 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, SPECIAL_FONT_SIZE_NAME, DEFAULT_COMMON_FONT_SIZE, DEFAULT_CODE_FONT_SIZE, FONT_SIZE, DEFAULT_FONT, FONT, GOOGLE_FONT_CLASS, RECENT_USED_FONTS_KEY, HEADER_FONT_SIZE, SDOC_LINK };
234
+ export { BLOCKQUOTE, HEADER, TITLE, SUBTITLE, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, PARAGRAPH, BOLD, ITALIC, UNDERLINE, STRIKETHROUGH, SUPERSCRIPT, SUBSCRIPT, ORDERED_LIST, UNORDERED_LIST, LIST_ITEM, LIST_LIC, CHECK_LIST, CHECK_LIST_ITEM, LINK, HTML, CODE_BLOCK, CODE_LINE, IMAGE, TABLE, TABLE_CELL, TABLE_ROW, FORMULA, COLUMN, TEXT_STYLE, TEXT_STYLE_MORE, BOLD_ITALIC, TEXT_ALIGN, ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER, ELEMENT_TYPE, KEYBOARD, MAC_HOTKEYS, WIN_HOTKEYS, DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_LIST, CLEAR_FORMAT, 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, FONT_SIZE, DEFAULT_FONT, FONT, GOOGLE_FONT_CLASS, RECENT_USED_FONTS_KEY, SDOC_FONT_SIZE, SDOC_LINK };
@@ -1,7 +1,39 @@
1
- var KEYBOARD = {
1
+ export var KEYBOARD = {
2
2
  UP: 'up',
3
3
  RIGHT: 'right',
4
4
  DOWN: 'down',
5
5
  LEFT: 'left'
6
6
  };
7
- export default KEYBOARD;
7
+ export var MAC_HOTKEYS = {
8
+ paragraph: '⌘+⌥+0',
9
+ title: '⌘+⌥+.',
10
+ subtitle: '⌘+⌥+,',
11
+ header1: '⌘+⌥+1',
12
+ header2: '⌘+⌥+2',
13
+ header3: '⌘+⌥+3',
14
+ header4: '⌘+⌥+4',
15
+ header5: '⌘+⌥+5',
16
+ header6: '⌘+⌥+6'
17
+ };
18
+ export var MAC_HOTKEYS_EVENT = {
19
+ paragraph: 'cmd+opt+0',
20
+ title: 'cmd+opt+.',
21
+ subtitle: 'cmd+opt+,',
22
+ header1: 'cmd+opt+1',
23
+ header2: 'cmd+opt+2',
24
+ header3: 'cmd+opt+3',
25
+ header4: 'cmd+opt+4',
26
+ header5: 'cmd+opt+5',
27
+ header6: 'cmd+opt+6'
28
+ };
29
+ export var WIN_HOTKEYS = {
30
+ paragraph: 'ctrl+alt+0',
31
+ title: 'ctrl+alt+.',
32
+ subtitle: 'ctrl+alt+,',
33
+ header1: 'ctrl+alt+1',
34
+ header2: 'ctrl+alt+2',
35
+ header3: 'ctrl+alt+3',
36
+ header4: 'ctrl+alt+4',
37
+ header5: 'ctrl+alt+5',
38
+ header6: 'ctrl+alt+6'
39
+ };
@@ -1,6 +1,7 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
1
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
3
  import { Editor, Element } from '@seafile/slate';
3
- import { CODE_BLOCK, DEFAULT_COMMON_FONT_SIZE, IMAGE, FONT_SIZE, SPECIAL_FONT_SIZE_NAME, DEFAULT_FONT, GOOGLE_FONT_CLASS, FONT, HEADER_FONT_SIZE, HEADERS, ELEMENT_TYPE, DEFAULT_CODE_FONT_SIZE } from '../../constants';
4
+ import { CODE_BLOCK, IMAGE, DEFAULT_FONT, GOOGLE_FONT_CLASS, FONT, SDOC_FONT_SIZE, HEADERS, TITLE, SUBTITLE, CODE_LINE } from '../../constants';
4
5
  import { focusEditor, getParentNode } from '../../core';
5
6
  import context from '../../../../context';
6
7
  import { isMac } from '../../../../utils';
@@ -28,14 +29,16 @@ export var getFontSize = function getFontSize(editor) {
28
29
  var selection = editor.selection;
29
30
  var marks = Editor.marks(editor);
30
31
  if (marks && marks['font-size']) return marks['font-size'];
31
- if (!selection) return DEFAULT_COMMON_FONT_SIZE;
32
+ if (!selection) return SDOC_FONT_SIZE.DEFAULT;
32
33
  var _Editor$nodes3 = Editor.nodes(editor, {
33
34
  at: Editor.unhangRange(editor, selection),
34
35
  match: function match(n) {
35
36
  if (!Editor.isEditor(n) && !Element.isElement(n)) {
36
37
  if (n['font-size']) return true;
37
38
  var _parentNode = getParentNode(editor.children, n.id);
38
- if (_parentNode && (HEADERS.includes(_parentNode.type) || _parentNode.type === ELEMENT_TYPE.CODE_LINE)) {
39
+ if (!_parentNode) return false;
40
+ // title | subtitle | header | code-line
41
+ if ([TITLE, SUBTITLE].concat(_toConsumableArray(HEADERS), [CODE_LINE]).includes(_parentNode.type)) {
39
42
  return true;
40
43
  }
41
44
  return false;
@@ -45,13 +48,14 @@ export var getFontSize = function getFontSize(editor) {
45
48
  }),
46
49
  _Editor$nodes4 = _slicedToArray(_Editor$nodes3, 1),
47
50
  match = _Editor$nodes4[0];
48
- if (!match) return DEFAULT_COMMON_FONT_SIZE;
51
+ if (!match) return SDOC_FONT_SIZE.DEFAULT;
52
+ // has font-size attrubute
49
53
  var matched = match[0];
50
54
  if (matched['font-size']) return matched['font-size'];
55
+
56
+ // title | subtitle | header | code-line
51
57
  var parentNode = getParentNode(editor.children, matched.id);
52
- if (HEADERS.includes(parentNode.type)) return HEADER_FONT_SIZE[parentNode.type];
53
- if (parentNode.type === ELEMENT_TYPE.CODE_LINE) return DEFAULT_CODE_FONT_SIZE;
54
- return DEFAULT_COMMON_FONT_SIZE;
58
+ return SDOC_FONT_SIZE[parentNode.type];
55
59
  };
56
60
  export var setFontSize = function setFontSize(editor, value) {
57
61
  Editor.addMark(editor, 'font-size', value);
@@ -62,12 +66,6 @@ export var scaleFontSize = function scaleFontSize(editor, type) {
62
66
  if (isDisabled) return;
63
67
  var fontSize = getFontSize(editor);
64
68
  var fontSizeValue = fontSize;
65
- if (SPECIAL_FONT_SIZE_NAME.includes(fontSize)) {
66
- var fontItem = FONT_SIZE.find(function (item) {
67
- return item.name === fontSize;
68
- });
69
- fontSizeValue = fontItem ? fontItem.value : DEFAULT_COMMON_FONT_SIZE;
70
- }
71
69
  if (type === 'increase') {
72
70
  fontSizeValue = fontSizeValue + 1;
73
71
  }
@@ -4,8 +4,7 @@ import { UncontrolledPopover } from 'reactstrap';
4
4
  import { useTranslation } from 'react-i18next';
5
5
  import classnames from 'classnames';
6
6
  import { isMenuDisabled, getFontSize, setFontSize } from '../../helpers';
7
- import { DEFAULT_COMMON_FONT_SIZE, FONT_SIZE, SPECIAL_FONT_SIZE_NAME } from '../../../../constants';
8
- import context from '../../../../../../context';
7
+ import { FONT_SIZE } from '../../../../constants';
9
8
  import Tooltip from '../../../../commons/tooltip';
10
9
  import './index.css';
11
10
  var FontSize = function FontSize(_ref) {
@@ -23,15 +22,6 @@ var FontSize = function FontSize(_ref) {
23
22
  var disabled = isMenuDisabled(editor, readonly);
24
23
  var fontSizeButtonId = 'sdoc-button-font-size';
25
24
  var selectedFontSize = getFontSize(editor);
26
- var lang = (context.getSetting('lang') || '').toLowerCase();
27
- if (SPECIAL_FONT_SIZE_NAME.includes(selectedFontSize)) {
28
- var fontItem = FONT_SIZE.find(function (item) {
29
- return item.name === selectedFontSize;
30
- });
31
- if (lang !== 'zh-cn') {
32
- selectedFontSize = fontItem ? fontItem.value : DEFAULT_COMMON_FONT_SIZE;
33
- }
34
- }
35
25
  var fontSizeRef = useRef(null);
36
26
  var toggle = useCallback(function (event) {
37
27
  popoverRef.current.toggle();
@@ -40,7 +30,7 @@ var FontSize = function FontSize(_ref) {
40
30
  // eslint-disable-next-line react-hooks/exhaustive-deps
41
31
  }, [isShowMenu]);
42
32
  var updateFontSize = useCallback(function (item) {
43
- var fontSize = SPECIAL_FONT_SIZE_NAME.includes(item.name) ? item.name : item.value;
33
+ var fontSize = item.value;
44
34
  toggle();
45
35
  setFontSize(editor, fontSize);
46
36
 
@@ -55,9 +45,6 @@ var FontSize = function FontSize(_ref) {
55
45
  'btn btn-icon btn-secondary btn-active d-flex': !isRichEditor
56
46
  });
57
47
  var caretIconClass = "sdoc-menu-with-dropdown-triangle-icon sdocfont sdoc-".concat(isShowMenu ? 'caret-up' : 'drop-down');
58
- var fontSizeList = FONT_SIZE.filter(function (item) {
59
- return item.lang ? item.lang === lang : true;
60
- });
61
48
  var _ref2 = fontSizeRef.current ? fontSizeRef.current.getBoundingClientRect() : {
62
49
  bottom: 92.5
63
50
  },
@@ -92,7 +79,7 @@ var FontSize = function FontSize(_ref) {
92
79
  style: {
93
80
  maxHeight: window.innerHeight - bottom - 100
94
81
  }
95
- }, fontSizeList.map(function (item, index) {
82
+ }, FONT_SIZE.map(function (item, index) {
96
83
  var isSelected = selectedFontSize + '' === item.name;
97
84
  return /*#__PURE__*/React.createElement("div", {
98
85
  key: index,
@@ -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 } from '../../constants';
4
+ import { ELEMENT_TYPE, 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;
@@ -17,6 +17,8 @@ export var isMenuDisabled = function isMenuDisabled(editor) {
17
17
  if (type === ELEMENT_TYPE.CODE_BLOCK) return true;
18
18
  if (type === ELEMENT_TYPE.PARAGRAPH) return true;
19
19
  if (type.startsWith('header')) return true;
20
+ if (type === TITLE) return true;
21
+ if (type === SUBTITLE) return true;
20
22
  return false;
21
23
  },
22
24
  universal: true,
@@ -29,7 +31,11 @@ export var isMenuDisabled = function isMenuDisabled(editor) {
29
31
  export var getHeaderType = function getHeaderType(editor) {
30
32
  var _Editor$nodes3 = Editor.nodes(editor, {
31
33
  match: function match(n) {
32
- return getNodeType(n).includes('header');
34
+ var nodeType = getNodeType(n);
35
+ if (nodeType.includes('header')) return true;
36
+ if (nodeType === TITLE) return true;
37
+ if (nodeType === SUBTITLE) return true;
38
+ return false;
33
39
  },
34
40
  universal: true
35
41
  }),
@@ -42,7 +48,12 @@ export var getHeaderType = function getHeaderType(editor) {
42
48
  };
43
49
  export var setHeaderType = function setHeaderType(editor, type) {
44
50
  if (!type) return;
45
- Transforms.setNodes(editor, {
46
- type: type
47
- });
51
+ var newProperties = {
52
+ type: type,
53
+ align: 'left'
54
+ };
55
+ if (type === TITLE || type === SUBTITLE) {
56
+ newProperties['align'] = 'center';
57
+ }
58
+ Transforms.setNodes(editor, newProperties);
48
59
  };
@@ -1,10 +1,10 @@
1
1
  import { HEADER } from '../../constants';
2
2
  import withHeader from './plugin';
3
- import renderHeader from './render-elem';
3
+ import { renderTitle, renderHeader, renderSubtitle } from './render-elem';
4
4
  var HeaderPlugin = {
5
5
  type: HEADER,
6
6
  nodeType: 'element',
7
7
  editorPlugin: withHeader,
8
- renderElements: [renderHeader]
8
+ renderElements: [renderTitle, renderSubtitle, renderHeader]
9
9
  };
10
10
  export default HeaderPlugin;
@@ -7,7 +7,7 @@ import React, { Fragment } from 'react';
7
7
  import { withTranslation } from 'react-i18next';
8
8
  import classnames from 'classnames';
9
9
  import { getHeaderType, isMenuDisabled, setHeaderType } from '../helpers';
10
- import { HEADERS, HEADER_TITLE_MAP, PARAGRAPH } from '../../../constants';
10
+ import { HEADERS, HEADER_TITLE_MAP, MAC_HOTKEYS, PARAGRAPH, SDOC_FONT_SIZE, SUBTITLE, TITLE, WIN_HOTKEYS } from '../../../constants';
11
11
  import Tooltip from '../../../commons/tooltip';
12
12
  import './style.css';
13
13
  var HeaderMenu = /*#__PURE__*/function (_React$Component) {
@@ -69,8 +69,6 @@ var HeaderMenu = /*#__PURE__*/function (_React$Component) {
69
69
  var editor = _this.props.editor;
70
70
  var active = _this.isActive(type);
71
71
  var newType = active ? 'paragraph' : type;
72
-
73
- // 执行命令
74
72
  setHeaderType(editor, newType);
75
73
  _this.setState({
76
74
  isShowHeaderPopover: false
@@ -82,10 +80,10 @@ var HeaderMenu = /*#__PURE__*/function (_React$Component) {
82
80
  _this.setMenuRef = function (ref) {
83
81
  _this.menu = ref;
84
82
  };
85
- _this.getToolTip = function (index) {
83
+ _this.getToolTip = function (type) {
86
84
  //chrome in Mac: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
87
- var isMac = window.navigator.userAgent.indexOf('Macintosh') != -1;
88
- return isMac ? "\u2318 +\u2325 +".concat(index) : "ctrl+alt+".concat(index);
85
+ var isMac = window.navigator.userAgent.indexOf('Macintosh') !== -1;
86
+ return isMac ? MAC_HOTKEYS[type] : WIN_HOTKEYS[type];
89
87
  };
90
88
  _this.state = {
91
89
  isShowHeaderPopover: false
@@ -101,7 +99,7 @@ var HeaderMenu = /*#__PURE__*/function (_React$Component) {
101
99
  var headerIconClass = "sdocfont sdoc-".concat(isShowHeaderPopover ? 'caret-up' : 'drop-down');
102
100
  var currentType = this.getValue();
103
101
  var disabled = this.isDisabled();
104
- var itemList = [PARAGRAPH, 'divider'].concat(_toConsumableArray(HEADERS));
102
+ var itemList = [PARAGRAPH, 'divider', TITLE, SUBTITLE, 'divider'].concat(_toConsumableArray(HEADERS));
105
103
  return /*#__PURE__*/React.createElement("div", {
106
104
  className: "header-menu"
107
105
  }, /*#__PURE__*/React.createElement("div", {
@@ -117,15 +115,14 @@ var HeaderMenu = /*#__PURE__*/function (_React$Component) {
117
115
  ref: this.setMenuRef,
118
116
  className: "header-popover sdoc-dropdown-menu"
119
117
  }, itemList.map(function (item, index) {
120
- if (item == 'divider') {
118
+ if (item === 'divider') {
121
119
  return /*#__PURE__*/React.createElement("div", {
122
120
  key: index,
123
121
  className: "sdoc-dropdown-menu-divider"
124
122
  });
125
123
  }
126
- var isSelected = currentType == item;
127
- var titleIndex = index == 0 ? 0 : index - 1;
128
- var id = "".concat(item, "-").concat(titleIndex);
124
+ var id = "".concat(item, "-").concat(index);
125
+ var isSelected = currentType === item;
129
126
  return /*#__PURE__*/React.createElement(Fragment, {
130
127
  key: index
131
128
  }, /*#__PURE__*/React.createElement("div", {
@@ -137,11 +134,13 @@ var HeaderMenu = /*#__PURE__*/function (_React$Component) {
137
134
  }, isSelected && /*#__PURE__*/React.createElement("i", {
138
135
  className: "sdocfont sdoc-check-mark"
139
136
  }), /*#__PURE__*/React.createElement("span", {
140
- className: item
137
+ style: {
138
+ fontSize: "".concat(SDOC_FONT_SIZE[item], "pt")
139
+ }
141
140
  }, t(HEADER_TITLE_MAP[item]))), /*#__PURE__*/React.createElement(Tooltip, {
142
141
  target: id,
143
142
  placement: "right"
144
- }, _this2.getToolTip(titleIndex)));
143
+ }, _this2.getToolTip(item)));
145
144
  })));
146
145
  }
147
146
  }]);
@@ -49,6 +49,7 @@
49
49
  top: 42px;
50
50
  left: 8px;
51
51
  padding: 8px 0;
52
+ width: 180px;
52
53
  background-color: #fff;
53
54
  border: 1px solid #e5e6e8;
54
55
  border-radius: 2px;
@@ -61,6 +62,9 @@
61
62
 
62
63
  .header-menu .header-popover .sdoc-dropdown-menu-item {
63
64
  font-size: 14px;
65
+ height: auto;
66
+ padding: 9px 16px 9px 28px;
67
+ line-height: 1;
64
68
  }
65
69
 
66
70
  .header-menu .header-popover .sdoc-dropdown-menu-item .sdoc-check-mark {
@@ -69,28 +73,3 @@
69
73
  transform: scale(.8);
70
74
  color: #798d99;
71
75
  }
72
-
73
- .header-menu .header-popover .header1 {
74
- font-size: 18px;
75
- }
76
-
77
- .header-menu .header-popover .header2 {
78
- font-size: 16px;
79
- }
80
-
81
- .header-menu .header-popover .header3 {
82
- font-size: 14px;
83
- }
84
-
85
- .header-menu .header-popover .header4 {
86
- font-size: 12px;
87
- }
88
-
89
- .header-menu .header-popover .header5 {
90
- font-size: 11px;
91
- }
92
-
93
- .header-menu .header-popover .header6 {
94
- font-size: 11px;
95
- }
96
-
@@ -1,8 +1,11 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import { Editor, Element, Transforms, Node } from '@seafile/slate';
3
- import { PARAGRAPH, HEADER_TYPE_ARRAY, LIST_TYPE_ARRAY } from '../../constants';
3
+ import { PARAGRAPH, HEADERS, LIST_TYPE_ARRAY, TITLE, SUBTITLE } from '../../constants';
4
4
  import { generateEmptyElement, getSelectedNodeByTypes } from '../../core';
5
5
  import { isMenuDisabled, setHeaderType } from './helpers';
6
+ import isHotkey from 'is-hotkey';
7
+ import { MAC_HOTKEYS_EVENT, WIN_HOTKEYS } from '../../constants/keyboard';
8
+ import { isMac } from '../../../../utils';
6
9
  var isSelectionAtLineEnd = function isSelectionAtLineEnd(editor, path) {
7
10
  var selection = editor.selection;
8
11
  if (!selection) return false;
@@ -19,7 +22,11 @@ var withHeader = function withHeader(editor) {
19
22
  newEditor.insertBreak = function () {
20
23
  var _Editor$nodes = Editor.nodes(newEditor, {
21
24
  match: function match(n) {
22
- return Element.isElement(n) && n.type.startsWith('header');
25
+ if (!Element.isElement(n)) return false;
26
+ if (n.type.startsWith('header')) return true;
27
+ if (n.type === TITLE) return true;
28
+ if (n.type === SUBTITLE) return true;
29
+ return false;
23
30
  },
24
31
  // Matches nodes whose node.type starts with header
25
32
  universal: true
@@ -56,7 +63,7 @@ var withHeader = function withHeader(editor) {
56
63
  };
57
64
  newEditor.insertFragment = function (data) {
58
65
  var _data$, _data$$children;
59
- var headerNode = getSelectedNodeByTypes(editor, HEADER_TYPE_ARRAY);
66
+ var headerNode = getSelectedNodeByTypes(editor, HEADERS);
60
67
  var headerText = Node.string(headerNode || {
61
68
  children: []
62
69
  });
@@ -69,13 +76,26 @@ var withHeader = function withHeader(editor) {
69
76
  }
70
77
  return insertFragment(data);
71
78
  };
72
-
73
- // for hotkey
74
- newEditor.setParagraphHeadingType = function (type) {
75
- if (isMenuDisabled(newEditor)) {
76
- return false;
79
+ newEditor.onHotKeyDown = function (event) {
80
+ var HOT_KEYS = isMac() ? MAC_HOTKEYS_EVENT : WIN_HOTKEYS;
81
+ var hotEntries = Object.entries(HOT_KEYS);
82
+ var isHeaderEvent = false;
83
+ var headerType = '';
84
+ for (var index = 0; index < hotEntries.length; index++) {
85
+ var _hotEntries$index = _slicedToArray(hotEntries[index], 2),
86
+ key = _hotEntries$index[0],
87
+ value = _hotEntries$index[1];
88
+ isHeaderEvent = isHotkey(value, event);
89
+ if (isHeaderEvent) {
90
+ headerType = key;
91
+ break;
92
+ }
77
93
  }
78
- setHeaderType(newEditor, type);
94
+ if (!isHeaderEvent) return false;
95
+ event.preventDefault();
96
+ if (isMenuDisabled(newEditor)) return true;
97
+ setHeaderType(newEditor, headerType);
98
+ return true;
79
99
  };
80
100
  return newEditor;
81
101
  };