@seafile/sdoc-editor 0.1.124 → 0.1.125-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/basic-sdk/comment/comment/editor-comment.js +11 -2
- package/dist/basic-sdk/comment/comment/style.css +1 -0
- package/dist/basic-sdk/editor.js +25 -171
- package/dist/basic-sdk/extension/plugins/blockquote/helpers.js +2 -1
- package/dist/basic-sdk/extension/plugins/blockquote/menu/index.js +7 -5
- package/dist/basic-sdk/extension/plugins/check-list/helpers.js +2 -1
- package/dist/basic-sdk/extension/plugins/check-list/index.js +2 -2
- package/dist/basic-sdk/extension/plugins/check-list/menu/index.js +7 -5
- package/dist/basic-sdk/extension/plugins/check-list/render-elem.js +5 -9
- package/dist/basic-sdk/extension/plugins/clear-format/helpers.js +2 -0
- package/dist/basic-sdk/extension/plugins/clear-format/menu/index.js +3 -2
- package/dist/basic-sdk/extension/plugins/code-block/helpers.js +2 -1
- package/dist/basic-sdk/extension/plugins/code-block/menu/index.js +7 -4
- package/dist/basic-sdk/extension/plugins/code-block/plugin.js +9 -1
- package/dist/basic-sdk/extension/plugins/code-block/render-elem.js +13 -21
- package/dist/basic-sdk/extension/plugins/font/helpers.js +2 -1
- package/dist/basic-sdk/extension/plugins/font/menu/font-family/index.js +3 -2
- package/dist/basic-sdk/extension/plugins/font/menu/font-size/index.js +3 -2
- package/dist/basic-sdk/extension/plugins/font/menu/index.js +6 -3
- package/dist/basic-sdk/extension/plugins/header/helpers.js +2 -0
- package/dist/basic-sdk/extension/plugins/header/menu/index.js +4 -2
- package/dist/basic-sdk/extension/plugins/image/helpers.js +2 -1
- package/dist/basic-sdk/extension/plugins/image/menu/index.js +8 -6
- package/dist/basic-sdk/extension/plugins/link/helpers.js +2 -1
- package/dist/basic-sdk/extension/plugins/link/menu/index.js +8 -6
- package/dist/basic-sdk/extension/plugins/list/helpers.js +2 -1
- package/dist/basic-sdk/extension/plugins/list/menu/index.js +11 -9
- package/dist/basic-sdk/extension/plugins/sdoc-link/dialogs/select-sdoc-file-dialog/index.css +55 -0
- package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/sdoc-link-file-dialog.js → dialogs/select-sdoc-file-dialog/index.js} +36 -29
- package/dist/basic-sdk/extension/plugins/sdoc-link/dialogs/select-sdoc-file-dialog/local-files/index.css +75 -0
- package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/local-files.js → dialogs/select-sdoc-file-dialog/local-files/index.js} +42 -32
- package/dist/basic-sdk/extension/plugins/sdoc-link/helpers.js +2 -1
- package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/sdoc-link-hover-menu.js → hover-menu/index.js} +1 -1
- package/dist/basic-sdk/extension/plugins/sdoc-link/menu/index.js +7 -6
- package/dist/basic-sdk/extension/plugins/sdoc-link/render-elem.js +3 -2
- package/dist/basic-sdk/extension/plugins/table/helpers.js +2 -1
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/cell-text-align-menu.js +6 -3
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/common-menu.js +3 -2
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.js +12 -6
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/remove-table-menu.js +5 -3
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/table-column-menu.js +8 -4
- package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/table-row-menu.js +8 -4
- package/dist/basic-sdk/extension/plugins/table/menu/table-menu/index.js +7 -5
- package/dist/basic-sdk/extension/plugins/text-align/helpers.js +2 -1
- package/dist/basic-sdk/extension/plugins/text-align/menu/index.js +3 -2
- package/dist/basic-sdk/extension/plugins/text-style/helpers.js +2 -1
- package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +5 -4
- package/dist/basic-sdk/extension/render/render-element.js +3 -5
- package/dist/basic-sdk/extension/toolbar/header-toolbar/index.js +37 -17
- package/dist/basic-sdk/extension/toolbar/header-toolbar/redo-undo.js +7 -4
- package/dist/basic-sdk/layout/editor-container.js +26 -0
- package/dist/basic-sdk/layout/editor-content.js +56 -0
- package/dist/basic-sdk/layout/index.js +4 -0
- package/dist/basic-sdk/outline/index.js +6 -7
- package/dist/basic-sdk/outline/style.css +5 -1
- package/dist/basic-sdk/slate-editor.js +149 -0
- package/dist/basic-sdk/socket/with-socket-io.js +1 -0
- package/dist/basic-sdk/utils/diff.js +12 -0
- package/dist/basic-sdk/views/diff-viewer.js +10 -5
- package/dist/basic-sdk/views/viewer.js +20 -20
- package/dist/components/doc-operations/index.js +2 -0
- package/dist/components/doc-operations/revision-operations/changes-count/index.css +34 -0
- package/dist/components/doc-operations/revision-operations/changes-count/index.js +85 -0
- package/dist/components/doc-operations/revision-operations/index.js +5 -1
- package/dist/pages/diff-viewer.js +2 -0
- package/dist/pages/simple-editor.js +16 -3
- package/package.json +1 -1
- package/public/media/sdoc-editor-font/iconfont.eot +0 -0
- package/public/media/sdoc-editor-font/iconfont.svg +4 -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 +14 -6
- package/dist/basic-sdk/extension/plugins/sdoc-link/menu/local-files.css +0 -98
- package/dist/basic-sdk/extension/plugins/sdoc-link/menu/sdoc-link-file-dialog.css +0 -35
- package/dist/pages/diff-viewer/history-version-viewer.js +0 -15
- package/dist/pages/diff-viewer/index.js +0 -35
- /package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/sdoc-link-hover-menu.css → hover-menu/index.css} +0 -0
|
@@ -35,8 +35,10 @@ var ImageMenu = /*#__PURE__*/function (_React$Component) {
|
|
|
35
35
|
return false;
|
|
36
36
|
};
|
|
37
37
|
_this.isDisabled = function () {
|
|
38
|
-
var
|
|
39
|
-
|
|
38
|
+
var _this$props = _this.props,
|
|
39
|
+
editor = _this$props.editor,
|
|
40
|
+
readonly = _this$props.readonly;
|
|
41
|
+
return isInsertImageMenuDisabled(editor, readonly);
|
|
40
42
|
};
|
|
41
43
|
_this.onToggleClick = function (event) {
|
|
42
44
|
event.stopPropagation();
|
|
@@ -105,10 +107,10 @@ var ImageMenu = /*#__PURE__*/function (_React$Component) {
|
|
|
105
107
|
_createClass(ImageMenu, [{
|
|
106
108
|
key: "render",
|
|
107
109
|
value: function render() {
|
|
108
|
-
var _this$
|
|
109
|
-
isRichEditor = _this$
|
|
110
|
-
className = _this$
|
|
111
|
-
t = _this$
|
|
110
|
+
var _this$props2 = this.props,
|
|
111
|
+
isRichEditor = _this$props2.isRichEditor,
|
|
112
|
+
className = _this$props2.className,
|
|
113
|
+
t = _this$props2.t;
|
|
112
114
|
var _this$state = this.state,
|
|
113
115
|
isShowImagePopover = _this$state.isShowImagePopover,
|
|
114
116
|
isShowInsertImageDialog = _this$state.isShowInsertImageDialog;
|
|
@@ -6,7 +6,8 @@ import { Editor, Transforms, Range } from '@seafile/slate';
|
|
|
6
6
|
import slugid from 'slugid';
|
|
7
7
|
import { LINK } from '../../constants';
|
|
8
8
|
import { getNodeType, getSelectedElems, getAboveNode, getEditorString, replaceNodeChildren } from '../../core';
|
|
9
|
-
export var isMenuDisabled = function isMenuDisabled(editor) {
|
|
9
|
+
export var isMenuDisabled = function isMenuDisabled(editor, readonly) {
|
|
10
|
+
if (readonly) return true;
|
|
10
11
|
if (editor.selection == null) return true;
|
|
11
12
|
var selectedElems = getSelectedElems(editor);
|
|
12
13
|
var notMatch = selectedElems.some(function (elem) {
|
|
@@ -21,8 +21,10 @@ var LinkMenu = /*#__PURE__*/function (_React$Component) {
|
|
|
21
21
|
return getLinkType(editor) === LINK;
|
|
22
22
|
};
|
|
23
23
|
_this.isDisabled = function () {
|
|
24
|
-
var
|
|
25
|
-
|
|
24
|
+
var _this$props = _this.props,
|
|
25
|
+
editor = _this$props.editor,
|
|
26
|
+
readonly = _this$props.readonly;
|
|
27
|
+
return isMenuDisabled(editor, readonly);
|
|
26
28
|
};
|
|
27
29
|
_this.onLinkDialogToggle = function () {
|
|
28
30
|
_this.setState({
|
|
@@ -40,10 +42,10 @@ var LinkMenu = /*#__PURE__*/function (_React$Component) {
|
|
|
40
42
|
_createClass(LinkMenu, [{
|
|
41
43
|
key: "render",
|
|
42
44
|
value: function render() {
|
|
43
|
-
var _this$
|
|
44
|
-
isRichEditor = _this$
|
|
45
|
-
className = _this$
|
|
46
|
-
editor = _this$
|
|
45
|
+
var _this$props2 = this.props,
|
|
46
|
+
isRichEditor = _this$props2.isRichEditor,
|
|
47
|
+
className = _this$props2.className,
|
|
48
|
+
editor = _this$props2.editor;
|
|
47
49
|
var isShowLinkDialog = this.state.isShowLinkDialog;
|
|
48
50
|
var menuConfig = MENUS_CONFIG_MAP[LINK];
|
|
49
51
|
var props = _objectSpread(_objectSpread({
|
|
@@ -4,7 +4,8 @@ import { Editor, Element } from '@seafile/slate';
|
|
|
4
4
|
import { PARAGRAPH } from '../../constants';
|
|
5
5
|
import { getSelectedNodeByType } from '../../core';
|
|
6
6
|
import { toggleList } from './transforms';
|
|
7
|
-
export var isMenuDisabled = function isMenuDisabled(editor) {
|
|
7
|
+
export var isMenuDisabled = function isMenuDisabled(editor, readonly) {
|
|
8
|
+
if (readonly) return true;
|
|
8
9
|
if (editor.selection == null) return true;
|
|
9
10
|
var selectedElements = [];
|
|
10
11
|
var nodeEntries = Editor.nodes(editor, {
|
|
@@ -25,16 +25,18 @@ var ListMenu = /*#__PURE__*/function (_React$Component) {
|
|
|
25
25
|
return getListType(editor, type) === type;
|
|
26
26
|
};
|
|
27
27
|
_this.isDisabled = function () {
|
|
28
|
-
var
|
|
29
|
-
|
|
28
|
+
var _this$props2 = _this.props,
|
|
29
|
+
editor = _this$props2.editor,
|
|
30
|
+
readonly = _this$props2.readonly;
|
|
31
|
+
return isMenuDisabled(editor, readonly);
|
|
30
32
|
};
|
|
31
33
|
_this.onMouseDown = function (e) {
|
|
32
34
|
e.preventDefault();
|
|
33
35
|
e.stopPropagation();
|
|
34
36
|
if (_this.isDisabled()) return;
|
|
35
|
-
var _this$
|
|
36
|
-
editor = _this$
|
|
37
|
-
type = _this$
|
|
37
|
+
var _this$props3 = _this.props,
|
|
38
|
+
editor = _this$props3.editor,
|
|
39
|
+
type = _this$props3.type;
|
|
38
40
|
|
|
39
41
|
// 执行命令
|
|
40
42
|
setListType(editor, type);
|
|
@@ -45,10 +47,10 @@ var ListMenu = /*#__PURE__*/function (_React$Component) {
|
|
|
45
47
|
_createClass(ListMenu, [{
|
|
46
48
|
key: "render",
|
|
47
49
|
value: function render() {
|
|
48
|
-
var _this$
|
|
49
|
-
isRichEditor = _this$
|
|
50
|
-
className = _this$
|
|
51
|
-
type = _this$
|
|
50
|
+
var _this$props4 = this.props,
|
|
51
|
+
isRichEditor = _this$props4.isRichEditor,
|
|
52
|
+
className = _this$props4.className,
|
|
53
|
+
type = _this$props4.type;
|
|
52
54
|
var menuConfig = MENUS_CONFIG_MAP[type];
|
|
53
55
|
var props = _objectSpread(_objectSpread({
|
|
54
56
|
isRichEditor: isRichEditor,
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
.sdoc-file-select-dialog {
|
|
2
|
+
max-width: 620px;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.sdoc-file-select-dialog .sdoc-file-select-modal {
|
|
6
|
+
width: 620px;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.sdoc-file-select-dialog .sdoc-file-select-container {
|
|
10
|
+
display: flex;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.sdoc-file-select-dialog .sdoc-file-select-left {
|
|
14
|
+
border-right: 1px solid #e9ecef;
|
|
15
|
+
width: 150px;
|
|
16
|
+
padding: 12px 8px;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.sdoc-file-select-dialog .sdoc-file-select-left .sdoc-file-select-nav-item {
|
|
20
|
+
padding: 5px 0 5px 8px;
|
|
21
|
+
border-radius: 3px;
|
|
22
|
+
display: inline-block;
|
|
23
|
+
cursor: pointer;
|
|
24
|
+
width: 100%;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.sdoc-file-select-dialog .sdoc-file-select-left .sdoc-file-select-nav-item:hover {
|
|
28
|
+
background-color: #f5f5f5;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.sdoc-file-select-dialog .sdoc-file-select-container .sdoc-file-select-left .selected-sdoc-file-select-nav-item {
|
|
32
|
+
background-color: #ff8000;
|
|
33
|
+
color: #fff;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.sdoc-file-select-dialog .sdoc-file-select-right {
|
|
37
|
+
height: 440px;
|
|
38
|
+
width: 468px;
|
|
39
|
+
display: flex;
|
|
40
|
+
padding: 0;
|
|
41
|
+
flex-direction: column;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.sdoc-file-select-dialog .sdoc-file-select-footer {
|
|
45
|
+
display: flex;
|
|
46
|
+
align-items: center;
|
|
47
|
+
justify-content: flex-end;
|
|
48
|
+
padding: 1rem;
|
|
49
|
+
border-top: 1px solid #e9ecef;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.sdoc-file-select-dialog .highlight-bg-color {
|
|
53
|
+
background-color: #FF8000;
|
|
54
|
+
border-color: #FF8000;
|
|
55
|
+
}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
2
|
import React, { useCallback, useState } from 'react';
|
|
3
|
-
import { Button, Modal, ModalHeader, ModalBody
|
|
4
|
-
import {
|
|
3
|
+
import { Button, Modal, ModalHeader, ModalBody } from 'reactstrap';
|
|
4
|
+
import { useTranslation } from 'react-i18next';
|
|
5
5
|
import LocalFiles from './local-files';
|
|
6
|
-
import { insertSdocFileLink } from '
|
|
7
|
-
import './
|
|
8
|
-
var
|
|
6
|
+
import { insertSdocFileLink } from '../../helpers';
|
|
7
|
+
import './index.css';
|
|
8
|
+
var SelectSdocFileDialog = function SelectSdocFileDialog(_ref) {
|
|
9
9
|
var editor = _ref.editor,
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
toggle = _ref.toggle;
|
|
11
|
+
var _useTranslation = useTranslation(),
|
|
12
|
+
t = _useTranslation.t;
|
|
12
13
|
var _useState = useState(null),
|
|
13
14
|
_useState2 = _slicedToArray(_useState, 2),
|
|
14
15
|
currentSelectedFile = _useState2[0],
|
|
@@ -16,8 +17,13 @@ var SdocLinkFileDialog = function SdocLinkFileDialog(_ref) {
|
|
|
16
17
|
var onSelectedFile = useCallback(function (fileInfo) {
|
|
17
18
|
setCurrentSelectedFile(fileInfo);
|
|
18
19
|
}, []);
|
|
20
|
+
var closeDialog = useCallback(function () {
|
|
21
|
+
toggle(false);
|
|
22
|
+
|
|
23
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
24
|
+
}, []);
|
|
19
25
|
var onSubmit = useCallback(function () {
|
|
20
|
-
|
|
26
|
+
closeDialog(false);
|
|
21
27
|
if (currentSelectedFile) {
|
|
22
28
|
insertSdocFileLink(editor, currentSelectedFile.name, currentSelectedFile.doc_uuid);
|
|
23
29
|
}
|
|
@@ -27,36 +33,37 @@ var SdocLinkFileDialog = function SdocLinkFileDialog(_ref) {
|
|
|
27
33
|
isOpen: true,
|
|
28
34
|
autoFocus: false,
|
|
29
35
|
zIndex: 1071,
|
|
30
|
-
returnFocusAfterClose: false
|
|
36
|
+
returnFocusAfterClose: false,
|
|
37
|
+
className: "sdoc-file-select-dialog",
|
|
38
|
+
contentClassName: "sdoc-file-select-modal"
|
|
31
39
|
}, /*#__PURE__*/React.createElement(ModalHeader, {
|
|
32
|
-
toggle:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}, t('Select_sdoc_document')), /*#__PURE__*/React.createElement(ModalBody, null, /*#__PURE__*/React.createElement("div", {
|
|
36
|
-
className: "sdoc-file-addition-container"
|
|
40
|
+
toggle: closeDialog
|
|
41
|
+
}, t('Select_sdoc_document')), /*#__PURE__*/React.createElement(ModalBody, {
|
|
42
|
+
className: "p-0"
|
|
37
43
|
}, /*#__PURE__*/React.createElement("div", {
|
|
38
|
-
className: "sdoc-file-
|
|
44
|
+
className: "sdoc-file-select-container"
|
|
39
45
|
}, /*#__PURE__*/React.createElement("div", {
|
|
40
|
-
className: "sdoc-file-
|
|
46
|
+
className: "sdoc-file-select-left"
|
|
41
47
|
}, /*#__PURE__*/React.createElement("div", {
|
|
42
|
-
className:
|
|
43
|
-
|
|
48
|
+
className: "sdoc-file-select-nav"
|
|
49
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
50
|
+
className: "sdoc-file-select-nav-item selected-sdoc-file-select-nav-item"
|
|
44
51
|
}, t('Local_file')))), /*#__PURE__*/React.createElement("div", {
|
|
45
|
-
className: "sdoc-file-
|
|
52
|
+
className: "sdoc-file-select-right"
|
|
46
53
|
}, /*#__PURE__*/React.createElement(LocalFiles, {
|
|
47
54
|
onSelectedFile: onSelectedFile,
|
|
48
|
-
toggle:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
55
|
+
toggle: closeDialog
|
|
56
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
57
|
+
className: "sdoc-file-select-footer"
|
|
58
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
52
59
|
color: "secondary",
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
60
|
+
className: "mr-2",
|
|
61
|
+
onClick: closeDialog
|
|
56
62
|
}, t('Cancel')), /*#__PURE__*/React.createElement(Button, {
|
|
57
63
|
color: "primary",
|
|
58
|
-
|
|
64
|
+
className: "highlight-bg-color",
|
|
65
|
+
disabled: !currentSelectedFile,
|
|
59
66
|
onClick: onSubmit
|
|
60
|
-
}, t('Confirm'))));
|
|
67
|
+
}, t('Confirm')))))));
|
|
61
68
|
};
|
|
62
|
-
export default
|
|
69
|
+
export default SelectSdocFileDialog;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
.sdoc-files-tree {
|
|
2
|
+
flex: 1;
|
|
3
|
+
padding: 16px;
|
|
4
|
+
overflow: auto;
|
|
5
|
+
width: 100%;
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.sdoc-files-tree .sdoc-file-info {
|
|
11
|
+
border-radius: 2px;
|
|
12
|
+
height: 1.5rem;
|
|
13
|
+
line-height: 1.625;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
text-overflow: ellipsis;
|
|
16
|
+
white-space: nowrap;
|
|
17
|
+
position: relative;
|
|
18
|
+
padding-left: 2.8rem;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.sdoc-files-tree .sdoc-file-info:hover {
|
|
22
|
+
cursor: pointer;
|
|
23
|
+
background: #fdefb9;
|
|
24
|
+
box-shadow: inset 0 0 1px #999;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.sdoc-files-tree .sdoc-file-info .sdoc-file-icon-container {
|
|
28
|
+
width: 2.8rem;
|
|
29
|
+
height: 100%;
|
|
30
|
+
padding-left: 1.5rem;
|
|
31
|
+
position: absolute;
|
|
32
|
+
left: 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.sdoc-files-tree .sdoc-file-info .sdoc-file-icon {
|
|
36
|
+
color: #9aa0ac;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.sdoc-files-tree .sdoc-file-info.active {
|
|
40
|
+
background: #ff8000;
|
|
41
|
+
box-shadow: inset 0 0 1px #999;
|
|
42
|
+
color: #fff;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.sdoc-files-tree .sdoc-file-info.active .sdoc-file-icon {
|
|
46
|
+
color: #fff;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.sdoc-files-tree .sdoc-file-icon-toggle {
|
|
50
|
+
height: 1.5rem;
|
|
51
|
+
width: 1.5rem;
|
|
52
|
+
line-height: 1.5rem !important;
|
|
53
|
+
font-size: 12px !important;
|
|
54
|
+
transform: scale(.8);
|
|
55
|
+
text-align: center;
|
|
56
|
+
position: absolute;
|
|
57
|
+
left: 0;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.sdoc-files-tree .sdoc-file-info.expanded .sdoc-file-icon-toggle {
|
|
61
|
+
transform: rotate(90deg) scale(.8);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.sdoc-files-tree .sdoc-file-info .sdoc-file-name {
|
|
65
|
+
font-size: 14px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.sdoc-files-tree .sdoc-folder-children {
|
|
69
|
+
padding-left: 20px;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.sdoc-files-tree .sdoc-folder-children-empty {
|
|
73
|
+
color: #999;
|
|
74
|
+
padding: 4px 20px;
|
|
75
|
+
}
|
|
@@ -2,12 +2,13 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
3
|
import React, { useCallback, useState, useRef, useEffect } from 'react';
|
|
4
4
|
import { withTranslation } from 'react-i18next';
|
|
5
|
+
import classnames from 'classnames';
|
|
5
6
|
import slugid from 'slugid';
|
|
6
|
-
import context from '
|
|
7
|
-
import { getErrorMsg } from '
|
|
8
|
-
import toaster from '
|
|
9
|
-
import { getParentPathNameArr, getNewFileListData } from '
|
|
10
|
-
import './
|
|
7
|
+
import context from '../../../../../../../context';
|
|
8
|
+
import { getErrorMsg } from '../../../../../../../utils';
|
|
9
|
+
import toaster from '../../../../../../../components/toast';
|
|
10
|
+
import { getParentPathNameArr, getNewFileListData } from '../../../helpers';
|
|
11
|
+
import './index.css';
|
|
11
12
|
var LocalFiles = function LocalFiles(_ref) {
|
|
12
13
|
var onSelectedFile = _ref.onSelectedFile,
|
|
13
14
|
toggle = _ref.toggle,
|
|
@@ -72,6 +73,7 @@ var LocalFiles = function LocalFiles(_ref) {
|
|
|
72
73
|
getFileData(p, item.indexId, fileListData);
|
|
73
74
|
expandedFolder.add(item.indexId);
|
|
74
75
|
}
|
|
76
|
+
onSelectedFile(null);
|
|
75
77
|
setCurrentActiveItem(item);
|
|
76
78
|
setExpandedFolder(new Set(Array.from(expandedFolder)));
|
|
77
79
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -83,51 +85,59 @@ var LocalFiles = function LocalFiles(_ref) {
|
|
|
83
85
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
84
86
|
}, []);
|
|
85
87
|
var renderFileTree = useCallback(function (data) {
|
|
86
|
-
if (!Array.isArray(data))
|
|
87
|
-
return null;
|
|
88
|
-
}
|
|
88
|
+
if (!Array.isArray(data) || data.length === 0) return null;
|
|
89
89
|
return data.map(function (item) {
|
|
90
90
|
var _item$children, _item$children2;
|
|
91
|
+
if (!item) return null;
|
|
92
|
+
var type = item.type,
|
|
93
|
+
indexId = item.indexId,
|
|
94
|
+
name = item.name;
|
|
95
|
+
var selected = (currentActiveItem === null || currentActiveItem === void 0 ? void 0 : currentActiveItem.indexId) === indexId;
|
|
91
96
|
return /*#__PURE__*/React.createElement("div", {
|
|
92
|
-
key:
|
|
93
|
-
className: "sdoc-
|
|
94
|
-
},
|
|
97
|
+
key: indexId,
|
|
98
|
+
className: "sdoc-folder-container"
|
|
99
|
+
}, type === 'dir' && /*#__PURE__*/React.createElement("div", {
|
|
95
100
|
ref: folderRef,
|
|
96
|
-
className: "sdoc-
|
|
101
|
+
className: "sdoc-folder"
|
|
102
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
103
|
+
className: classnames('sdoc-folder-info sdoc-file-info', {
|
|
104
|
+
'active': selected,
|
|
105
|
+
'expanded': expandedFolder.has(indexId)
|
|
106
|
+
}),
|
|
97
107
|
onClick: function onClick(e) {
|
|
98
|
-
onToggle(e, item, fileListData);
|
|
108
|
+
return onToggle(e, item, fileListData);
|
|
99
109
|
}
|
|
100
110
|
}, /*#__PURE__*/React.createElement("div", {
|
|
101
|
-
className: "sdoc-
|
|
102
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
103
|
-
className: "".concat(expandedFolder.has(item.indexId) ? 'icon-drop-down-scale' : '')
|
|
111
|
+
className: "sdoc-file-icon-container"
|
|
104
112
|
}, /*#__PURE__*/React.createElement("i", {
|
|
105
|
-
className: "
|
|
106
|
-
})
|
|
107
|
-
className: "sdocfont sdoc-file"
|
|
113
|
+
className: "sdoc-file-icon sdoc-file-icon-toggle sdocfont sdoc-right-slide"
|
|
114
|
+
}), /*#__PURE__*/React.createElement("i", {
|
|
115
|
+
className: "sdoc-file-icon sdocfont sdoc-file sdoc-folder-icon"
|
|
108
116
|
})), /*#__PURE__*/React.createElement("span", {
|
|
109
|
-
className: "sdoc-folder-name"
|
|
110
|
-
},
|
|
111
|
-
className: "sdoc-
|
|
112
|
-
}, (
|
|
113
|
-
className: "sdoc-
|
|
114
|
-
}, t('Empty')), (
|
|
115
|
-
className:
|
|
117
|
+
className: "sdoc-folder-name sdoc-file-name"
|
|
118
|
+
}, name)), /*#__PURE__*/React.createElement("div", {
|
|
119
|
+
className: "sdoc-folder-children"
|
|
120
|
+
}, ((_item$children = item.children) === null || _item$children === void 0 ? void 0 : _item$children.length) === 0 && /*#__PURE__*/React.createElement("div", {
|
|
121
|
+
className: "sdoc-folder-children-empty"
|
|
122
|
+
}, "(".concat(t('Empty'), ")")), ((_item$children2 = item.children) === null || _item$children2 === void 0 ? void 0 : _item$children2.length) > 0 && renderFileTree(item.children))), type === 'file' && /*#__PURE__*/React.createElement("div", {
|
|
123
|
+
className: classnames('sdoc-file-info', {
|
|
124
|
+
'active': selected
|
|
125
|
+
}),
|
|
116
126
|
onClick: function onClick(e) {
|
|
117
127
|
onSelectFile(e, item);
|
|
118
128
|
}
|
|
119
|
-
}, /*#__PURE__*/React.createElement("
|
|
120
|
-
className: "sdoc-
|
|
129
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
130
|
+
className: "sdoc-file-icon-container"
|
|
121
131
|
}, /*#__PURE__*/React.createElement("i", {
|
|
122
|
-
className: "sdocfont sdoc-document"
|
|
132
|
+
className: "sdoc-file-icon sdocfont sdoc-document"
|
|
123
133
|
})), /*#__PURE__*/React.createElement("span", {
|
|
124
|
-
className: "sdoc-
|
|
125
|
-
},
|
|
134
|
+
className: "sdoc-file-name"
|
|
135
|
+
}, name)));
|
|
126
136
|
});
|
|
127
137
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
128
138
|
}, [fileListData, currentActiveItem, expandedFolder]);
|
|
129
139
|
return /*#__PURE__*/React.createElement("div", {
|
|
130
|
-
className: "sdoc-
|
|
140
|
+
className: "sdoc-files-tree"
|
|
131
141
|
}, renderFileTree(fileListData));
|
|
132
142
|
};
|
|
133
143
|
export default withTranslation('sdoc-editor')(LocalFiles);
|
|
@@ -6,7 +6,8 @@ import copy from 'copy-to-clipboard';
|
|
|
6
6
|
import context from '../../../../context';
|
|
7
7
|
import { SDOC_LINK, LINK, INSERT_FILE_DISPLAY_TYPE } from '../../constants';
|
|
8
8
|
import { getNodeType, getSelectedElems } from '../../core';
|
|
9
|
-
export var isMenuDisabled = function isMenuDisabled(editor) {
|
|
9
|
+
export var isMenuDisabled = function isMenuDisabled(editor, readonly) {
|
|
10
|
+
if (readonly) return true;
|
|
10
11
|
if (editor.selection == null) return true;
|
|
11
12
|
var selectedElems = getSelectedElems(editor);
|
|
12
13
|
var notMatch = selectedElems.some(function (elem) {
|
|
@@ -6,7 +6,7 @@ import { withTranslation } from 'react-i18next';
|
|
|
6
6
|
import { ElementPopover } from '../../../commons';
|
|
7
7
|
import toaster from '../../../../../components/toast';
|
|
8
8
|
import { getUrl, onCopySdocLinkNode } from '../helpers';
|
|
9
|
-
import './
|
|
9
|
+
import './index.css';
|
|
10
10
|
var SdocLinkHoverMenu = function SdocLinkHoverMenu(_ref) {
|
|
11
11
|
var editor = _ref.editor,
|
|
12
12
|
menuPosition = _ref.menuPosition,
|
|
@@ -5,13 +5,14 @@ import { withTranslation } from 'react-i18next';
|
|
|
5
5
|
import { SDOC_LINK, MENUS_CONFIG_MAP } from '../../../constants';
|
|
6
6
|
import { MenuItem } from '../../../commons';
|
|
7
7
|
import { getType, isMenuDisabled } from '../helpers';
|
|
8
|
-
import
|
|
8
|
+
import SelectSdocFileDialog from '../dialogs/select-sdoc-file-dialog';
|
|
9
9
|
import './index.css';
|
|
10
10
|
var SdocLinkMenu = function SdocLinkMenu(_ref) {
|
|
11
11
|
var isRichEditor = _ref.isRichEditor,
|
|
12
12
|
className = _ref.className,
|
|
13
13
|
editor = _ref.editor,
|
|
14
|
-
t = _ref.t
|
|
14
|
+
t = _ref.t,
|
|
15
|
+
readonly = _ref.readonly;
|
|
15
16
|
var _useState = useState(false),
|
|
16
17
|
_useState2 = _slicedToArray(_useState, 2),
|
|
17
18
|
showInsertDialog = _useState2[0],
|
|
@@ -25,9 +26,9 @@ var SdocLinkMenu = function SdocLinkMenu(_ref) {
|
|
|
25
26
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
26
27
|
}, []);
|
|
27
28
|
var isDisabled = useCallback(function () {
|
|
28
|
-
return isMenuDisabled(editor);
|
|
29
|
+
return isMenuDisabled(editor, readonly);
|
|
29
30
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
30
|
-
}, []);
|
|
31
|
+
}, [editor, readonly]);
|
|
31
32
|
var onInsertFileDialogToggle = useCallback(function () {
|
|
32
33
|
setShowInsertPopover(true);
|
|
33
34
|
}, []);
|
|
@@ -77,9 +78,9 @@ var SdocLinkMenu = function SdocLinkMenu(_ref) {
|
|
|
77
78
|
onMouseDown: onInsertSdocFile
|
|
78
79
|
}, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("i", {
|
|
79
80
|
className: "sdocfont sdoc-document"
|
|
80
|
-
})), /*#__PURE__*/React.createElement("span", null, t('Sdoc_document')))), showInsertDialog && /*#__PURE__*/React.createElement(
|
|
81
|
+
})), /*#__PURE__*/React.createElement("span", null, t('Sdoc_document')))), showInsertDialog && /*#__PURE__*/React.createElement(SelectSdocFileDialog, {
|
|
81
82
|
editor: editor,
|
|
82
|
-
|
|
83
|
+
toggle: onDialogToggle
|
|
83
84
|
}));
|
|
84
85
|
};
|
|
85
86
|
export default withTranslation('sdoc-editor')(SdocLinkMenu);
|
|
@@ -3,7 +3,7 @@ import React, { useCallback, useEffect, useState, useRef } from 'react';
|
|
|
3
3
|
import { Range } from '@seafile/slate';
|
|
4
4
|
import { useScrollContext } from '../../../hooks/use-scroll-context';
|
|
5
5
|
import { unwrapLinkNode, getUrl } from './helpers';
|
|
6
|
-
import
|
|
6
|
+
import HoverMenu from './hover-menu';
|
|
7
7
|
import './render-elem.css';
|
|
8
8
|
var SdocFileLink = function SdocFileLink(_ref) {
|
|
9
9
|
var editor = _ref.editor,
|
|
@@ -87,6 +87,7 @@ var SdocFileLink = function SdocFileLink(_ref) {
|
|
|
87
87
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
88
88
|
}, []);
|
|
89
89
|
return /*#__PURE__*/React.createElement("span", Object.assign({}, attributes, {
|
|
90
|
+
"data-id": element.id,
|
|
90
91
|
contentEditable: false,
|
|
91
92
|
className: "sdoc-file-render ".concat(element.display_type === 'card_link' ? 'sdoc-file-card-link' : ''),
|
|
92
93
|
onClick: onClickFile
|
|
@@ -104,7 +105,7 @@ var SdocFileLink = function SdocFileLink(_ref) {
|
|
|
104
105
|
e.preventDefault();
|
|
105
106
|
},
|
|
106
107
|
title: element.title
|
|
107
|
-
}, children))), isShowInsertHoverMenu && Range.isCollapsed(editor.selection) && /*#__PURE__*/React.createElement(
|
|
108
|
+
}, children))), isShowInsertHoverMenu && Range.isCollapsed(editor.selection) && /*#__PURE__*/React.createElement(HoverMenu, {
|
|
108
109
|
editor: editor,
|
|
109
110
|
menuPosition: menuPosition,
|
|
110
111
|
element: element,
|
|
@@ -12,7 +12,8 @@ import EventBus from '../../../utils/event-bus';
|
|
|
12
12
|
import { INTERNAL_EVENT, PAGE_EDIT_AREA_WIDTH } from '../../../constants';
|
|
13
13
|
import ObjectUtils from '../../../utils/object-utils';
|
|
14
14
|
import { replacePastedDataId } from '../../../node-id/helpers';
|
|
15
|
-
export var isTableMenuDisabled = function isTableMenuDisabled(editor) {
|
|
15
|
+
export var isTableMenuDisabled = function isTableMenuDisabled(editor, readonly) {
|
|
16
|
+
if (readonly) return true;
|
|
16
17
|
var selection = editor.selection;
|
|
17
18
|
if (selection === null) return true;
|
|
18
19
|
if (!Range.isCollapsed(selection)) return true;
|
package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/cell-text-align-menu.js
CHANGED
|
@@ -3,20 +3,23 @@ import { useTranslation } from 'react-i18next';
|
|
|
3
3
|
import CommonMenu from './common-menu';
|
|
4
4
|
import { setCellStyle } from '../../helpers';
|
|
5
5
|
var CellTextAlignMenu = function CellTextAlignMenu(_ref) {
|
|
6
|
-
var editor = _ref.editor
|
|
6
|
+
var editor = _ref.editor,
|
|
7
|
+
readonly = _ref.readonly;
|
|
7
8
|
var textAlignRef = useRef(null);
|
|
8
9
|
var _useTranslation = useTranslation(),
|
|
9
10
|
t = _useTranslation.t;
|
|
10
11
|
var setTextAlignStyle = useCallback(function (textAlign) {
|
|
12
|
+
if (readonly) return;
|
|
11
13
|
setCellStyle(editor, {
|
|
12
14
|
textAlign: textAlign
|
|
13
15
|
});
|
|
14
16
|
textAlignRef.current && textAlignRef.current.hidePopover();
|
|
15
|
-
}, [editor]);
|
|
17
|
+
}, [editor, readonly]);
|
|
16
18
|
return /*#__PURE__*/React.createElement(CommonMenu, {
|
|
17
19
|
id: "text-align",
|
|
18
20
|
iconClass: "sdocfont sdoc-align-left",
|
|
19
|
-
ref: textAlignRef
|
|
21
|
+
ref: textAlignRef,
|
|
22
|
+
disabled: readonly
|
|
20
23
|
}, /*#__PURE__*/React.createElement("div", {
|
|
21
24
|
className: "sdoc-dropdown-menu-item",
|
|
22
25
|
onClick: function onClick() {
|
|
@@ -46,7 +46,8 @@ var CommonMenu = /*#__PURE__*/function (_Component) {
|
|
|
46
46
|
var _this$props2 = this.props,
|
|
47
47
|
id = _this$props2.id,
|
|
48
48
|
iconClass = _this$props2.iconClass,
|
|
49
|
-
children = _this$props2.children
|
|
49
|
+
children = _this$props2.children,
|
|
50
|
+
disabled = _this$props2.disabled;
|
|
50
51
|
var isShowMenu = this.state.isShowMenu;
|
|
51
52
|
var className = this.getClassName();
|
|
52
53
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("button", {
|
|
@@ -61,7 +62,7 @@ var CommonMenu = /*#__PURE__*/function (_Component) {
|
|
|
61
62
|
className: "sdoc-menu-with-dropdown-triangle"
|
|
62
63
|
}, /*#__PURE__*/React.createElement("i", {
|
|
63
64
|
className: "sdoc-menu-with-dropdown-triangle-icon sdocfont sdoc-".concat(isShowMenu ? 'caret-up' : 'drop-down')
|
|
64
|
-
}))), /*#__PURE__*/React.createElement(UncontrolledPopover, {
|
|
65
|
+
}))), !disabled && /*#__PURE__*/React.createElement(UncontrolledPopover, {
|
|
65
66
|
target: id,
|
|
66
67
|
className: "sdoc-common-menu-popover sdoc-table-menu-popover",
|
|
67
68
|
trigger: "legacy",
|
|
@@ -11,24 +11,30 @@ import './index.css';
|
|
|
11
11
|
var ActiveTableMenu = function ActiveTableMenu(_ref) {
|
|
12
12
|
var isRichEditor = _ref.isRichEditor,
|
|
13
13
|
className = _ref.className,
|
|
14
|
-
editor = _ref.editor
|
|
14
|
+
editor = _ref.editor,
|
|
15
|
+
readonly = _ref.readonly;
|
|
15
16
|
if (!isAllInTable(editor)) return null;
|
|
16
17
|
return /*#__PURE__*/React.createElement(MenuGroup, {
|
|
17
18
|
className: "menu-group sdoc-table-menu-group"
|
|
18
19
|
}, /*#__PURE__*/React.createElement(CellTextAlignMenu, {
|
|
19
|
-
editor: editor
|
|
20
|
+
editor: editor,
|
|
21
|
+
readonly: readonly
|
|
20
22
|
}), /*#__PURE__*/React.createElement(TableColumnMenu, {
|
|
21
|
-
editor: editor
|
|
23
|
+
editor: editor,
|
|
24
|
+
readonly: readonly
|
|
22
25
|
}), /*#__PURE__*/React.createElement(TableRowMenu, {
|
|
23
|
-
editor: editor
|
|
26
|
+
editor: editor,
|
|
27
|
+
readonly: readonly
|
|
24
28
|
}), /*#__PURE__*/React.createElement(CellBgColorMenu, {
|
|
25
29
|
editor: editor,
|
|
26
30
|
isRichEditor: isRichEditor,
|
|
27
|
-
className: className
|
|
31
|
+
className: className,
|
|
32
|
+
readonly: readonly
|
|
28
33
|
}), /*#__PURE__*/React.createElement(RemoveTable, {
|
|
29
34
|
editor: editor,
|
|
30
35
|
isRichEditor: isRichEditor,
|
|
31
|
-
className: className
|
|
36
|
+
className: className,
|
|
37
|
+
readonly: readonly
|
|
32
38
|
}));
|
|
33
39
|
};
|
|
34
40
|
export default withTranslation('sdoc-editor')(ActiveTableMenu);
|