@seafile/sdoc-editor 0.1.86 → 0.1.88-beta
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/assets/css/simple-editor.css +11 -0
- package/dist/basic-sdk/assets/css/dropdown-menu.css +6 -0
- package/dist/basic-sdk/editor.js +12 -38
- package/dist/{components/modal-portal.js → basic-sdk/extension/commons/element-popover/index.js} +11 -8
- package/dist/basic-sdk/extension/constants/color.js +2 -1
- package/dist/basic-sdk/extension/constants/element-type.js +4 -1
- package/dist/basic-sdk/extension/constants/index.js +25 -3
- package/dist/basic-sdk/extension/core/queries/index.js +1 -1
- package/dist/basic-sdk/extension/index.js +1 -2
- package/dist/basic-sdk/{comment → extension/menu}/color-menu/color-item.js +2 -2
- package/dist/basic-sdk/{comment → extension/menu}/color-menu/index.css +61 -9
- package/dist/basic-sdk/{comment → extension/menu}/color-menu/index.js +57 -32
- package/dist/basic-sdk/extension/menu/index.js +1 -2
- package/dist/basic-sdk/extension/menu/menu-item.js +1 -0
- package/dist/basic-sdk/extension/menu/menu.css +52 -1
- package/dist/basic-sdk/extension/plugins/clear-format/helpers.js +56 -0
- package/dist/basic-sdk/extension/plugins/clear-format/menu/index.js +25 -0
- package/dist/{components/code-block-hover-menu → basic-sdk/extension/plugins/code-block/hover-menu}/index.js +4 -4
- package/dist/basic-sdk/extension/plugins/code-block/render-elem.js +1 -1
- package/dist/basic-sdk/extension/plugins/html/rules/code-block.js +1 -1
- package/dist/basic-sdk/extension/plugins/table/constants/index.js +2 -1
- package/dist/basic-sdk/extension/plugins/table/dialog/custom-table-size-dialog/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/table/index.js +2 -3
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/common-menu.js +9 -5
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.css +19 -3
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.js +9 -6
- package/dist/basic-sdk/extension/plugins/table/menu/index.js +2 -2
- package/dist/basic-sdk/extension/plugins/table/menu/{context-menu → table-context-menu}/index.js +15 -11
- package/dist/basic-sdk/extension/plugins/table/render/hooks.js +51 -1
- package/dist/basic-sdk/extension/plugins/table/render/index.css +0 -34
- package/dist/basic-sdk/extension/plugins/table/render/render-cell.js +19 -7
- package/dist/basic-sdk/extension/plugins/table/render/table-root.js +12 -3
- package/dist/basic-sdk/extension/plugins/text-align/menu/index.js +81 -110
- package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +73 -73
- package/dist/basic-sdk/extension/plugins/text-style/render-elem.js +3 -0
- package/dist/basic-sdk/extension/toolbar/index.js +3 -0
- package/dist/basic-sdk/highlight-decorate/setNodeToDecorations.js +1 -1
- package/dist/basic-sdk/hooks/use-selection-position.js +11 -3
- package/dist/components/more-dropdown/index.js +36 -73
- package/dist/utils/local-storage-utils.js +16 -2
- package/package.json +1 -1
- package/public/locales/en/sdoc-editor.json +4 -1
- package/public/locales/zh-CN/sdoc-editor.json +4 -1
- package/public/media/sdoc-editor-font/iconfont.eot +0 -0
- package/public/media/sdoc-editor-font/iconfont.svg +6 -0
- package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
- package/public/media/sdoc-editor-font/iconfont.woff +0 -0
- package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
- package/public/media/sdoc-editor-font.css +18 -6
- package/dist/basic-sdk/extension/menu/context-menu/index.css +0 -1
- package/dist/basic-sdk/extension/menu/context-menu/index.js +0 -38
- package/dist/basic-sdk/extension/plugins/text-align/menu/style.css +0 -53
- package/dist/components/more-dropdown/style.css +0 -64
- /package/dist/{components/code-block-hover-menu → basic-sdk/extension/plugins/code-block/hover-menu}/index.css +0 -0
- /package/dist/basic-sdk/{utils → extension/plugins/code-block}/prismjs.js +0 -0
- /package/dist/basic-sdk/extension/plugins/table/{number-input.js → dialog/custom-table-size-dialog/number-input.js} +0 -0
- /package/dist/basic-sdk/extension/plugins/table/menu/{context-menu → table-context-menu}/index.css +0 -0
- /package/dist/basic-sdk/extension/plugins/table/menu/{context-menu → table-context-menu}/insert-table-element.js +0 -0
|
@@ -29,3 +29,14 @@
|
|
|
29
29
|
.sdoc-editor-page-header .doc-state {
|
|
30
30
|
font-size: 0.8125rem;
|
|
31
31
|
}
|
|
32
|
+
|
|
33
|
+
/* reset common css */
|
|
34
|
+
.sdoc-editor-page-wrapper .dropdown-item,
|
|
35
|
+
.sdoc-context-menu .dropdown-item {
|
|
36
|
+
color: #212529;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.sdoc-editor-page-wrapper .dropdown-item:hover,
|
|
40
|
+
.sdoc-context-menu .dropdown-item:hover {
|
|
41
|
+
color: #fff;
|
|
42
|
+
}
|
|
@@ -16,8 +16,14 @@
|
|
|
16
16
|
width: 100%;
|
|
17
17
|
padding: 4px 24px;
|
|
18
18
|
user-select: none;
|
|
19
|
+
display: flex;
|
|
20
|
+
align-items: center;
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
.sdoc-dropdown-menu .sdoc-dropdown-menu-item:hover {
|
|
22
24
|
background-color: rgb(245, 245, 245);
|
|
23
25
|
}
|
|
26
|
+
|
|
27
|
+
.sdoc-dropdown-menu .sdoc-dropdown-menu-item .sdocfont {
|
|
28
|
+
font-size: 14px;
|
|
29
|
+
}
|
package/dist/basic-sdk/editor.js
CHANGED
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
2
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
3
|
import { Editable, ReactEditor, Slate } from '@seafile/slate-react';
|
|
4
|
-
import defaultEditor, { renderLeaf, renderElement, Toolbar
|
|
4
|
+
import defaultEditor, { renderLeaf, renderElement, Toolbar } from './extension';
|
|
5
5
|
import { focusEditor, getAboveBlockNode, getNextNode, getPrevNode, isSelectionAtBlockEnd, isSelectionAtBlockStart } from './extension/core';
|
|
6
6
|
import { withSocketIO } from './socket';
|
|
7
7
|
import withNodeId from './node-id';
|
|
8
8
|
import SDocOutline from './outline';
|
|
9
9
|
import EventProxy from './utils/event-handler';
|
|
10
10
|
import { useCursors } from './cursor/use-cursors';
|
|
11
|
-
import EventBus from './utils/event-bus';
|
|
12
11
|
import { EXTERNAL_EVENT, PAGE_EDIT_AREA_WIDTH } from '../constants';
|
|
13
|
-
import { isAllInTable } from './extension/plugins/table/helpers';
|
|
14
12
|
import { SetNodeToDecorations } from './highlight-decorate/setNodeToDecorations';
|
|
15
13
|
import { ScrollContext } from './hooks/use-scroll-context';
|
|
16
14
|
import CommentContextProvider from './comment/comment-context-provider';
|
|
17
15
|
import CommentWrapper from './comment';
|
|
18
16
|
import { usePipDecorate } from './decorates';
|
|
19
17
|
import { getCursorPosition, getDomHeight, getDomMarginTop } from './utils/dom-utils';
|
|
18
|
+
import EventBus from './utils/event-bus';
|
|
20
19
|
import './assets/css/layout.css';
|
|
21
20
|
import './assets/css/sdoc-editor-plugins.css';
|
|
22
21
|
import './assets/css/dropdown-menu.css';
|
|
@@ -39,14 +38,6 @@ var SDocEditor = function SDocEditor(_ref) {
|
|
|
39
38
|
_useState2 = _slicedToArray(_useState, 2),
|
|
40
39
|
slateValue = _useState2[0],
|
|
41
40
|
setSlateValue = _useState2[1];
|
|
42
|
-
var _useState3 = useState(false),
|
|
43
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
44
|
-
isShowContextMenu = _useState4[0],
|
|
45
|
-
setContextMenu = _useState4[1];
|
|
46
|
-
var _useState5 = useState({}),
|
|
47
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
48
|
-
menuPosition = _useState6[0],
|
|
49
|
-
setMenuPosition = _useState6[1];
|
|
50
41
|
var _useCursors = useCursors(editor),
|
|
51
42
|
cursors = _useCursors.cursors;
|
|
52
43
|
var scrollRef = useRef(null);
|
|
@@ -58,7 +49,6 @@ var SDocEditor = function SDocEditor(_ref) {
|
|
|
58
49
|
var eventProxy = useMemo(function () {
|
|
59
50
|
return new EventProxy(editor);
|
|
60
51
|
}, []);
|
|
61
|
-
var eventBus = EventBus.getInstance();
|
|
62
52
|
|
|
63
53
|
// useMount: init socket connection
|
|
64
54
|
useEffect(function () {
|
|
@@ -81,26 +71,14 @@ var SDocEditor = function SDocEditor(_ref) {
|
|
|
81
71
|
};
|
|
82
72
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
83
73
|
}, []);
|
|
84
|
-
var onContextMenu = useCallback(function (event) {
|
|
85
|
-
if (isAllInTable(editor)) {
|
|
86
|
-
event.preventDefault();
|
|
87
|
-
var contextMenuPosition = {
|
|
88
|
-
left: event.clientX,
|
|
89
|
-
top: event.clientY
|
|
90
|
-
};
|
|
91
|
-
setContextMenu(true);
|
|
92
|
-
setMenuPosition(contextMenuPosition);
|
|
93
|
-
}
|
|
94
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
95
|
-
}, []);
|
|
96
74
|
var onChange = useCallback(function (slateValue) {
|
|
97
75
|
setSlateValue(slateValue);
|
|
98
|
-
setContextMenu(false);
|
|
99
76
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
100
77
|
}, []);
|
|
101
78
|
var onMouseDown = useCallback(function (event) {
|
|
102
79
|
if (event.button === 0) {
|
|
103
80
|
editor.reSetTableSelectedRange();
|
|
81
|
+
var eventBus = EventBus.getInstance();
|
|
104
82
|
eventBus.dispatch(EXTERNAL_EVENT.CANCEL_TABLE_SELECT_RANGE);
|
|
105
83
|
}
|
|
106
84
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -195,10 +173,10 @@ var SDocEditor = function SDocEditor(_ref) {
|
|
|
195
173
|
eventProxy.onKeyDown(event);
|
|
196
174
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
197
175
|
}, []);
|
|
198
|
-
var
|
|
199
|
-
|
|
200
|
-
containerStyle =
|
|
201
|
-
setContainerStyle =
|
|
176
|
+
var _useState3 = useState({}),
|
|
177
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
178
|
+
containerStyle = _useState4[0],
|
|
179
|
+
setContainerStyle = _useState4[1];
|
|
202
180
|
var handleWindowResize = useCallback(function () {
|
|
203
181
|
var rect = scrollRef.current.getBoundingClientRect();
|
|
204
182
|
var articleRect = articleRef.current.getBoundingClientRect();
|
|
@@ -217,10 +195,10 @@ var SDocEditor = function SDocEditor(_ref) {
|
|
|
217
195
|
window.removeEventListener('resize', handleWindowResize);
|
|
218
196
|
};
|
|
219
197
|
}, [handleWindowResize]);
|
|
220
|
-
var
|
|
221
|
-
|
|
222
|
-
scrollLeft =
|
|
223
|
-
setScrollLeft =
|
|
198
|
+
var _useState5 = useState(0),
|
|
199
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
200
|
+
scrollLeft = _useState6[0],
|
|
201
|
+
setScrollLeft = _useState6[1];
|
|
224
202
|
var onWrapperScroll = useCallback(function (event) {
|
|
225
203
|
var scrollLeft = event.target.scrollLeft;
|
|
226
204
|
setScrollLeft(scrollLeft);
|
|
@@ -262,13 +240,9 @@ var SDocEditor = function SDocEditor(_ref) {
|
|
|
262
240
|
renderElement: renderElement,
|
|
263
241
|
renderLeaf: renderLeaf,
|
|
264
242
|
onKeyDown: onKeyDown,
|
|
265
|
-
onContextMenu: onContextMenu,
|
|
266
243
|
onMouseDown: onMouseDown,
|
|
267
244
|
decorate: decorate,
|
|
268
245
|
onCut: eventProxy.onCut
|
|
269
|
-
})), /*#__PURE__*/React.createElement(CommentWrapper, null)))))))))
|
|
270
|
-
editor: editor,
|
|
271
|
-
contextMenuPosition: menuPosition
|
|
272
|
-
}));
|
|
246
|
+
})), /*#__PURE__*/React.createElement(CommentWrapper, null))))))))));
|
|
273
247
|
};
|
|
274
248
|
export default SDocEditor;
|
package/dist/{components/modal-portal.js → basic-sdk/extension/commons/element-popover/index.js}
RENAMED
|
@@ -4,12 +4,12 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
|
4
4
|
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
5
5
|
import React from 'react';
|
|
6
6
|
import ReactDOM from 'react-dom';
|
|
7
|
-
var
|
|
8
|
-
_inherits(
|
|
9
|
-
var _super = _createSuper(
|
|
10
|
-
function
|
|
7
|
+
var ElementPopover = /*#__PURE__*/function (_React$Component) {
|
|
8
|
+
_inherits(ElementPopover, _React$Component);
|
|
9
|
+
var _super = _createSuper(ElementPopover);
|
|
10
|
+
function ElementPopover(props) {
|
|
11
11
|
var _this;
|
|
12
|
-
_classCallCheck(this,
|
|
12
|
+
_classCallCheck(this, ElementPopover);
|
|
13
13
|
_this = _super.call(this, props);
|
|
14
14
|
_this.state = {
|
|
15
15
|
isMounted: false
|
|
@@ -18,9 +18,12 @@ var ModalPortal = /*#__PURE__*/function (_React$Component) {
|
|
|
18
18
|
if (props.className) {
|
|
19
19
|
_this.el.className = props.className;
|
|
20
20
|
}
|
|
21
|
+
if (props.style) {
|
|
22
|
+
_this.el.style = props.style;
|
|
23
|
+
}
|
|
21
24
|
return _this;
|
|
22
25
|
}
|
|
23
|
-
_createClass(
|
|
26
|
+
_createClass(ElementPopover, [{
|
|
24
27
|
key: "componentDidMount",
|
|
25
28
|
value: function componentDidMount() {
|
|
26
29
|
document.body.appendChild(this.el);
|
|
@@ -36,6 +39,6 @@ var ModalPortal = /*#__PURE__*/function (_React$Component) {
|
|
|
36
39
|
return ReactDOM.createPortal(this.props.children, this.el);
|
|
37
40
|
}
|
|
38
41
|
}]);
|
|
39
|
-
return
|
|
42
|
+
return ElementPopover;
|
|
40
43
|
}(React.Component);
|
|
41
|
-
export default
|
|
44
|
+
export default ElementPopover;
|
|
@@ -262,4 +262,5 @@ export var STANDARD_COLORS = [{
|
|
|
262
262
|
}];
|
|
263
263
|
|
|
264
264
|
// Initialize the most recently used colors
|
|
265
|
-
export var DEFAULT_RECENT_USED_COLORS = new Array(10).fill('');
|
|
265
|
+
export var DEFAULT_RECENT_USED_COLORS = new Array(10).fill('');
|
|
266
|
+
export var DEFAULT_FONT_COLOR = '#333333';
|
|
@@ -5,6 +5,8 @@ export var UNDERLINE = 'underline';
|
|
|
5
5
|
export var STRIKETHROUGH = 'strikethrough';
|
|
6
6
|
export var SUPERSCRIPT = 'superscript';
|
|
7
7
|
export var SUBSCRIPT = 'subscript';
|
|
8
|
+
export var COLOR = 'color';
|
|
9
|
+
export var HIGHLIGHT_COLOR = 'highlight-color';
|
|
8
10
|
export var HEADER = 'header';
|
|
9
11
|
export var HEADER1 = 'header1';
|
|
10
12
|
export var HEADER2 = 'header2';
|
|
@@ -35,4 +37,5 @@ export var BOLD_ITALIC = 'bold-italic';
|
|
|
35
37
|
export var TEXT_ALIGN = 'text-align';
|
|
36
38
|
export var ALIGN_LEFT = 'align-left';
|
|
37
39
|
export var ALIGN_RIGHT = 'align-right';
|
|
38
|
-
export var ALIGN_CENTER = 'align-center';
|
|
40
|
+
export var ALIGN_CENTER = 'align-center';
|
|
41
|
+
export var CLEAR_FORMAT = 'clear-format';
|
|
@@ -2,9 +2,9 @@ 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 } 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 } from './element-type';
|
|
6
6
|
import KEYBOARD from './keyboard';
|
|
7
|
-
import { DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_COLORS } from './color';
|
|
7
|
+
import { DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_COLORS, DEFAULT_FONT_COLOR } from './color';
|
|
8
8
|
|
|
9
9
|
// history
|
|
10
10
|
export var UNDO = 'undo';
|
|
@@ -66,6 +66,23 @@ export var MENUS_CONFIG_MAP = (_MENUS_CONFIG_MAP = {}, _defineProperty(_MENUS_CO
|
|
|
66
66
|
iconClass: 'sdocfont sdoc-underline',
|
|
67
67
|
text: 'Underline',
|
|
68
68
|
type: 'UNDERLINE'
|
|
69
|
+
}, {
|
|
70
|
+
id: "sdoc-".concat(HIGHLIGHT_COLOR),
|
|
71
|
+
iconClass: 'sdocfont sdoc-highlight-color',
|
|
72
|
+
text: 'Highlight_color',
|
|
73
|
+
type: HIGHLIGHT_COLOR,
|
|
74
|
+
isColor: true,
|
|
75
|
+
recentUsedColorsKey: 'sdoc-recent-used-highlight-colors',
|
|
76
|
+
lastUsedColorKey: 'sdoc-last-used-highlight-color'
|
|
77
|
+
}, {
|
|
78
|
+
id: "sdoc-font-".concat(COLOR),
|
|
79
|
+
iconClass: 'sdocfont sdoc-font-color',
|
|
80
|
+
text: 'Font_color',
|
|
81
|
+
type: COLOR,
|
|
82
|
+
defaultColor: DEFAULT_FONT_COLOR,
|
|
83
|
+
isColor: true,
|
|
84
|
+
recentUsedColorsKey: 'sdoc-recent-used-font-colors',
|
|
85
|
+
lastUsedColorKey: 'sdoc-last-used-font-color'
|
|
69
86
|
}]), _defineProperty(_MENUS_CONFIG_MAP, TEXT_STYLE_MORE, [{
|
|
70
87
|
id: STRIKETHROUGH,
|
|
71
88
|
iconClass: 'sdocfont sdoc-strikethrough',
|
|
@@ -107,6 +124,10 @@ export var MENUS_CONFIG_MAP = (_MENUS_CONFIG_MAP = {}, _defineProperty(_MENUS_CO
|
|
|
107
124
|
id: "sdoc_".concat(BG_COLOR),
|
|
108
125
|
iconClass: 'sdocfont sdoc-bg-color',
|
|
109
126
|
text: 'Background_color'
|
|
127
|
+
}), _defineProperty(_MENUS_CONFIG_MAP, CLEAR_FORMAT, {
|
|
128
|
+
id: "sdoc_".concat(CLEAR_FORMAT),
|
|
129
|
+
iconClass: 'sdocfont sdoc-format-clear',
|
|
130
|
+
text: 'Clear_format'
|
|
110
131
|
}), _MENUS_CONFIG_MAP);
|
|
111
132
|
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);
|
|
112
133
|
export var DIFF_TYPE = {
|
|
@@ -129,4 +150,5 @@ export var ADDED_STYLE = {
|
|
|
129
150
|
};
|
|
130
151
|
export var HEADER_TYPE_ARRAY = ['header1', 'header2', 'header3', 'header4', 'header5', 'header6'];
|
|
131
152
|
export var LIST_TYPE_ARRAY = ['unordered_list', 'ordered_list'];
|
|
132
|
-
export
|
|
153
|
+
export var TRANSPARENT = 'transparent';
|
|
154
|
+
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_COLORS, CLEAR_FORMAT, DEFAULT_FONT_COLOR };
|
|
@@ -445,7 +445,7 @@ export var isRangeAcrossBlocks = function isRangeAcrossBlocks(editor) {
|
|
|
445
445
|
};
|
|
446
446
|
export var isAncestorEmpty = function isAncestorEmpty(editor, node) {
|
|
447
447
|
return !Node.string(node) && !node.children.some(function (n) {
|
|
448
|
-
return Editor.isInline(editor,
|
|
448
|
+
return Editor.isInline(editor, n);
|
|
449
449
|
});
|
|
450
450
|
};
|
|
451
451
|
export var isBlockAboveEmpty = function isBlockAboveEmpty(editor) {
|
|
@@ -5,7 +5,6 @@ import Plugins from './plugins';
|
|
|
5
5
|
import renderElement from './render/render-element';
|
|
6
6
|
import renderLeaf from './render/render-leaf';
|
|
7
7
|
import Toolbar from './toolbar';
|
|
8
|
-
import { ContextMenu } from './menu';
|
|
9
8
|
var baseEditor = withHistory(withReact(createEditor()));
|
|
10
9
|
var defaultEditor = Plugins.reduce(function (editor, pluginItem) {
|
|
11
10
|
var withPlugin = pluginItem.editorPlugin;
|
|
@@ -15,4 +14,4 @@ var defaultEditor = Plugins.reduce(function (editor, pluginItem) {
|
|
|
15
14
|
return editor;
|
|
16
15
|
}, baseEditor);
|
|
17
16
|
export default defaultEditor;
|
|
18
|
-
export { renderLeaf, renderElement, Toolbar
|
|
17
|
+
export { renderLeaf, renderElement, Toolbar };
|
|
@@ -4,10 +4,10 @@ import classnames from 'classnames';
|
|
|
4
4
|
var ColorItem = function ColorItem(_ref) {
|
|
5
5
|
var t = _ref.t,
|
|
6
6
|
color = _ref.color,
|
|
7
|
-
|
|
7
|
+
lastUsedColor = _ref.lastUsedColor;
|
|
8
8
|
return /*#__PURE__*/React.createElement("div", {
|
|
9
9
|
className: classnames('sdoc-color-item', {
|
|
10
|
-
'selected':
|
|
10
|
+
'selected': lastUsedColor === color.value
|
|
11
11
|
}),
|
|
12
12
|
style: {
|
|
13
13
|
backgroundColor: color.value
|
|
@@ -1,17 +1,55 @@
|
|
|
1
|
+
.menu-group .sdoc-color-menu.menu-show {
|
|
2
|
+
background: #e5e5e5;
|
|
3
|
+
border-radius: 2px;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.menu-group .sdoc-color-menu .last-used-color-container {
|
|
7
|
+
height: 100%;
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
align-items: center;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.menu-group .sdoc-color-menu .last-used-color-container.disabled {
|
|
15
|
+
padding-right: 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.menu-group .sdoc-color-menu .sdoc-color-toggle {
|
|
19
|
+
height: 100%;
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: center;
|
|
22
|
+
justify-content: center;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.menu-group .sdoc-color-menu .sdoc-color-toggle:hover,
|
|
26
|
+
.menu-group .sdoc-color-menu .last-used-color-container:not(.disabled):hover {
|
|
27
|
+
background-color: rgba(0, 0, 0, 0.08);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.menu-group .sdoc-color-menu.disabled .sdoc-color-toggle {
|
|
31
|
+
display: none;
|
|
32
|
+
}
|
|
33
|
+
|
|
1
34
|
.sdoc-color-menu .sdoc-color-icon {
|
|
2
35
|
font-size: 12px !important;
|
|
3
36
|
height: 12px;
|
|
37
|
+
width: 12px;
|
|
4
38
|
line-height: 12px;
|
|
5
39
|
}
|
|
6
40
|
|
|
7
|
-
.sdoc-color-menu .
|
|
8
|
-
width:
|
|
41
|
+
.sdoc-color-menu .last-used-color {
|
|
42
|
+
width: 14px;
|
|
9
43
|
height: 3px;
|
|
10
44
|
border-radius: 1px;
|
|
11
45
|
margin-top: 2px;
|
|
12
46
|
border: 1px solid rgba(0, 0, 0, .08);
|
|
13
47
|
}
|
|
14
48
|
|
|
49
|
+
.sdoc-color-menu-popover .popover {
|
|
50
|
+
left: -30px !important;
|
|
51
|
+
}
|
|
52
|
+
|
|
15
53
|
.sdoc-color-menu-popover .sdoc-color-dropdown-menu {
|
|
16
54
|
width: 251px;
|
|
17
55
|
padding: 0 0 12px 0;
|
|
@@ -40,6 +78,7 @@
|
|
|
40
78
|
}
|
|
41
79
|
|
|
42
80
|
.sdoc-color-menu-popover .sdoc-color-item {
|
|
81
|
+
position: relative;
|
|
43
82
|
height: 20px;
|
|
44
83
|
width: 20px;
|
|
45
84
|
margin-right: 3px;
|
|
@@ -47,17 +86,24 @@
|
|
|
47
86
|
border: 0.5px solid rgba(0, 0, 0, .08);
|
|
48
87
|
}
|
|
49
88
|
|
|
50
|
-
.sdoc-color-menu-popover .sdoc-color-item.selected {
|
|
51
|
-
|
|
89
|
+
.sdoc-color-menu-popover .sdoc-color-item:not(.selected):hover::before {
|
|
90
|
+
content: '';
|
|
91
|
+
position: absolute;
|
|
92
|
+
width: calc(100% + 5px);
|
|
93
|
+
height: calc((100% + 5px));
|
|
94
|
+
top: -2.5px;
|
|
95
|
+
left: -2.5px;
|
|
96
|
+
pointer-events: none;
|
|
97
|
+
border: 1px solid rgba(0, 0, 0, .24);
|
|
52
98
|
}
|
|
53
99
|
|
|
54
100
|
.sdoc-color-menu-popover .sdoc-color-item.selected::after {
|
|
55
101
|
content: '';
|
|
56
102
|
position: absolute;
|
|
57
|
-
width: calc(100% +
|
|
58
|
-
height: calc((100% +
|
|
59
|
-
top: -
|
|
60
|
-
left: -
|
|
103
|
+
width: calc(100% + 5px);
|
|
104
|
+
height: calc((100% + 5px));
|
|
105
|
+
top: -2.5px;
|
|
106
|
+
left: -2.5px;
|
|
61
107
|
pointer-events: none;
|
|
62
108
|
border: 1px solid rgba(0, 0, 0, .88);
|
|
63
109
|
}
|
|
@@ -87,7 +133,7 @@
|
|
|
87
133
|
.sdoc-color-menu-popover .sdoc-more-colors {
|
|
88
134
|
display: flex;
|
|
89
135
|
align-items: center;
|
|
90
|
-
justify-content:
|
|
136
|
+
justify-content: space-between;
|
|
91
137
|
height: 30px;
|
|
92
138
|
font-size: 12px;
|
|
93
139
|
padding: 0 12px;
|
|
@@ -107,3 +153,9 @@
|
|
|
107
153
|
.sdoc-more-colors-popover .popover {
|
|
108
154
|
left: 10px !important;
|
|
109
155
|
}
|
|
156
|
+
|
|
157
|
+
/* commission */
|
|
158
|
+
.menu-group #button-sdoc-highlight-color .sdoc-color-icon {
|
|
159
|
+
position: relative;
|
|
160
|
+
left: 1px;
|
|
161
|
+
}
|
|
@@ -2,11 +2,11 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
|
2
2
|
import React, { useCallback, useRef, useState } from 'react';
|
|
3
3
|
import { withTranslation } from 'react-i18next';
|
|
4
4
|
import classnames from 'classnames';
|
|
5
|
-
import { UncontrolledPopover } from 'reactstrap';
|
|
5
|
+
import { UncontrolledPopover, UncontrolledTooltip } from 'reactstrap';
|
|
6
6
|
import { ChromePicker } from 'react-color';
|
|
7
|
-
import { DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_COLORS } from '../../
|
|
8
|
-
import { LocalStorage } from '
|
|
9
|
-
import { eventStopPropagation } from '
|
|
7
|
+
import { DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_COLORS } from '../../constants';
|
|
8
|
+
import { LocalStorage } from '../../../../utils';
|
|
9
|
+
import { eventStopPropagation } from '../../../utils/mouse-event';
|
|
10
10
|
import ColorItem from './color-item';
|
|
11
11
|
import './index.css';
|
|
12
12
|
var ColorMenu = function ColorMenu(_ref) {
|
|
@@ -14,41 +14,52 @@ var ColorMenu = function ColorMenu(_ref) {
|
|
|
14
14
|
id = _ref.id,
|
|
15
15
|
isRichEditor = _ref.isRichEditor,
|
|
16
16
|
className = _ref.className,
|
|
17
|
+
popoverClassName = _ref.popoverClassName,
|
|
17
18
|
disabled = _ref.disabled,
|
|
18
19
|
t = _ref.t,
|
|
19
20
|
setColor = _ref.setColor,
|
|
20
|
-
|
|
21
|
+
recentUsedColorsKey = _ref.recentUsedColorsKey,
|
|
22
|
+
lastUsedColorKey = _ref.lastUsedColorKey,
|
|
23
|
+
text = _ref.text,
|
|
24
|
+
defaultColorTip = _ref.defaultColorTip,
|
|
25
|
+
defaultColor = _ref.defaultColor;
|
|
21
26
|
var popoverRef = useRef(null);
|
|
22
27
|
var moreColorsPopoverRef = useRef(null);
|
|
23
|
-
var _useState = useState(LocalStorage.getItem(
|
|
28
|
+
var _useState = useState(LocalStorage.getItem(lastUsedColorKey, '')),
|
|
24
29
|
_useState2 = _slicedToArray(_useState, 2),
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
var _useState3 = useState(
|
|
30
|
+
lastUsedColor = _useState2[0],
|
|
31
|
+
setLastUseColor = _useState2[1];
|
|
32
|
+
var _useState3 = useState(LocalStorage.getItem(recentUsedColorsKey, DEFAULT_RECENT_USED_COLORS)),
|
|
28
33
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
recentUsedColors = _useState4[0],
|
|
35
|
+
setRecentUsedColors = _useState4[1];
|
|
31
36
|
var _useState5 = useState(false),
|
|
32
37
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
33
|
-
|
|
34
|
-
|
|
38
|
+
isShowMenu = _useState6[0],
|
|
39
|
+
setMenuShow = _useState6[1];
|
|
40
|
+
var _useState7 = useState(false),
|
|
41
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
42
|
+
isPickerShow = _useState8[0],
|
|
43
|
+
setPickerShow = _useState8[1];
|
|
35
44
|
var onSetColor = useCallback(function (color) {
|
|
36
45
|
var shouldClose = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
37
|
-
var validColor = color || '
|
|
46
|
+
var validColor = color || '';
|
|
38
47
|
setColor(validColor);
|
|
39
|
-
if (validColor !== '
|
|
48
|
+
if (validColor !== '' && recentUsedColors[0] !== validColor) {
|
|
40
49
|
var newRecentUsedColors = recentUsedColors.slice(0, 9);
|
|
41
50
|
newRecentUsedColors.unshift(validColor);
|
|
42
|
-
LocalStorage.setItem(
|
|
51
|
+
LocalStorage.setItem(recentUsedColorsKey, newRecentUsedColors);
|
|
43
52
|
setRecentUsedColors(newRecentUsedColors);
|
|
44
53
|
}
|
|
54
|
+
LocalStorage.setItem(lastUsedColorKey, validColor);
|
|
55
|
+
setLastUseColor(validColor);
|
|
45
56
|
if (shouldClose) {
|
|
46
57
|
popoverRef.current.toggle();
|
|
47
58
|
setMenuShow(!isShowMenu);
|
|
48
59
|
}
|
|
49
60
|
|
|
50
61
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
51
|
-
}, [recentUsedColors,
|
|
62
|
+
}, [recentUsedColors, recentUsedColorsKey, isShowMenu, isPickerShow]);
|
|
52
63
|
var setColorProxy = useCallback(function (event) {
|
|
53
64
|
if (event.target.className.includes('sdoc-color-item')) {
|
|
54
65
|
var color = event.target.dataset.color;
|
|
@@ -56,7 +67,7 @@ var ColorMenu = function ColorMenu(_ref) {
|
|
|
56
67
|
}
|
|
57
68
|
|
|
58
69
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
59
|
-
}, [recentUsedColors,
|
|
70
|
+
}, [recentUsedColors, recentUsedColorsKey, isShowMenu, isPickerShow]);
|
|
60
71
|
var toggle = useCallback(function () {
|
|
61
72
|
if (isPickerShow) return;
|
|
62
73
|
popoverRef.current.toggle();
|
|
@@ -81,7 +92,9 @@ var ColorMenu = function ColorMenu(_ref) {
|
|
|
81
92
|
|
|
82
93
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
83
94
|
}, []);
|
|
84
|
-
var validClassName = classnames(className, 'sdoc-color-menu', {
|
|
95
|
+
var validClassName = classnames(className, 'sdoc-color-menu sdoc-menu-with-dropdown', {
|
|
96
|
+
'menu-show': isShowMenu,
|
|
97
|
+
'disabled': disabled,
|
|
85
98
|
'rich-icon-btn d-flex': isRichEditor,
|
|
86
99
|
'rich-icon-btn-disabled': isRichEditor && disabled,
|
|
87
100
|
'rich-icon-btn-hover': isRichEditor && !disabled,
|
|
@@ -93,25 +106,37 @@ var ColorMenu = function ColorMenu(_ref) {
|
|
|
93
106
|
|
|
94
107
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
95
108
|
}, [recentUsedColors]);
|
|
109
|
+
var buttonId = "button-".concat(id);
|
|
96
110
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("button", {
|
|
97
111
|
type: "button",
|
|
98
|
-
className: validClassName
|
|
112
|
+
className: validClassName,
|
|
113
|
+
id: buttonId,
|
|
114
|
+
disabled: disabled
|
|
99
115
|
}, /*#__PURE__*/React.createElement("div", {
|
|
100
|
-
className:
|
|
116
|
+
className: classnames('last-used-color-container sdoc-menu-with-dropdown-icon', {
|
|
117
|
+
'disabled': disabled
|
|
118
|
+
}),
|
|
101
119
|
onClick: setRecentUsedColor
|
|
102
120
|
}, /*#__PURE__*/React.createElement("i", {
|
|
103
121
|
className: classnames(iconClass, 'sdoc-color-icon')
|
|
104
122
|
}), /*#__PURE__*/React.createElement("div", {
|
|
105
|
-
className: "
|
|
123
|
+
className: "last-used-color",
|
|
106
124
|
style: {
|
|
107
|
-
backgroundColor:
|
|
125
|
+
backgroundColor: lastUsedColor || 'unset'
|
|
108
126
|
}
|
|
109
|
-
})), /*#__PURE__*/React.createElement("
|
|
127
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
110
128
|
id: id,
|
|
111
|
-
className: "
|
|
112
|
-
}
|
|
129
|
+
className: "sdoc-color-toggle sdoc-menu-with-dropdown-triangle"
|
|
130
|
+
}, /*#__PURE__*/React.createElement("i", {
|
|
131
|
+
className: "sdoc-menu-with-dropdown-triangle-icon sdocfont sdoc-".concat(isShowMenu ? 'caret-up' : 'drop-down')
|
|
132
|
+
}))), text && /*#__PURE__*/React.createElement(UncontrolledTooltip, {
|
|
133
|
+
target: buttonId,
|
|
134
|
+
fade: false,
|
|
135
|
+
placement: "bottom",
|
|
136
|
+
delay: 0
|
|
137
|
+
}, t(text)), !disabled && /*#__PURE__*/React.createElement(UncontrolledPopover, {
|
|
113
138
|
target: id,
|
|
114
|
-
className:
|
|
139
|
+
className: classnames('sdoc-color-menu-popover', popoverClassName),
|
|
115
140
|
trigger: "legacy",
|
|
116
141
|
placement: "bottom-start",
|
|
117
142
|
hideArrow: true,
|
|
@@ -127,16 +152,16 @@ var ColorMenu = function ColorMenu(_ref) {
|
|
|
127
152
|
}, /*#__PURE__*/React.createElement("div", {
|
|
128
153
|
className: "sdoc-color-no-color-content",
|
|
129
154
|
onClick: function onClick() {
|
|
130
|
-
return onSetColor();
|
|
155
|
+
return onSetColor(defaultColor);
|
|
131
156
|
}
|
|
132
|
-
}, t('No_color'))), /*#__PURE__*/React.createElement("div", {
|
|
157
|
+
}, defaultColorTip || t('No_color'))), /*#__PURE__*/React.createElement("div", {
|
|
133
158
|
className: "sdoc-color-default-colors-container",
|
|
134
159
|
onClick: setColorProxy
|
|
135
160
|
}, DEFAULT_COLORS.map(function (color, index) {
|
|
136
161
|
return /*#__PURE__*/React.createElement(ColorItem, {
|
|
137
162
|
key: "default-color-".concat(index),
|
|
138
163
|
color: color,
|
|
139
|
-
|
|
164
|
+
lastUsedColor: lastUsedColor
|
|
140
165
|
});
|
|
141
166
|
})), /*#__PURE__*/React.createElement("div", {
|
|
142
167
|
className: "sdoc-color-standard-colors-container"
|
|
@@ -149,7 +174,7 @@ var ColorMenu = function ColorMenu(_ref) {
|
|
|
149
174
|
return /*#__PURE__*/React.createElement(ColorItem, {
|
|
150
175
|
key: "standard-color-".concat(index),
|
|
151
176
|
color: color,
|
|
152
|
-
|
|
177
|
+
lastUsedColor: lastUsedColor
|
|
153
178
|
});
|
|
154
179
|
}))), /*#__PURE__*/React.createElement("div", {
|
|
155
180
|
className: "sdoc-color-recent-used-colors-container"
|
|
@@ -188,7 +213,7 @@ var ColorMenu = function ColorMenu(_ref) {
|
|
|
188
213
|
onClick: onClick
|
|
189
214
|
}, /*#__PURE__*/React.createElement(ChromePicker, {
|
|
190
215
|
disableAlpha: true,
|
|
191
|
-
color:
|
|
216
|
+
color: lastUsedColor || '',
|
|
192
217
|
onChange: onChange
|
|
193
218
|
}))))));
|
|
194
219
|
};
|