@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.
Files changed (78) hide show
  1. package/dist/basic-sdk/comment/comment/editor-comment.js +11 -2
  2. package/dist/basic-sdk/comment/comment/style.css +1 -0
  3. package/dist/basic-sdk/editor.js +25 -171
  4. package/dist/basic-sdk/extension/plugins/blockquote/helpers.js +2 -1
  5. package/dist/basic-sdk/extension/plugins/blockquote/menu/index.js +7 -5
  6. package/dist/basic-sdk/extension/plugins/check-list/helpers.js +2 -1
  7. package/dist/basic-sdk/extension/plugins/check-list/index.js +2 -2
  8. package/dist/basic-sdk/extension/plugins/check-list/menu/index.js +7 -5
  9. package/dist/basic-sdk/extension/plugins/check-list/render-elem.js +5 -9
  10. package/dist/basic-sdk/extension/plugins/clear-format/helpers.js +2 -0
  11. package/dist/basic-sdk/extension/plugins/clear-format/menu/index.js +3 -2
  12. package/dist/basic-sdk/extension/plugins/code-block/helpers.js +2 -1
  13. package/dist/basic-sdk/extension/plugins/code-block/menu/index.js +7 -4
  14. package/dist/basic-sdk/extension/plugins/code-block/plugin.js +9 -1
  15. package/dist/basic-sdk/extension/plugins/code-block/render-elem.js +13 -21
  16. package/dist/basic-sdk/extension/plugins/font/helpers.js +2 -1
  17. package/dist/basic-sdk/extension/plugins/font/menu/font-family/index.js +3 -2
  18. package/dist/basic-sdk/extension/plugins/font/menu/font-size/index.js +3 -2
  19. package/dist/basic-sdk/extension/plugins/font/menu/index.js +6 -3
  20. package/dist/basic-sdk/extension/plugins/header/helpers.js +2 -0
  21. package/dist/basic-sdk/extension/plugins/header/menu/index.js +4 -2
  22. package/dist/basic-sdk/extension/plugins/image/helpers.js +2 -1
  23. package/dist/basic-sdk/extension/plugins/image/menu/index.js +8 -6
  24. package/dist/basic-sdk/extension/plugins/link/helpers.js +2 -1
  25. package/dist/basic-sdk/extension/plugins/link/menu/index.js +8 -6
  26. package/dist/basic-sdk/extension/plugins/list/helpers.js +2 -1
  27. package/dist/basic-sdk/extension/plugins/list/menu/index.js +11 -9
  28. package/dist/basic-sdk/extension/plugins/sdoc-link/dialogs/select-sdoc-file-dialog/index.css +55 -0
  29. package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/sdoc-link-file-dialog.js → dialogs/select-sdoc-file-dialog/index.js} +36 -29
  30. package/dist/basic-sdk/extension/plugins/sdoc-link/dialogs/select-sdoc-file-dialog/local-files/index.css +75 -0
  31. package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/local-files.js → dialogs/select-sdoc-file-dialog/local-files/index.js} +42 -32
  32. package/dist/basic-sdk/extension/plugins/sdoc-link/helpers.js +2 -1
  33. package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/sdoc-link-hover-menu.js → hover-menu/index.js} +1 -1
  34. package/dist/basic-sdk/extension/plugins/sdoc-link/menu/index.js +7 -6
  35. package/dist/basic-sdk/extension/plugins/sdoc-link/render-elem.js +3 -2
  36. package/dist/basic-sdk/extension/plugins/table/helpers.js +2 -1
  37. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/cell-text-align-menu.js +6 -3
  38. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/common-menu.js +3 -2
  39. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/index.js +12 -6
  40. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/remove-table-menu.js +5 -3
  41. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/table-column-menu.js +8 -4
  42. package/dist/basic-sdk/extension/plugins/table/menu/active-table-menu/table-row-menu.js +8 -4
  43. package/dist/basic-sdk/extension/plugins/table/menu/table-menu/index.js +7 -5
  44. package/dist/basic-sdk/extension/plugins/text-align/helpers.js +2 -1
  45. package/dist/basic-sdk/extension/plugins/text-align/menu/index.js +3 -2
  46. package/dist/basic-sdk/extension/plugins/text-style/helpers.js +2 -1
  47. package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +5 -4
  48. package/dist/basic-sdk/extension/render/render-element.js +3 -5
  49. package/dist/basic-sdk/extension/toolbar/header-toolbar/index.js +37 -17
  50. package/dist/basic-sdk/extension/toolbar/header-toolbar/redo-undo.js +7 -4
  51. package/dist/basic-sdk/layout/editor-container.js +26 -0
  52. package/dist/basic-sdk/layout/editor-content.js +56 -0
  53. package/dist/basic-sdk/layout/index.js +4 -0
  54. package/dist/basic-sdk/outline/index.js +6 -7
  55. package/dist/basic-sdk/outline/style.css +5 -1
  56. package/dist/basic-sdk/slate-editor.js +149 -0
  57. package/dist/basic-sdk/socket/with-socket-io.js +1 -0
  58. package/dist/basic-sdk/utils/diff.js +12 -0
  59. package/dist/basic-sdk/views/diff-viewer.js +10 -5
  60. package/dist/basic-sdk/views/viewer.js +20 -20
  61. package/dist/components/doc-operations/index.js +2 -0
  62. package/dist/components/doc-operations/revision-operations/changes-count/index.css +34 -0
  63. package/dist/components/doc-operations/revision-operations/changes-count/index.js +85 -0
  64. package/dist/components/doc-operations/revision-operations/index.js +5 -1
  65. package/dist/pages/diff-viewer.js +2 -0
  66. package/dist/pages/simple-editor.js +16 -3
  67. package/package.json +1 -1
  68. package/public/media/sdoc-editor-font/iconfont.eot +0 -0
  69. package/public/media/sdoc-editor-font/iconfont.svg +4 -0
  70. package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
  71. package/public/media/sdoc-editor-font/iconfont.woff +0 -0
  72. package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
  73. package/public/media/sdoc-editor-font.css +14 -6
  74. package/dist/basic-sdk/extension/plugins/sdoc-link/menu/local-files.css +0 -98
  75. package/dist/basic-sdk/extension/plugins/sdoc-link/menu/sdoc-link-file-dialog.css +0 -35
  76. package/dist/pages/diff-viewer/history-version-viewer.js +0 -15
  77. package/dist/pages/diff-viewer/index.js +0 -35
  78. /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 editor = _this.props.editor;
39
- return isInsertImageMenuDisabled(editor);
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$props = this.props,
109
- isRichEditor = _this$props.isRichEditor,
110
- className = _this$props.className,
111
- t = _this$props.t;
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 editor = _this.props.editor;
25
- return isMenuDisabled(editor);
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$props = this.props,
44
- isRichEditor = _this$props.isRichEditor,
45
- className = _this$props.className,
46
- editor = _this$props.editor;
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 editor = _this.props.editor;
29
- return isMenuDisabled(editor);
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$props2 = _this.props,
36
- editor = _this$props2.editor,
37
- type = _this$props2.type;
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$props3 = this.props,
49
- isRichEditor = _this$props3.isRichEditor,
50
- className = _this$props3.className,
51
- type = _this$props3.type;
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, ModalFooter } from 'reactstrap';
4
- import { withTranslation } from 'react-i18next';
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 '../helpers';
7
- import './sdoc-link-file-dialog.css';
8
- var SdocLinkFileDialog = function SdocLinkFileDialog(_ref) {
6
+ import { insertSdocFileLink } from '../../helpers';
7
+ import './index.css';
8
+ var SelectSdocFileDialog = function SelectSdocFileDialog(_ref) {
9
9
  var editor = _ref.editor,
10
- onDialogToggle = _ref.onDialogToggle,
11
- t = _ref.t;
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
- onDialogToggle(false);
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: function toggle() {
33
- return onDialogToggle(false);
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-addition-left"
44
+ className: "sdoc-file-select-container"
39
45
  }, /*#__PURE__*/React.createElement("div", {
40
- className: "sdoc-file-addition-nav"
46
+ className: "sdoc-file-select-left"
41
47
  }, /*#__PURE__*/React.createElement("div", {
42
- className: 'sdoc-addition-item selected-sdoc-addition-item',
43
- onClick: onDialogToggle
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-addition-right"
52
+ className: "sdoc-file-select-right"
46
53
  }, /*#__PURE__*/React.createElement(LocalFiles, {
47
54
  onSelectedFile: onSelectedFile,
48
- toggle: function toggle() {
49
- return onDialogToggle(false);
50
- }
51
- })))), /*#__PURE__*/React.createElement(ModalFooter, null, /*#__PURE__*/React.createElement(Button, {
55
+ toggle: closeDialog
56
+ }), /*#__PURE__*/React.createElement("div", {
57
+ className: "sdoc-file-select-footer"
58
+ }, /*#__PURE__*/React.createElement(Button, {
52
59
  color: "secondary",
53
- onClick: function onClick() {
54
- return onDialogToggle(false);
55
- }
60
+ className: "mr-2",
61
+ onClick: closeDialog
56
62
  }, t('Cancel')), /*#__PURE__*/React.createElement(Button, {
57
63
  color: "primary",
58
- disabled: false,
64
+ className: "highlight-bg-color",
65
+ disabled: !currentSelectedFile,
59
66
  onClick: onSubmit
60
- }, t('Confirm'))));
67
+ }, t('Confirm')))))));
61
68
  };
62
- export default withTranslation('sdoc-editor')(SdocLinkFileDialog);
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 '../../../../../context';
7
- import { getErrorMsg } from '../../../../../utils';
8
- import toaster from '../../../../../components/toast';
9
- import { getParentPathNameArr, getNewFileListData } from '../helpers';
10
- import './local-files.css';
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: item.indexId,
93
- className: "sdoc-local-folder-container"
94
- }, item.type === 'dir' && /*#__PURE__*/React.createElement("div", {
97
+ key: indexId,
98
+ className: "sdoc-folder-container"
99
+ }, type === 'dir' && /*#__PURE__*/React.createElement("div", {
95
100
  ref: folderRef,
96
- className: "sdoc-local-folder",
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-local-folder-info ".concat((currentActiveItem === null || currentActiveItem === void 0 ? void 0 : currentActiveItem.indexId) === item.indexId ? 'active' : 'inactive')
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: "sdocfont ".concat(expandedFolder.has(item.indexId) ? 'sdoc-drop-down' : 'sdoc-right-slide')
106
- })), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("i", {
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
- }, item.name)), /*#__PURE__*/React.createElement("div", {
111
- className: "sdoc-local-folder-children"
112
- }, (item === null || item === void 0 ? void 0 : (_item$children = item.children) === null || _item$children === void 0 ? void 0 : _item$children.length) === 0 && /*#__PURE__*/React.createElement("div", {
113
- className: "sdoc-local-folder-children-empty"
114
- }, t('Empty')), (item === null || item === void 0 ? void 0 : (_item$children2 = item.children) === null || _item$children2 === void 0 ? void 0 : _item$children2.length) > 0 && renderFileTree(item.children))), item.type === 'file' && /*#__PURE__*/React.createElement("div", {
115
- className: "sdoc-local-file-item ".concat((currentActiveItem === null || currentActiveItem === void 0 ? void 0 : currentActiveItem.indexId) === item.indexId ? 'active' : 'inactive'),
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("span", {
120
- className: "sdoc-local-file-icon"
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-local-file-name"
125
- }, item.name)));
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-local-files-library"
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 './sdoc-link-hover-menu.css';
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 InsertSdocFileDialog from './sdoc-link-file-dialog';
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(InsertSdocFileDialog, {
81
+ })), /*#__PURE__*/React.createElement("span", null, t('Sdoc_document')))), showInsertDialog && /*#__PURE__*/React.createElement(SelectSdocFileDialog, {
81
82
  editor: editor,
82
- onDialogToggle: onDialogToggle
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 InsertHoverMenu from './menu/sdoc-link-hover-menu';
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(InsertHoverMenu, {
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;
@@ -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);