@seafile/sdoc-editor 0.1.154-beta5 → 0.1.155
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/api/seafile-api.js +9 -22
- package/dist/basic-sdk/comment/comment-decorate.js +1 -1
- package/dist/basic-sdk/constants/index.js +1 -25
- package/dist/basic-sdk/editor.js +105 -0
- package/dist/basic-sdk/extension/constants/color.js +2 -2
- package/dist/basic-sdk/extension/constants/diff-view.js +2 -2
- package/dist/basic-sdk/extension/constants/element-type.js +1 -6
- package/dist/basic-sdk/extension/constants/index.js +2 -2
- package/dist/basic-sdk/extension/constants/menus-config.js +0 -5
- package/dist/basic-sdk/extension/core/transforms/replace-node-children.js +0 -26
- package/dist/basic-sdk/extension/plugins/file-link/render-elem.js +2 -2
- package/dist/basic-sdk/extension/plugins/sdoc-link/render-elem.js +2 -2
- package/dist/basic-sdk/extension/plugins/table/constants/index.js +3 -3
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/cell-bg-color-menu.js +13 -9
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.js +2 -2
- package/dist/basic-sdk/extension/plugins/table/render/render-cell.js +11 -11
- package/dist/basic-sdk/extension/plugins/text-style/render-elem.js +2 -2
- package/dist/basic-sdk/extension/render/render-element.js +1 -221
- package/dist/basic-sdk/hooks/use-color-context.js +10 -10
- package/dist/basic-sdk/{editor/slate-editor.js → slate-editor.js} +16 -21
- package/dist/basic-sdk/socket/helpers.js +0 -2
- package/dist/basic-sdk/socket/socket-client.js +0 -58
- package/dist/basic-sdk/socket/socket-manager.js +2 -34
- package/dist/basic-sdk/socket/with-socket-io.js +12 -35
- package/dist/basic-sdk/utils/diff.js +3 -4
- package/dist/basic-sdk/views/diff-viewer.js +2 -4
- package/dist/basic-sdk/views/viewer.js +12 -9
- package/dist/components/doc-operations/index.js +2 -4
- package/dist/components/doc-operations/revision-operations/index.js +2 -5
- package/dist/components/doc-operations/revision-operations/publish-button.js +13 -6
- package/dist/constants/index.js +2 -26
- package/dist/context.js +9 -37
- package/dist/pages/simple-editor.js +84 -251
- package/package.json +1 -1
- package/public/locales/en/sdoc-editor.json +1 -11
- package/public/locales/zh_CN/sdoc-editor.json +1 -10
- package/dist/basic-sdk/editor/common-editor.js +0 -50
- package/dist/basic-sdk/editor/index.css +0 -29
- package/dist/basic-sdk/editor/index.js +0 -129
- package/dist/basic-sdk/utils/rebase.js +0 -193
- package/dist/components/tip-dialog/index.js +0 -48
- package/dist/components/tip-dialog/tip-content.js +0 -47
package/dist/api/seafile-api.js
CHANGED
|
@@ -3,12 +3,7 @@ import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
|
3
3
|
import axios from 'axios';
|
|
4
4
|
var SeafileAPI = /*#__PURE__*/function () {
|
|
5
5
|
function SeafileAPI(server, token) {
|
|
6
|
-
var _this = this;
|
|
7
6
|
_classCallCheck(this, SeafileAPI);
|
|
8
|
-
this.deleteSdocRevision = function (docUuid) {
|
|
9
|
-
var url = 'api/v2.1/seadoc/revision/' + docUuid + '/';
|
|
10
|
-
return _this.req.delete(url);
|
|
11
|
-
};
|
|
12
7
|
this.req = axios.create({
|
|
13
8
|
baseURL: server,
|
|
14
9
|
headers: {
|
|
@@ -51,6 +46,12 @@ var SeafileAPI = /*#__PURE__*/function () {
|
|
|
51
46
|
var url = '/api/v2.1/seadoc/download-image/' + docUuid + '/' + encodeURIComponent(imageName);
|
|
52
47
|
return this.req.get(url);
|
|
53
48
|
}
|
|
49
|
+
}, {
|
|
50
|
+
key: "sdocPublishRevision",
|
|
51
|
+
value: function sdocPublishRevision(docUuid) {
|
|
52
|
+
var url = '/api/v2.1/seadoc/publish-revision/' + docUuid + '/';
|
|
53
|
+
return this.req.post(url);
|
|
54
|
+
}
|
|
54
55
|
}, {
|
|
55
56
|
key: "startRevise",
|
|
56
57
|
value: function startRevise(repoID, fileUuid, path) {
|
|
@@ -62,9 +63,9 @@ var SeafileAPI = /*#__PURE__*/function () {
|
|
|
62
63
|
return this._sendPostRequest(url, form);
|
|
63
64
|
}
|
|
64
65
|
}, {
|
|
65
|
-
key: "
|
|
66
|
-
value: function
|
|
67
|
-
var url = '/api/v2.1/seadoc/revision/
|
|
66
|
+
key: "getSeadocRevisionDownloadLinks",
|
|
67
|
+
value: function getSeadocRevisionDownloadLinks(docUuid) {
|
|
68
|
+
var url = '/api/v2.1/seadoc/revision/download-links/' + docUuid + '/';
|
|
68
69
|
return this.req.get(url);
|
|
69
70
|
}
|
|
70
71
|
}, {
|
|
@@ -80,20 +81,6 @@ var SeafileAPI = /*#__PURE__*/function () {
|
|
|
80
81
|
var url = 'api/v2.1/seadoc/revisions/' + docUuid + '/?page=' + page + '&per_page=' + perPage;
|
|
81
82
|
return this.req.get(url);
|
|
82
83
|
}
|
|
83
|
-
}, {
|
|
84
|
-
key: "updateSdocRevision",
|
|
85
|
-
value: function updateSdocRevision(docUuid) {
|
|
86
|
-
var url = 'api/v2.1/seadoc/revision/' + docUuid + '/';
|
|
87
|
-
return this.req.put(url);
|
|
88
|
-
}
|
|
89
|
-
}, {
|
|
90
|
-
key: "getRevisionBasicVersionContent",
|
|
91
|
-
value: function getRevisionBasicVersionContent(docUuid) {
|
|
92
|
-
var url = 'api/v2.1/seadoc/revision/basic-version-content/' + docUuid + '/';
|
|
93
|
-
return this.req.get(url);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// local files
|
|
97
84
|
}, {
|
|
98
85
|
key: "getSdocFiles",
|
|
99
86
|
value: function getSdocFiles(docUuid, p, type) {
|
|
@@ -23,7 +23,7 @@ export var commentDecorate = function commentDecorate(editor) {
|
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
// rgba prevents occlusion of the cursor
|
|
26
|
-
decoration['
|
|
26
|
+
decoration['computed_background_color'] = 'rgba(129, 237, 247, 0.5)';
|
|
27
27
|
decoration['comment_count'] = unresolvedComments === null || unresolvedComments === void 0 ? void 0 : unresolvedComments.length;
|
|
28
28
|
decorations.push(decoration);
|
|
29
29
|
}
|
|
@@ -6,28 +6,4 @@ export var INTERNAL_EVENT = {
|
|
|
6
6
|
INSERT_ELEMENT: 'insert_element',
|
|
7
7
|
OUTLINE_STATE_CHANGED: 'outline_state_changed'
|
|
8
8
|
};
|
|
9
|
-
export var PAGE_EDIT_AREA_WIDTH = 672; // 672 = 794 - 2[borderLeft + borderRight] - 120[paddingLeft + paddingRight]
|
|
10
|
-
|
|
11
|
-
export var MODIFY_TYPE = {
|
|
12
|
-
ADD: 'add',
|
|
13
|
-
DELETE: 'delete',
|
|
14
|
-
MODIFY: 'modify',
|
|
15
|
-
CHILDREN_MODIFY: 'children_modify'
|
|
16
|
-
};
|
|
17
|
-
export var REBASE_TYPE = {
|
|
18
|
-
MODIFY_MODIFY: 'modify_modify',
|
|
19
|
-
DELETE_MODIFY: 'delete_modify',
|
|
20
|
-
MODIFY_DELETE: 'modify_delete',
|
|
21
|
-
CHILDREN_MODIFY: 'children_modify'
|
|
22
|
-
};
|
|
23
|
-
export var REBASE_MARK_KEY = {
|
|
24
|
-
ORIGIN: 'origin',
|
|
25
|
-
REBASE_TYPE: 'rebase_type',
|
|
26
|
-
MODIFY_TYPE: 'modify_type',
|
|
27
|
-
OLD_ELEMENT: 'old_element'
|
|
28
|
-
};
|
|
29
|
-
export var REBASE_ORIGIN = {
|
|
30
|
-
OTHER: 'other',
|
|
31
|
-
MY: 'my'
|
|
32
|
-
};
|
|
33
|
-
export var REBASE_MARKS = [REBASE_MARK_KEY.ORIGIN, REBASE_MARK_KEY.REBASE_TYPE, REBASE_MARK_KEY.MODIFY_TYPE, REBASE_MARK_KEY.OLD_ELEMENT];
|
|
9
|
+
export var PAGE_EDIT_AREA_WIDTH = 672; // 672 = 794 - 2[borderLeft + borderRight] - 120[paddingLeft + paddingRight]
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
import React, { useEffect, useMemo, useState, forwardRef, useImperativeHandle } from 'react';
|
|
3
|
+
import { Editor } from '@seafile/slate';
|
|
4
|
+
import { useTranslation } from 'react-i18next';
|
|
5
|
+
import { createDefaultEditor } from './extension';
|
|
6
|
+
import { focusEditor } from './extension/core';
|
|
7
|
+
import { withSocketIO } from './socket';
|
|
8
|
+
import withNodeId from './node-id';
|
|
9
|
+
import { PAGE_EDIT_AREA_WIDTH } from './constants';
|
|
10
|
+
import context from '../context';
|
|
11
|
+
import { EditorContainer, EditorContent } from './layout';
|
|
12
|
+
import SlateEditor from './slate-editor';
|
|
13
|
+
import InsertElementDialog from './extension/commons/insert-element-dialog';
|
|
14
|
+
var SDocEditor = forwardRef(function (_ref, ref) {
|
|
15
|
+
var document = _ref.document,
|
|
16
|
+
config = _ref.config;
|
|
17
|
+
var _useTranslation = useTranslation(),
|
|
18
|
+
t = _useTranslation.t;
|
|
19
|
+
|
|
20
|
+
// init editor
|
|
21
|
+
var editor = useMemo(function () {
|
|
22
|
+
var defaultEditor = createDefaultEditor();
|
|
23
|
+
var newEditor = withNodeId(withSocketIO(defaultEditor, {
|
|
24
|
+
document: document,
|
|
25
|
+
config: config
|
|
26
|
+
}));
|
|
27
|
+
var cursors = document.cursors;
|
|
28
|
+
newEditor.cursors = cursors || {};
|
|
29
|
+
newEditor.width = PAGE_EDIT_AREA_WIDTH; // default width
|
|
30
|
+
newEditor.readonly = false;
|
|
31
|
+
return newEditor;
|
|
32
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33
|
+
}, []);
|
|
34
|
+
var _useState = useState(document.children),
|
|
35
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
36
|
+
slateValue = _useState2[0],
|
|
37
|
+
setSlateValue = _useState2[1];
|
|
38
|
+
|
|
39
|
+
// The parent component can call the method of this component through ref
|
|
40
|
+
useImperativeHandle(ref, function () {
|
|
41
|
+
return {
|
|
42
|
+
// get latest value
|
|
43
|
+
getValue: function getValue() {
|
|
44
|
+
return slateValue;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}, [slateValue]);
|
|
48
|
+
|
|
49
|
+
// useMount: init socket connection
|
|
50
|
+
useEffect(function () {
|
|
51
|
+
editor.openConnection();
|
|
52
|
+
return function () {
|
|
53
|
+
editor.closeConnection();
|
|
54
|
+
};
|
|
55
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
56
|
+
}, []);
|
|
57
|
+
|
|
58
|
+
// useMount: focus editor
|
|
59
|
+
useEffect(function () {
|
|
60
|
+
var timer = setTimeout(function () {
|
|
61
|
+
var _editor$children = _slicedToArray(editor.children, 1),
|
|
62
|
+
firstNode = _editor$children[0];
|
|
63
|
+
if (firstNode) {
|
|
64
|
+
var _firstNode$children = _slicedToArray(firstNode.children, 1),
|
|
65
|
+
firstNodeFirstChild = _firstNode$children[0];
|
|
66
|
+
if (firstNodeFirstChild) {
|
|
67
|
+
var endOfFirstNode = Editor.end(editor, [0, 0]);
|
|
68
|
+
var range = {
|
|
69
|
+
anchor: endOfFirstNode,
|
|
70
|
+
focus: endOfFirstNode
|
|
71
|
+
};
|
|
72
|
+
focusEditor(editor, range);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}, 300);
|
|
76
|
+
return function () {
|
|
77
|
+
clearTimeout(timer);
|
|
78
|
+
};
|
|
79
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
80
|
+
}, []);
|
|
81
|
+
|
|
82
|
+
// useMount: reset title
|
|
83
|
+
useEffect(function () {
|
|
84
|
+
var isSdocRevision = context.getSetting('isSdocRevision');
|
|
85
|
+
var originFilename = context.getSetting('originFilename');
|
|
86
|
+
if (isSdocRevision) {
|
|
87
|
+
window.document.getElementsByTagName('title')[0].innerText = "".concat(t('Revision'), " - ").concat(originFilename);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
91
|
+
}, []);
|
|
92
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(EditorContainer, {
|
|
93
|
+
editor: editor
|
|
94
|
+
}, /*#__PURE__*/React.createElement(EditorContent, {
|
|
95
|
+
docValue: slateValue,
|
|
96
|
+
showOutline: true
|
|
97
|
+
}, /*#__PURE__*/React.createElement(SlateEditor, {
|
|
98
|
+
editor: editor,
|
|
99
|
+
slateValue: slateValue,
|
|
100
|
+
setSlateValue: setSlateValue
|
|
101
|
+
}))), /*#__PURE__*/React.createElement(InsertElementDialog, {
|
|
102
|
+
editor: editor
|
|
103
|
+
}));
|
|
104
|
+
});
|
|
105
|
+
export default SDocEditor;
|
|
@@ -268,9 +268,9 @@ export var DEFAULT_FONT_COLOR = '#333333';
|
|
|
268
268
|
// default last used color
|
|
269
269
|
export var DEFAULT_LAST_USED_FONT_COLOR = '#FFFF00';
|
|
270
270
|
export var DEFAULT_LAST_USED_HIGHLIGHT_COLOR = '#FF0000';
|
|
271
|
-
export var
|
|
271
|
+
export var DEFAULT_LAST_USED_TABLE_CELL_BACKGROUND_COLOR = '#FF0000';
|
|
272
272
|
|
|
273
273
|
// recent used colors key
|
|
274
274
|
export var RECENT_USED_HIGHLIGHT_COLORS_KEY = 'sdoc-recent-used-highlight-colors';
|
|
275
275
|
export var RECENT_USED_FONT_COLORS_KEY = 'sdoc-recent-used-font-colors';
|
|
276
|
-
export var
|
|
276
|
+
export var RECENT_USED_TABLE_CELL_BACKGROUND_COLORS_KEY = 'sdoc-recent-used-bg-colors';
|
|
@@ -5,10 +5,10 @@ export var DIFF_TYPE = {
|
|
|
5
5
|
COMMON: 'common'
|
|
6
6
|
};
|
|
7
7
|
export var DELETED_STYLE = {
|
|
8
|
-
|
|
8
|
+
computed_background_color: '#ffeef0',
|
|
9
9
|
color: 'rgb(165, 32, 21)'
|
|
10
10
|
};
|
|
11
11
|
export var ADDED_STYLE = {
|
|
12
|
-
|
|
12
|
+
computed_background_color: '#e6ffed',
|
|
13
13
|
color: 'rgb(137, 181, 66)'
|
|
14
14
|
};
|
|
@@ -22,9 +22,4 @@ export var TABLE_CELL = 'table-cell';
|
|
|
22
22
|
export var LINK = 'link';
|
|
23
23
|
export var SDOC_LINK = 'sdoc-link';
|
|
24
24
|
export var FILE_LINK = 'file_link';
|
|
25
|
-
export var IMAGE = 'image';
|
|
26
|
-
|
|
27
|
-
// font
|
|
28
|
-
export var FONT_SIZE = 'font-size';
|
|
29
|
-
export var FONT_SIZE_INCREASE = 'font-size-increase';
|
|
30
|
-
export var FONT_SIZE_REDUCE = 'font-size-reduce';
|
|
25
|
+
export var IMAGE = 'image';
|
|
@@ -3,11 +3,11 @@ var _HEADER_TITLE_MAP;
|
|
|
3
3
|
// extension plugin
|
|
4
4
|
import * as ELEMENT_TYPE from './element-type';
|
|
5
5
|
import { BLOCKQUOTE, TITLE, SUBTITLE, HEADER, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, PARAGRAPH, ORDERED_LIST, UNORDERED_LIST, LIST_ITEM, LIST_LIC, CHECK_LIST_ITEM, CODE_BLOCK, CODE_LINE, TABLE, TABLE_CELL, TABLE_ROW, LINK, SDOC_LINK, FILE_LINK, IMAGE } from './element-type';
|
|
6
|
-
export { DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_LIST, DEFAULT_FONT_COLOR, RECENT_USED_HIGHLIGHT_COLORS_KEY, RECENT_USED_FONT_COLORS_KEY,
|
|
6
|
+
export { DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_LIST, DEFAULT_FONT_COLOR, RECENT_USED_HIGHLIGHT_COLORS_KEY, RECENT_USED_FONT_COLORS_KEY, RECENT_USED_TABLE_CELL_BACKGROUND_COLORS_KEY, DEFAULT_LAST_USED_FONT_COLOR, DEFAULT_LAST_USED_HIGHLIGHT_COLOR, DEFAULT_LAST_USED_TABLE_CELL_BACKGROUND_COLOR } from './color';
|
|
7
7
|
export { FONT_SIZE, DEFAULT_FONT, FONT, GOOGLE_FONT_CLASS, RECENT_USED_FONTS_KEY, SDOC_FONT_SIZE } from './font';
|
|
8
8
|
export { DIFF_TYPE, ADDED_STYLE, DELETED_STYLE } from './diff-view';
|
|
9
9
|
export { KEYBOARD, MAC_HOTKEYS, WIN_HOTKEYS } from './keyboard';
|
|
10
|
-
export { UNDO, REDO, TEXT_STYLE, TEXT_STYLE_MAP, TEXT_STYLE_MORE, TEXT_ALIGN, REMOVE_TABLE,
|
|
10
|
+
export { UNDO, REDO, TEXT_STYLE, TEXT_STYLE_MAP, TEXT_STYLE_MORE, TEXT_ALIGN, REMOVE_TABLE, CLEAR_FORMAT, MENUS_CONFIG_MAP, SIDE_MENUS_CONFIG } from './menus-config';
|
|
11
11
|
export var HEADERS = [HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6];
|
|
12
12
|
export var HEADER_TITLE_MAP = (_HEADER_TITLE_MAP = {}, _defineProperty(_HEADER_TITLE_MAP, TITLE, 'Title'), _defineProperty(_HEADER_TITLE_MAP, SUBTITLE, 'Subtitle'), _defineProperty(_HEADER_TITLE_MAP, HEADER1, 'Header_one'), _defineProperty(_HEADER_TITLE_MAP, HEADER2, 'Header_two'), _defineProperty(_HEADER_TITLE_MAP, HEADER3, 'Header_three'), _defineProperty(_HEADER_TITLE_MAP, HEADER4, 'Header_four'), _defineProperty(_HEADER_TITLE_MAP, HEADER5, 'Header_five'), _defineProperty(_HEADER_TITLE_MAP, HEADER6, 'Header_six'), _defineProperty(_HEADER_TITLE_MAP, PARAGRAPH, 'Paragraph'), _HEADER_TITLE_MAP);
|
|
13
13
|
export var LIST_TYPE_ARRAY = ['unordered_list', 'ordered_list'];
|
|
@@ -6,7 +6,6 @@ export var UNDO = 'undo';
|
|
|
6
6
|
export var REDO = 'redo';
|
|
7
7
|
export var CLEAR_FORMAT = 'clear_format';
|
|
8
8
|
export var REMOVE_TABLE = 'remove_table';
|
|
9
|
-
export var BG_COLOR = 'bg_color';
|
|
10
9
|
|
|
11
10
|
// text style
|
|
12
11
|
var ITALIC = 'italic';
|
|
@@ -142,10 +141,6 @@ export var MENUS_CONFIG_MAP = (_MENUS_CONFIG_MAP = {}, _defineProperty(_MENUS_CO
|
|
|
142
141
|
iconClass: 'sdocfont sdoc-redo',
|
|
143
142
|
text: 'Redo',
|
|
144
143
|
type: 'redo'
|
|
145
|
-
}), _defineProperty(_MENUS_CONFIG_MAP, BG_COLOR, {
|
|
146
|
-
id: "sdoc_".concat(BG_COLOR),
|
|
147
|
-
iconClass: 'sdocfont sdoc-bg-color',
|
|
148
|
-
text: 'Background_color'
|
|
149
144
|
}), _defineProperty(_MENUS_CONFIG_MAP, CLEAR_FORMAT, {
|
|
150
145
|
id: "sdoc_".concat(CLEAR_FORMAT),
|
|
151
146
|
iconClass: 'sdocfont sdoc-format-clear',
|
|
@@ -12,30 +12,4 @@ export var replaceNodeChildren = function replaceNodeChildren(editor, _ref) {
|
|
|
12
12
|
at: at.concat([0])
|
|
13
13
|
}));
|
|
14
14
|
});
|
|
15
|
-
};
|
|
16
|
-
export var replaceNode = function replaceNode(editor) {
|
|
17
|
-
var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
18
|
-
at = _ref2.at,
|
|
19
|
-
nodes = _ref2.nodes,
|
|
20
|
-
insertOptions = _ref2.insertOptions,
|
|
21
|
-
removeOptions = _ref2.removeOptions;
|
|
22
|
-
Editor.withoutNormalizing(editor, function () {
|
|
23
|
-
Transforms.removeNodes(editor, _objectSpread({
|
|
24
|
-
at: at
|
|
25
|
-
}, removeOptions));
|
|
26
|
-
Transforms.insertNodes(editor, nodes, _objectSpread(_objectSpread({}, insertOptions), {}, {
|
|
27
|
-
at: at
|
|
28
|
-
}));
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
export var deleteNodeMark = function deleteNodeMark(editor, path, element) {
|
|
32
|
-
var marks = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
33
|
-
var newElement = _objectSpread({}, element);
|
|
34
|
-
marks.forEach(function (markItem) {
|
|
35
|
-
newElement[markItem] && delete newElement[markItem];
|
|
36
|
-
});
|
|
37
|
-
replaceNode(editor, {
|
|
38
|
-
at: path,
|
|
39
|
-
nodes: newElement
|
|
40
|
-
});
|
|
41
15
|
};
|
|
@@ -98,8 +98,8 @@ var FileLink = function FileLink(_ref) {
|
|
|
98
98
|
} else if (element.DELETE) {
|
|
99
99
|
style = _objectSpread({}, DELETED_STYLE);
|
|
100
100
|
}
|
|
101
|
-
if (style.
|
|
102
|
-
style['backgroundColor'] = style.
|
|
101
|
+
if (style.computed_background_color) {
|
|
102
|
+
style['backgroundColor'] = style.computed_background_color;
|
|
103
103
|
}
|
|
104
104
|
return /*#__PURE__*/React.createElement("span", Object.assign({}, attributes, {
|
|
105
105
|
"data-id": element.id,
|
|
@@ -97,8 +97,8 @@ var SdocFileLink = function SdocFileLink(_ref) {
|
|
|
97
97
|
} else if (element.DELETE) {
|
|
98
98
|
style = _objectSpread({}, DELETED_STYLE);
|
|
99
99
|
}
|
|
100
|
-
if (style.
|
|
101
|
-
style['backgroundColor'] = style.
|
|
100
|
+
if (style.computed_background_color) {
|
|
101
|
+
style['backgroundColor'] = style.computed_background_color;
|
|
102
102
|
}
|
|
103
103
|
return /*#__PURE__*/React.createElement("span", Object.assign({}, attributes, {
|
|
104
104
|
"data-id": element.id,
|
|
@@ -21,8 +21,8 @@ export var TABLE_ELEMENT_POSITION = {
|
|
|
21
21
|
AFTER: 'after',
|
|
22
22
|
BEFORE: 'before'
|
|
23
23
|
};
|
|
24
|
-
export var
|
|
25
|
-
export var
|
|
24
|
+
export var SELECTED_TABLE_CELL_BACKGROUND_COLOR = '#dee8fe';
|
|
25
|
+
export var TABLE_CELL_STYLE = {
|
|
26
26
|
TEXT_ALIGN: 'textAlign',
|
|
27
|
-
|
|
27
|
+
BACKGROUND_COLOR: 'bg_color'
|
|
28
28
|
};
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
2
|
import React, { useCallback } from 'react';
|
|
3
3
|
import { ColorMenu } from '../../../../commons';
|
|
4
|
-
import {
|
|
4
|
+
import { RECENT_USED_TABLE_CELL_BACKGROUND_COLORS_KEY } from '../../../../constants';
|
|
5
5
|
import { setCellStyle } from '../../helpers';
|
|
6
6
|
import { useColorContext } from '../../../../../hooks/use-color-context';
|
|
7
|
-
var
|
|
7
|
+
var menuConfig = {
|
|
8
|
+
id: 'sdoc_background_color',
|
|
9
|
+
iconClass: 'sdocfont sdoc-bg-color',
|
|
10
|
+
text: 'Background_color'
|
|
11
|
+
};
|
|
12
|
+
var CellBackgroundColorMenu = function CellBackgroundColorMenu(_ref) {
|
|
8
13
|
var isRichEditor = _ref.isRichEditor,
|
|
9
14
|
className = _ref.className,
|
|
10
15
|
editor = _ref.editor;
|
|
11
16
|
var _useColorContext = useColorContext(),
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var menuConfig = MENUS_CONFIG_MAP[BG_COLOR];
|
|
17
|
+
lastUsedTableCellBackgroundColor = _useColorContext.lastUsedTableCellBackgroundColor,
|
|
18
|
+
updateLastUsedTableCellBackgroundColor = _useColorContext.updateLastUsedTableCellBackgroundColor;
|
|
15
19
|
var setColor = useCallback(function (color) {
|
|
16
20
|
setCellStyle(editor, {
|
|
17
21
|
bg_color: color
|
|
@@ -25,11 +29,11 @@ var CellBgColorMenu = function CellBgColorMenu(_ref) {
|
|
|
25
29
|
}, menuConfig), {}, {
|
|
26
30
|
onMouseDown: function onMouseDown() {},
|
|
27
31
|
setColor: setColor,
|
|
28
|
-
recentUsedColorsKey:
|
|
29
|
-
lastUsedColor:
|
|
30
|
-
updateLastUsedColor:
|
|
32
|
+
recentUsedColorsKey: RECENT_USED_TABLE_CELL_BACKGROUND_COLORS_KEY,
|
|
33
|
+
lastUsedColor: lastUsedTableCellBackgroundColor,
|
|
34
|
+
updateLastUsedColor: updateLastUsedTableCellBackgroundColor,
|
|
31
35
|
popoverClassName: 'sdoc-table-cell-bg-colors-popover'
|
|
32
36
|
});
|
|
33
37
|
return /*#__PURE__*/React.createElement(ColorMenu, props);
|
|
34
38
|
};
|
|
35
|
-
export default
|
|
39
|
+
export default CellBackgroundColorMenu;
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { withTranslation } from 'react-i18next';
|
|
3
3
|
import { MenuGroup } from '../../../../commons';
|
|
4
4
|
import { isAllInTable } from '../../helpers';
|
|
5
|
-
import
|
|
5
|
+
import CellBackgroundColorMenu from './cell-bg-color-menu';
|
|
6
6
|
import CellTextAlignMenu from './cell-text-align-menu';
|
|
7
7
|
import RemoveTable from './remove-table-menu';
|
|
8
8
|
import TableColumnMenu from './table-column-menu';
|
|
@@ -25,7 +25,7 @@ var ActiveTableMenu = function ActiveTableMenu(_ref) {
|
|
|
25
25
|
}), /*#__PURE__*/React.createElement(TableRowMenu, {
|
|
26
26
|
editor: editor,
|
|
27
27
|
readonly: readonly
|
|
28
|
-
}), /*#__PURE__*/React.createElement(
|
|
28
|
+
}), /*#__PURE__*/React.createElement(CellBackgroundColorMenu, {
|
|
29
29
|
editor: editor,
|
|
30
30
|
isRichEditor: isRichEditor,
|
|
31
31
|
className: className,
|
|
@@ -6,7 +6,7 @@ import { Transforms } from '@seafile/slate';
|
|
|
6
6
|
import ObjectUtils from '../../../../utils/object-utils';
|
|
7
7
|
import { findPath, focusEditor } from '../../../core';
|
|
8
8
|
import { useResizeHandlersContext, useTableSelectedRangeContext } from './hooks';
|
|
9
|
-
import { EMPTY_SELECTED_RANGE,
|
|
9
|
+
import { EMPTY_SELECTED_RANGE, SELECTED_TABLE_CELL_BACKGROUND_COLOR, TABLE_CELL_STYLE } from '../constants';
|
|
10
10
|
import { getTableColumns, getCellColumn, colorBlend } from '../helpers';
|
|
11
11
|
var TableCell = function TableCell(_ref) {
|
|
12
12
|
var attributes = _ref.attributes,
|
|
@@ -39,16 +39,16 @@ var TableCell = function TableCell(_ref) {
|
|
|
39
39
|
});
|
|
40
40
|
}, [editor, element]);
|
|
41
41
|
var style = attributes.style || {};
|
|
42
|
-
if (ObjectUtils.hasProperty(element.style,
|
|
43
|
-
style[
|
|
42
|
+
if (ObjectUtils.hasProperty(element.style, TABLE_CELL_STYLE.TEXT_ALIGN)) {
|
|
43
|
+
style[TABLE_CELL_STYLE.TEXT_ALIGN] = element.style[TABLE_CELL_STYLE.TEXT_ALIGN];
|
|
44
44
|
}
|
|
45
45
|
if (isSelected) {
|
|
46
|
-
style['backgroundColor'] =
|
|
46
|
+
style['backgroundColor'] = SELECTED_TABLE_CELL_BACKGROUND_COLOR;
|
|
47
47
|
}
|
|
48
|
-
if (ObjectUtils.hasProperty(element.style,
|
|
49
|
-
var color = element.style[
|
|
48
|
+
if (ObjectUtils.hasProperty(element.style, TABLE_CELL_STYLE.BACKGROUND_COLOR)) {
|
|
49
|
+
var color = element.style[TABLE_CELL_STYLE.BACKGROUND_COLOR];
|
|
50
50
|
if (color && color !== 'transparent' && color !== 'unset') {
|
|
51
|
-
style['backgroundColor'] = isSelected ? colorBlend(
|
|
51
|
+
style['backgroundColor'] = isSelected ? colorBlend(SELECTED_TABLE_CELL_BACKGROUND_COLOR, color, 0.9) : color;
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
return /*#__PURE__*/React.createElement("div", Object.assign({}, attributes, {
|
|
@@ -85,11 +85,11 @@ function renderTableCell(props) {
|
|
|
85
85
|
|
|
86
86
|
// const cellValue = element;
|
|
87
87
|
var style = attributes.style || {};
|
|
88
|
-
if (ObjectUtils.hasProperty(element.style,
|
|
89
|
-
style[
|
|
88
|
+
if (ObjectUtils.hasProperty(element.style, TABLE_CELL_STYLE.TEXT_ALIGN)) {
|
|
89
|
+
style[TABLE_CELL_STYLE.TEXT_ALIGN] = element[TABLE_CELL_STYLE.TEXT_ALIGN];
|
|
90
90
|
}
|
|
91
|
-
if (ObjectUtils.hasProperty(element.style,
|
|
92
|
-
style['backgroundColor'] = element.style[
|
|
91
|
+
if (ObjectUtils.hasProperty(element.style, TABLE_CELL_STYLE.BACKGROUND_COLOR) && element.style[TABLE_CELL_STYLE.BACKGROUND_COLOR]) {
|
|
92
|
+
style['backgroundColor'] = element.style[TABLE_CELL_STYLE.BACKGROUND_COLOR];
|
|
93
93
|
}
|
|
94
94
|
var column = getCellColumn(editor, element);
|
|
95
95
|
var width = column.width;
|
|
@@ -17,8 +17,8 @@ var renderText = function renderText(props, editor) {
|
|
|
17
17
|
style['display'] = 'inline-block';
|
|
18
18
|
style['minWidth'] = '2px';
|
|
19
19
|
}
|
|
20
|
-
if (leaf.
|
|
21
|
-
style['backgroundColor'] = leaf.
|
|
20
|
+
if (leaf.computed_background_color) {
|
|
21
|
+
style['backgroundColor'] = leaf.computed_background_color;
|
|
22
22
|
}
|
|
23
23
|
if (leaf.color) {
|
|
24
24
|
style['color'] = leaf.color;
|