@seafile/sdoc-editor 0.1.134 → 0.1.136
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/basic-sdk/assets/css/default.css +6 -4
- package/dist/basic-sdk/assets/css/sdoc-editor-plugins.css +20 -2
- package/dist/basic-sdk/extension/constants/element-type.js +2 -0
- package/dist/basic-sdk/extension/constants/font.js +4 -77
- package/dist/basic-sdk/extension/constants/index.js +5 -6
- package/dist/basic-sdk/extension/constants/keyboard.js +34 -2
- package/dist/basic-sdk/extension/plugins/code-block/plugin.js +1 -2
- package/dist/basic-sdk/extension/plugins/font/helpers.js +11 -13
- package/dist/basic-sdk/extension/plugins/font/menu/font-size/index.js +3 -16
- package/dist/basic-sdk/extension/plugins/header/helpers.js +8 -2
- package/dist/basic-sdk/extension/plugins/header/index.js +2 -2
- package/dist/basic-sdk/extension/plugins/header/menu/index.js +12 -13
- package/dist/basic-sdk/extension/plugins/header/menu/style.css +4 -25
- package/dist/basic-sdk/extension/plugins/header/plugin.js +29 -9
- package/dist/basic-sdk/extension/plugins/header/render-elem.js +44 -8
- package/dist/basic-sdk/extension/plugins/table/menu/table-menu/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +0 -12
- package/dist/basic-sdk/extension/plugins/text-style/render-elem.js +3 -20
- package/dist/basic-sdk/extension/render/render-element.js +16 -3
- package/dist/basic-sdk/outline/index.js +1 -1
- package/dist/basic-sdk/outline/outline-item.js +7 -1
- package/dist/basic-sdk/utils/event-handler.js +5 -11
- package/package.json +1 -1
- package/public/locales/cs/sdoc-editor.json +3 -1
- package/public/locales/de/sdoc-editor.json +3 -1
- package/public/locales/en/sdoc-editor.json +3 -1
- package/public/locales/es/sdoc-editor.json +3 -1
- package/public/locales/fr/sdoc-editor.json +3 -1
- package/public/locales/it/sdoc-editor.json +3 -1
- package/public/locales/ru/sdoc-editor.json +148 -146
- 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
|
-
|
|
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 .
|
|
7
|
-
|
|
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
|
|
3
|
-
|
|
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
|
|
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
|
|
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 {
|
|
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,
|
|
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
|
|
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
|
+
};
|
|
@@ -25,7 +25,7 @@ var withCodeBlock = function withCodeBlock(editor) {
|
|
|
25
25
|
return insertText(data);
|
|
26
26
|
};
|
|
27
27
|
newEditor.insertData = function (data) {
|
|
28
|
-
if (!newEditor.insertFragmentData(data)) {
|
|
28
|
+
if (!newEditor.insertFragmentData(data) && !data.types.includes('text/code-block')) {
|
|
29
29
|
var plaintext = data.getData('text/plain') || '';
|
|
30
30
|
if (plaintext) {
|
|
31
31
|
var fragmentData = [];
|
|
@@ -48,7 +48,6 @@ var withCodeBlock = function withCodeBlock(editor) {
|
|
|
48
48
|
var codeBlockNode = JSON.parse(data.getData('text/code-block'));
|
|
49
49
|
return insertNode(codeBlockNode);
|
|
50
50
|
}
|
|
51
|
-
return insertData(data);
|
|
52
51
|
};
|
|
53
52
|
newEditor.insertFragment = function (data) {
|
|
54
53
|
// only selected code block content
|
|
@@ -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,
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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 {
|
|
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 =
|
|
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
|
-
},
|
|
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
|
-
|
|
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
|
}),
|
|
@@ -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 (
|
|
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')
|
|
88
|
-
return isMac ?
|
|
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
|
|
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
|
|
127
|
-
var
|
|
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
|
-
|
|
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(
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
|
|
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
|
};
|