@seafile/sdoc-editor 2.0.69 → 2.0.71

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 (58) hide show
  1. package/dist/basic-sdk/comment/comment-decorate.js +17 -17
  2. package/dist/basic-sdk/comment/components/comment-context-menu/index.css +16 -0
  3. package/dist/basic-sdk/comment/components/comment-context-menu/index.js +38 -0
  4. package/dist/basic-sdk/comment/components/comment-context-menu/menu-item.js +57 -0
  5. package/dist/basic-sdk/comment/components/comment-editor.js +5 -2
  6. package/dist/basic-sdk/comment/components/comment-item-collapse-wrapper.js +17 -1
  7. package/dist/basic-sdk/comment/components/comment-item-wrapper.js +85 -30
  8. package/dist/basic-sdk/comment/components/comment-list.css +34 -0
  9. package/dist/basic-sdk/comment/components/comment-list.js +96 -20
  10. package/dist/basic-sdk/comment/components/editor-comment.js +117 -57
  11. package/dist/basic-sdk/comment/components/elements-comment-count/index.js +15 -3
  12. package/dist/basic-sdk/comment/components/global-comment/index.css +25 -0
  13. package/dist/basic-sdk/comment/helper.js +111 -2
  14. package/dist/basic-sdk/comment/reducer/comment-reducer.js +2 -3
  15. package/dist/basic-sdk/constants/index.js +2 -1
  16. package/dist/basic-sdk/editor/sdoc-editor.js +4 -4
  17. package/dist/basic-sdk/extension/commons/color-menu/index.js +3 -3
  18. package/dist/basic-sdk/extension/commons/file-insert-dialog/index.js +5 -4
  19. package/dist/basic-sdk/extension/commons/wiki-file-insert-dialog/index.js +5 -4
  20. package/dist/basic-sdk/extension/core/queries/index.js +2 -3
  21. package/dist/basic-sdk/extension/core/utils/index.js +1 -29
  22. package/dist/basic-sdk/extension/plugins/ai/ai-icon/index.js +2 -2
  23. package/dist/basic-sdk/extension/plugins/ai/ai-module/helpers.js +4 -0
  24. package/dist/basic-sdk/extension/plugins/font/menu/font-family/index.js +1 -1
  25. package/dist/basic-sdk/extension/plugins/header/placeholder.js +33 -0
  26. package/dist/basic-sdk/extension/plugins/header/render-elem.js +2 -2
  27. package/dist/basic-sdk/extension/plugins/multi-column/helper.js +1 -1
  28. package/dist/basic-sdk/extension/plugins/paragraph/render-elem.js +2 -1
  29. package/dist/basic-sdk/extension/plugins/table/menu/color-selector-popover/index.js +3 -3
  30. package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +2 -1
  31. package/dist/basic-sdk/extension/plugins/text-style/render-elem.js +28 -4
  32. package/dist/basic-sdk/hooks/use-selection-position.js +51 -30
  33. package/dist/basic-sdk/layout/article-container.js +1 -1
  34. package/dist/basic-sdk/layout/editor-content.js +1 -1
  35. package/dist/basic-sdk/node-id/helpers.js +26 -2
  36. package/dist/basic-sdk/node-id/index.js +37 -2
  37. package/dist/basic-sdk/right-panel/index.js +4 -4
  38. package/dist/basic-sdk/utils/common-utils.js +43 -0
  39. package/dist/basic-sdk/utils/default-mode.js +1 -1
  40. package/dist/basic-sdk/utils/document-utils.js +16 -2
  41. package/dist/basic-sdk/utils/full-width-mode.js +1 -1
  42. package/dist/basic-sdk/views/published-revision-diff-viewer.js +1 -1
  43. package/dist/basic-sdk/views/revision-diff-viewer.js +1 -1
  44. package/dist/basic-sdk/views/sdoc-diff-viewer.js +1 -1
  45. package/dist/basic-sdk/views/sdoc-viewer.js +2 -2
  46. package/dist/basic-sdk/views/sdoc-wiki-viewer.js +2 -2
  47. package/dist/components/doc-operations/more-operations.js +1 -1
  48. package/dist/layout/layout.js +3 -3
  49. package/dist/pages/simple-viewer.js +1 -1
  50. package/dist/plugin-module/layout/editor-content.js +1 -1
  51. package/dist/plugin-module/views/plugin-viewer.js +2 -2
  52. package/dist/utils/index.js +2 -61
  53. package/package.json +1 -1
  54. package/public/locales/en/sdoc-editor.json +2 -1
  55. package/public/locales/zh_CN/sdoc-editor.json +2 -1
  56. package/dist/plugin-module/assets/css/sdoc-wiki-viewer.css +0 -28
  57. /package/dist/{assets → basic-sdk/assets}/css/diff-viewer.css +0 -0
  58. /package/dist/{utils → basic-sdk/utils}/local-storage-utils.js +0 -0
@@ -12,7 +12,7 @@ var _reactstrap = require("reactstrap");
12
12
  var _classnames = _interopRequireDefault(require("classnames"));
13
13
  var _tooltip = _interopRequireDefault(require("../../../../../../components/tooltip"));
14
14
  var _context = _interopRequireDefault(require("../../../../../../context"));
15
- var _localStorageUtils = _interopRequireDefault(require("../../../../../../utils/local-storage-utils"));
15
+ var _localStorageUtils = _interopRequireDefault(require("../../../../../utils/local-storage-utils"));
16
16
  var _objectUtils = _interopRequireDefault(require("../../../../../utils/object-utils"));
17
17
  var _constants = require("../../../../constants");
18
18
  var _helpers = require("../../helpers");
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactI18next = require("react-i18next");
8
+ const Placeholder = props => {
9
+ const {
10
+ title,
11
+ top = 5
12
+ } = props;
13
+ const {
14
+ t
15
+ } = (0, _reactI18next.useTranslation)('sdoc-editor');
16
+ return /*#__PURE__*/React.createElement("span", {
17
+ contentEditable: "false",
18
+ suppressContentEditableWarning: true,
19
+ style: {
20
+ position: 'absolute',
21
+ top: `${top}px`,
22
+ color: 'rgba(191,191,191,1)',
23
+ pointerEvents: 'none',
24
+ width: '100%',
25
+ maxWidth: '100%',
26
+ display: 'block',
27
+ userSelect: 'none',
28
+ textDecoration: 'none',
29
+ left: '1px'
30
+ }
31
+ }, t(title));
32
+ };
33
+ var _default = exports.default = Placeholder;
@@ -8,8 +8,8 @@ exports.renderTitle = exports.renderSubtitle = exports.renderHeader = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _slate = require("@seafile/slate");
10
10
  var _constants = require("../../constants");
11
- var _core = require("../../core");
12
11
  var _helper = require("../paragraph/helper");
12
+ var _placeholder = _interopRequireDefault(require("./placeholder"));
13
13
  const renderTitle = (props, editor) => {
14
14
  const {
15
15
  element,
@@ -82,7 +82,7 @@ const renderHeader = (props, editor) => {
82
82
  position: isShowPlaceHolder ? 'relative' : '',
83
83
  ...style
84
84
  }
85
- }), isShowPlaceHolder && /*#__PURE__*/_react.default.createElement(_core.Placeholder, {
85
+ }), isShowPlaceHolder && /*#__PURE__*/_react.default.createElement(_placeholder.default, {
86
86
  title: 'Header',
87
87
  top: 0
88
88
  }), children);
@@ -8,9 +8,9 @@ exports.updateColumnWidthOnDeletion = exports.updateColumnWidth = exports.insert
8
8
  var _slate = require("@seafile/slate");
9
9
  var _slateReact = require("@seafile/slate-react");
10
10
  var _slugid = _interopRequireDefault(require("slugid"));
11
- var _localStorageUtils = _interopRequireDefault(require("../../../../utils/local-storage-utils"));
12
11
  var _constants = require("../../../constants");
13
12
  var _fullWidthMode = require("../../../utils/full-width-mode");
13
+ var _localStorageUtils = _interopRequireDefault(require("../../../utils/local-storage-utils"));
14
14
  var _constants2 = require("../../constants");
15
15
  var _core = require("../../core");
16
16
  var _constants3 = require("./constants");
@@ -11,6 +11,7 @@ var _slateReact = require("@seafile/slate-react");
11
11
  var _constants = require("../../../constants");
12
12
  var _constants2 = require("../../constants");
13
13
  var _core = require("../../core");
14
+ var _placeholder = _interopRequireDefault(require("../header/placeholder"));
14
15
  var _helper = require("./helper");
15
16
  const PLACEHOLDER = 'Enter_text_or_press_forward_slash_to_insert_element';
16
17
  const Paragraph = _ref => {
@@ -66,7 +67,7 @@ const Paragraph = _ref => {
66
67
  ...style
67
68
  },
68
69
  className: className
69
- }), children, isShowPlaceHolder && /*#__PURE__*/_react.default.createElement(_core.Placeholder, {
70
+ }), children, isShowPlaceHolder && /*#__PURE__*/_react.default.createElement(_placeholder.default, {
70
71
  title: placeholder,
71
72
  top: isCommentEditor ? 0 : 5
72
73
  }));
@@ -11,8 +11,8 @@ var _reactColor = require("react-color");
11
11
  var _reactI18next = require("react-i18next");
12
12
  var _reactstrap = require("reactstrap");
13
13
  var _classnames = _interopRequireDefault(require("classnames"));
14
- var _utils = require("../../../../../../utils");
15
14
  var _useColorContext = require("../../../../../hooks/use-color-context");
15
+ var _localStorageUtils = _interopRequireDefault(require("../../../../../utils/local-storage-utils"));
16
16
  var _mouseEvent = require("../../../../../utils/mouse-event");
17
17
  var _constants = require("../../../../constants");
18
18
  var _helpers = require("../../helpers");
@@ -35,7 +35,7 @@ const ColorSelectorPopover = _ref => {
35
35
  } = (0, _useColorContext.useColorContext)();
36
36
  const popoverRef = (0, _react.useRef)(null);
37
37
  const moreColorsPopoverRef = (0, _react.useRef)(null);
38
- const [recentUsedColors, setRecentUsedColors] = (0, _react.useState)(_utils.LocalStorage.getItem(recentUsedColorsKey, _constants.DEFAULT_RECENT_USED_LIST));
38
+ const [recentUsedColors, setRecentUsedColors] = (0, _react.useState)(_localStorageUtils.default.getItem(recentUsedColorsKey, _constants.DEFAULT_RECENT_USED_LIST));
39
39
  const [isShowMenu, setMenuShow] = (0, _react.useState)(false);
40
40
  const [isPickerShow, setPickerShow] = (0, _react.useState)(false);
41
41
  const setColor = (0, _react.useCallback)(color => {
@@ -51,7 +51,7 @@ const ColorSelectorPopover = _ref => {
51
51
  if (validColor !== '' && recentUsedColors[0] !== validColor) {
52
52
  let newRecentUsedColors = recentUsedColors.slice(0, 9);
53
53
  newRecentUsedColors.unshift(validColor);
54
- _utils.LocalStorage.setItem(recentUsedColorsKey, newRecentUsedColors);
54
+ _localStorageUtils.default.setItem(recentUsedColorsKey, newRecentUsedColors);
55
55
  setRecentUsedColors(newRecentUsedColors);
56
56
  }
57
57
  updateLastUsedColor && updateLastUsedColor(validColor);
@@ -11,6 +11,7 @@ var _reactI18next = require("react-i18next");
11
11
  var _slate = require("@seafile/slate");
12
12
  var _constants = require("../../../../../basic-sdk/constants");
13
13
  var _context = _interopRequireDefault(require("../../../../../context"));
14
+ var _commentContextMenu = _interopRequireDefault(require("../../../../comment/components/comment-context-menu"));
14
15
  var _useColorContext = require("../../../../hooks/use-color-context");
15
16
  var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
16
17
  var _mouseEvent = require("../../../../utils/mouse-event");
@@ -155,7 +156,7 @@ const TextStyleMenuList = _ref => {
155
156
  tipMessage: t('Reduce_font_size')
156
157
  }, /*#__PURE__*/_react.default.createElement("i", {
157
158
  className: "sdocfont sdoc-reduce-font-size"
158
- }))), idPrefix && enableSeafileAI && /*#__PURE__*/_react.default.createElement(_aiMenu.AIContextMenu, {
159
+ }))), idPrefix && /*#__PURE__*/_react.default.createElement(_commentContextMenu.default, null), idPrefix && enableSeafileAI && /*#__PURE__*/_react.default.createElement(_aiMenu.AIContextMenu, {
159
160
  isRichEditor: isRichEditor
160
161
  }));
161
162
  };
@@ -15,7 +15,7 @@ const renderText = props => {
15
15
  children,
16
16
  leaf
17
17
  } = props;
18
- const {
18
+ let {
19
19
  text,
20
20
  ...rest
21
21
  } = leaf;
@@ -35,10 +35,34 @@ const renderText = props => {
35
35
  style['minWidth'] = '2px';
36
36
  }
37
37
 
38
- // Add temporary marks for selection in AI
39
- if (leaf.sdoc_ai && leaf.text.trim()) {
38
+ // Add temporary marks for selection in AI or context comment
39
+ if ((leaf.sdoc_ai || leaf.comment) && leaf.text.trim()) {
40
40
  style['padding'] = '3.23px 0';
41
- style['background'] = '#a9c9ed';
41
+ style['backgroundColor'] = '#a9c9ed';
42
+ }
43
+
44
+ // Background color overlap for multi comments
45
+ if (Object.keys(leaf).some(key => key.startsWith('sdoc_comment_'))) {
46
+ const commentEntries = Object.entries(leaf).filter(_ref => {
47
+ let [key] = _ref;
48
+ return key.startsWith('sdoc_comment_');
49
+ });
50
+ for (const [key, value] of commentEntries) {
51
+ if (value === false && key.startsWith('sdoc_comment_')) {
52
+ const newKey = `removed_${key}`;
53
+ rest[newKey] = true;
54
+ delete rest[key];
55
+ }
56
+ }
57
+ const commentRest = Object.keys(rest).filter(item => item.startsWith('sdoc_comment_'));
58
+
59
+ // Multi comment or only one comment
60
+ if (commentRest.length > 1) {
61
+ style['backgroundColor'] = 'rgba(129, 237, 247)';
62
+ }
63
+ if (commentRest.length === 1) {
64
+ style['backgroundColor'] = 'rgba(129, 237, 247, 0.5)';
65
+ }
42
66
  }
43
67
  if (leaf.computed_background_color) {
44
68
  style['backgroundColor'] = leaf.computed_background_color;
@@ -3,45 +3,66 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useSelectionPosition = exports.useCommentListPosition = void 0;
7
- var _slateReact = require("@seafile/slate-react");
6
+ exports.useCommentListPosition = void 0;
8
7
  var _useScrollContext = require("./use-scroll-context");
9
- const useSelectionPosition = node => {
10
- const editor = (0, _slateReact.useSlateStatic)();
11
- if (!editor.selection) return {
12
- x: 0,
13
- y: 0
14
- };
15
- if (!node) return {
16
- x: 0,
17
- y: 0
18
- };
19
- try {
20
- const domNode = _slateReact.ReactEditor.toDOMNode(editor, node);
21
- const rect = domNode.getBoundingClientRect();
22
- return rect;
23
- } catch (error) {
24
- // A new node has not yet been indexed, it cannot be retrieved, and the new node has no comment information, just do not display it
25
- return {
26
- x: 0,
27
- y: 0
28
- };
29
- }
30
- };
31
- exports.useSelectionPosition = useSelectionPosition;
32
- const useCommentListPosition = selectionElement => {
33
- const selectionPosition = useSelectionPosition(selectionElement);
8
+ const useCommentListPosition = (selectedElementIds, isContextComment, isClickedContextComment, commentedDom, commentDetail, closeComment) => {
9
+ var _document$querySelect;
34
10
  const headerHeight = 100;
35
11
  const scrollRef = (0, _useScrollContext.useScrollContext)();
36
12
  const {
37
13
  scrollTop = 0
38
14
  } = scrollRef.current || {};
39
- if (selectionPosition.y !== 0) {
15
+ if (isContextComment || isClickedContextComment) {
16
+ let rect;
17
+ if (isContextComment) {
18
+ rect = commentedDom.getBoundingClientRect();
19
+ }
20
+
21
+ // rect is the last commented context dom
22
+ if (isClickedContextComment) {
23
+ const lastComment = Object.values(commentDetail).map(item => {
24
+ var _item$detail;
25
+ return (_item$detail = item.detail) === null || _item$detail === void 0 ? void 0 : _item$detail.text_comment_id;
26
+ }).flatMap(id => {
27
+ const elements = Array.from(document.querySelectorAll(`.sdoc_comment_${id}`));
28
+ return elements.map(el => ({
29
+ id,
30
+ el
31
+ }));
32
+ }).reduce((last, current) => {
33
+ if (!last) return current;
34
+ const position = last.el.compareDocumentPosition(current.el);
35
+ return position & Node.DOCUMENT_POSITION_FOLLOWING ? current : last;
36
+ }, null);
37
+ if (lastComment) {
38
+ const result = `.sdoc_comment_${lastComment.id}`;
39
+ const elements = Array.from(document.querySelectorAll(result));
40
+ if (elements.length === 0) return;
41
+ const lastTextElement = elements[elements.length - 1];
42
+ const parentElement = lastTextElement.closest('[data-slate-node="element"]');
43
+ const firstInSameParent = elements.find(el => parentElement.contains(el));
44
+ rect = firstInSameParent === null || firstInSameParent === void 0 ? void 0 : firstInSameParent.getBoundingClientRect();
45
+ } else {
46
+ closeComment();
47
+ }
48
+ }
49
+ const editorArticleRight = document.getElementById('sdoc-editor-print-wrapper').getBoundingClientRect().right;
50
+ const topPara = rect.bottom - headerHeight + 10 + scrollTop;
51
+ const rightPara = editorArticleRight - rect.left - 300; // 300 is comment container's width
52
+ return {
53
+ right: rightPara,
54
+ y: topPara
55
+ };
56
+ }
57
+ const selectionPosition = (_document$querySelect = document.querySelectorAll(`[data-id="${selectedElementIds[0]}"]`)[0]) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.getBoundingClientRect();
58
+ // Boundary check
59
+ if (!selectionPosition) closeComment();
60
+ if (selectionPosition && selectionPosition.y !== 0) {
40
61
  selectionPosition.y = selectionPosition.y - headerHeight + scrollTop;
41
62
  }
42
63
  return {
43
- x: selectionPosition.x,
44
- y: selectionPosition.y
64
+ x: selectionPosition === null || selectionPosition === void 0 ? void 0 : selectionPosition.x,
65
+ y: selectionPosition === null || selectionPosition === void 0 ? void 0 : selectionPosition.y
45
66
  };
46
67
  };
47
68
  exports.useCommentListPosition = useCommentListPosition;
@@ -7,12 +7,12 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = ArticleContainer;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
- var _localStorageUtils = _interopRequireDefault(require("../../utils/local-storage-utils"));
11
10
  var _constants = require("../constants");
12
11
  var _useScrollContext = require("../hooks/use-scroll-context");
13
12
  var _defaultMode = require("../utils/default-mode");
14
13
  var _eventBus = _interopRequireDefault(require("../utils/event-bus"));
15
14
  var _fullWidthMode = require("../utils/full-width-mode");
15
+ var _localStorageUtils = _interopRequireDefault(require("../utils/local-storage-utils"));
16
16
  function ArticleContainer(_ref) {
17
17
  let {
18
18
  editor,
@@ -9,12 +9,12 @@ exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _classnames = _interopRequireDefault(require("classnames"));
11
11
  var _constants = require("../../basic-sdk/constants");
12
- var _localStorageUtils = _interopRequireDefault(require("../../utils/local-storage-utils"));
13
12
  var _provider = _interopRequireDefault(require("../comment/provider"));
14
13
  var _useScrollContext = require("../hooks/use-scroll-context");
15
14
  var _outline = _interopRequireDefault(require("../outline"));
16
15
  var _rightPanel = _interopRequireDefault(require("../right-panel"));
17
16
  var _fullWidthMode = require("../utils/full-width-mode");
17
+ var _localStorageUtils = _interopRequireDefault(require("../utils/local-storage-utils"));
18
18
  const EditorContent = _ref => {
19
19
  let {
20
20
  readonly = false,
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.replacePastedDataId = exports.replaceNodeId = exports.decorateOperation = void 0;
8
+ exports.replacePastedDataId = exports.replaceNodeId = exports.removeCommentMarks = exports.decorateOperation = void 0;
9
9
  var _slate = require("@seafile/slate");
10
10
  var _deepCopy = _interopRequireDefault(require("deep-copy"));
11
11
  var _slugid = _interopRequireDefault(require("slugid"));
@@ -133,4 +133,28 @@ const replacePastedDataId = pastedData => {
133
133
  return item;
134
134
  });
135
135
  };
136
- exports.replacePastedDataId = replacePastedDataId;
136
+ exports.replacePastedDataId = replacePastedDataId;
137
+ const removeCommentMarks = fragment => {
138
+ const cleanNode = node => {
139
+ if (_slate.Text.isText(node)) {
140
+ const newNode = {
141
+ ...node
142
+ };
143
+ for (const key of Object.keys(newNode)) {
144
+ if (key.startsWith('sdoc_comment') || key.startsWith('removed_')) {
145
+ delete newNode[key];
146
+ }
147
+ }
148
+ return newNode;
149
+ }
150
+ if (node.children) {
151
+ return {
152
+ ...node,
153
+ children: node.children.map(cleanNode)
154
+ };
155
+ }
156
+ return node;
157
+ };
158
+ return fragment.map(cleanNode);
159
+ };
160
+ exports.removeCommentMarks = removeCommentMarks;
@@ -4,18 +4,50 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ var _slate = require("@seafile/slate");
7
8
  var _constants = require("../extension/constants");
8
9
  var _documentUtils = require("../utils/document-utils");
9
10
  var _helpers = require("./helpers");
10
11
  const withNodeId = editor => {
11
12
  const {
12
- apply
13
+ apply,
14
+ insertText
13
15
  } = editor;
14
16
  const newEditor = editor;
15
17
  newEditor.apply = op => {
16
18
  const newOp = (0, _helpers.decorateOperation)(newEditor, op);
17
19
  apply(newOp);
18
20
  };
21
+ newEditor.insertText = text => {
22
+ const {
23
+ selection
24
+ } = editor;
25
+ // Remove context comment marks when inserting position has comment before selection and no comment after selection
26
+ if (selection && _slate.Range.isCollapsed(selection)) {
27
+ const beforePoint = _slate.Editor.before(editor, selection.focus, {
28
+ unit: 'character'
29
+ });
30
+ const afterPoint = _slate.Editor.after(editor, selection.focus, {
31
+ unit: 'character'
32
+ });
33
+ const beforeText = beforePoint && _slate.Editor.node(editor, beforePoint);
34
+ const afterText = afterPoint && _slate.Editor.node(editor, afterPoint);
35
+ const hasCommentBefore = beforeText && _slate.Text.isText(beforeText[0]) && Object.keys(beforeText[0]).some(k => k.includes('sdoc_comment'));
36
+ const hasCommentAfter = afterText && _slate.Text.isText(afterText[0]) && Object.keys(afterText[0]).some(k => k.includes('sdoc_comment'));
37
+ const hasTrueCommentAfter = afterText && _slate.Text.isText(afterText[0]) && Object.keys(afterText[0]).filter(k => k.includes('sdoc_comment')).some(k => afterText[0][k]);
38
+ if (hasCommentBefore && (!hasCommentAfter || !hasTrueCommentAfter)) {
39
+ const marks = _slate.Editor.marks(editor);
40
+ if (marks) {
41
+ for (const key of Object.keys(marks)) {
42
+ if (key.includes('sdoc_comment')) {
43
+ _slate.Editor.removeMark(editor, key);
44
+ }
45
+ }
46
+ }
47
+ }
48
+ }
49
+ insertText(text);
50
+ };
19
51
 
20
52
  // rewrite insert fragment data
21
53
  newEditor.insertFragmentData = data => {
@@ -23,7 +55,10 @@ const withNodeId = editor => {
23
55
  if (fragment) {
24
56
  const decoded = decodeURIComponent(window.atob(fragment));
25
57
  const parsed = JSON.parse(decoded);
26
- const newData = (0, _helpers.replacePastedDataId)(parsed);
58
+
59
+ // Clean context comment style when pasting commented context
60
+ const cleaned = (0, _helpers.removeCommentMarks)(parsed);
61
+ const newData = (0, _helpers.replacePastedDataId)(cleaned);
27
62
  const normalizeNewData = (0, _documentUtils.normalizeCopyNodes)(newEditor, newData);
28
63
  newEditor.insertFragment(normalizeNewData);
29
64
  return newEditor;
@@ -8,9 +8,9 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _hooks = require("../../hooks");
11
- var _localStorageUtils = _interopRequireDefault(require("../../utils/local-storage-utils"));
12
11
  var _constants = require("../constants");
13
12
  var _eventBus = _interopRequireDefault(require("../utils/event-bus"));
13
+ var _localStorageUtils = _interopRequireDefault(require("../utils/local-storage-utils"));
14
14
  var _resizeWidth = _interopRequireDefault(require("./resize-width"));
15
15
  require("./index.css");
16
16
  const MIN_PANEL_WIDTH = 360;
@@ -42,8 +42,8 @@ const RightPanel = _ref => {
42
42
  setWidth(width);
43
43
  }, []);
44
44
  const resizeWidthEnd = (0, _react.useCallback)(width => {
45
- const settings = JSON.parse(window.localStorage.getItem(_constants.SDOC_STORAGE) || '{}');
46
- window.localStorage.setItem(_constants.SDOC_STORAGE, JSON.stringify({
45
+ const settings = _localStorageUtils.default.getItem(_constants.SDOC_STORAGE) || {};
46
+ _localStorageUtils.default.setItem(_constants.SDOC_STORAGE, JSON.stringify({
47
47
  ...settings,
48
48
  panelWidth: width
49
49
  }));
@@ -51,7 +51,7 @@ const RightPanel = _ref => {
51
51
  eventBus.dispatch(_constants.INTERNAL_EVENT.RESIZE_ARTICLE);
52
52
  }, []);
53
53
  (0, _react.useEffect)(() => {
54
- const settings = JSON.parse(window.localStorage.getItem(_constants.SDOC_STORAGE, '{}')) || {};
54
+ const settings = _localStorageUtils.default.getItem(_constants.SDOC_STORAGE) || {};
55
55
  const {
56
56
  panelWidth
57
57
  } = settings;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isEnglish = exports.getMaximumCapacity = exports.getLocalStorageFiles = void 0;
7
+ const isEnglish = str => {
8
+ const pattern = new RegExp('[A-Za-z]+');
9
+ if (pattern.test(str)) {
10
+ return true;
11
+ }
12
+ return false;
13
+ };
14
+ exports.isEnglish = isEnglish;
15
+ const getMaximumCapacity = files => {
16
+ const containerMaxHeight = 350;
17
+ const containerTop = 40;
18
+ const containerBottom = 32;
19
+ const containerMore = 32;
20
+ const availableHeight = containerMaxHeight - containerTop - containerBottom - containerMore;
21
+ let allHeight = 0;
22
+ const newFiles = [];
23
+ files.forEach(file => {
24
+ const itemHeight = file !== null && file !== void 0 && file.path ? 51 : 32;
25
+ allHeight = allHeight + itemHeight;
26
+ if (allHeight <= availableHeight) {
27
+ newFiles.push(file);
28
+ }
29
+ });
30
+ return newFiles;
31
+ };
32
+ exports.getMaximumCapacity = getMaximumCapacity;
33
+ const getLocalStorageFiles = files => {
34
+ const wikiRepoId = window.wiki.config.wikiId;
35
+ const newFiles = [];
36
+ files.forEach(item => {
37
+ if ((item === null || item === void 0 ? void 0 : item.wikiRepoId) === wikiRepoId) {
38
+ newFiles.push(item);
39
+ }
40
+ });
41
+ return newFiles;
42
+ };
43
+ exports.getLocalStorageFiles = getLocalStorageFiles;
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.getStyleByDefaultMode = void 0;
8
- var _localStorageUtils = _interopRequireDefault(require("../../utils/local-storage-utils"));
9
8
  var _constants = require("../constants");
9
+ var _localStorageUtils = _interopRequireDefault(require("./local-storage-utils"));
10
10
  const getStyleByDefaultMode = (scrollRef, editor) => {
11
11
  const sdocStorage = _localStorageUtils.default.getItem(_constants.SDOC_STORAGE) || {};
12
12
  const {
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.setOriginSdocKey = exports.normalizeCopyNodes = exports.normalizeChildren = exports.getSlateFragmentAttribute = void 0;
7
+ exports.setOriginSdocKey = exports.normalizeCopyNodes = exports.normalizeChildren = exports.getSlateFragmentAttribute = exports.generateDefaultDocContent = void 0;
8
8
  var _deepCopy = _interopRequireDefault(require("deep-copy"));
9
9
  var _index = require("../../basic-sdk/extension/core/utils/index");
10
10
  var _context = _interopRequireDefault(require("../../context"));
@@ -53,4 +53,18 @@ const getSlateFragmentAttribute = dataTransfer => {
53
53
  const [, fragment] = htmlData.match(catchSlateFragment) || [];
54
54
  return fragment;
55
55
  };
56
- exports.getSlateFragmentAttribute = getSlateFragmentAttribute;
56
+ exports.getSlateFragmentAttribute = getSlateFragmentAttribute;
57
+ const generateDefaultDocContent = () => {
58
+ const defaultValue = {
59
+ version: 0,
60
+ elements: [{
61
+ id: 'aaaa',
62
+ type: 'paragraph',
63
+ children: [{
64
+ text: ''
65
+ }]
66
+ }]
67
+ };
68
+ return defaultValue;
69
+ };
70
+ exports.generateDefaultDocContent = generateDefaultDocContent;
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.getStyleByFullWidthMode = exports.getContentStyleByFullModeStyle = void 0;
8
- var _localStorageUtils = _interopRequireDefault(require("../../utils/local-storage-utils"));
9
8
  var _constants = require("../constants");
9
+ var _localStorageUtils = _interopRequireDefault(require("./local-storage-utils"));
10
10
  const getStyleByFullWidthMode = (scrollRef, editor) => {
11
11
  const sdocStorage = _localStorageUtils.default.getItem(_constants.SDOC_STORAGE) || {};
12
12
  const {
@@ -12,7 +12,7 @@ var _context = _interopRequireDefault(require("../../context"));
12
12
  var _formatSdocContent = require("../../utils/format-sdoc-content");
13
13
  var _diff = require("../utils/diff");
14
14
  var _sdocViewer = _interopRequireDefault(require("./sdoc-viewer"));
15
- require("../../assets/css/diff-viewer.css");
15
+ require("../assets/css/diff-viewer.css");
16
16
  const PublishedRevisionDiffViewer = _ref => {
17
17
  let {
18
18
  isShowChanges,
@@ -13,7 +13,7 @@ var _formatSdocContent = require("../../utils/format-sdoc-content");
13
13
  var _insertElementDialog = _interopRequireDefault(require("../extension/commons/insert-element-dialog"));
14
14
  var _diff = require("../utils/diff");
15
15
  var _sdocViewer = _interopRequireDefault(require("./sdoc-viewer"));
16
- require("../../assets/css/diff-viewer.css");
16
+ require("../assets/css/diff-viewer.css");
17
17
  const RevisionDiffViewer = _ref => {
18
18
  let {
19
19
  editor,
@@ -13,7 +13,7 @@ var _extension = require("../extension");
13
13
  var _nodeId = _interopRequireDefault(require("../node-id"));
14
14
  var _diff = require("../utils/diff");
15
15
  var _sdocViewer = _interopRequireDefault(require("./sdoc-viewer"));
16
- require("../../assets/css/diff-viewer.css");
16
+ require("../assets/css/diff-viewer.css");
17
17
  const DiffViewer = _ref => {
18
18
  let {
19
19
  currentContent,
@@ -11,11 +11,11 @@ var _jsBridge = _interopRequireDefault(require("../../android/js-bridge"));
11
11
  var _outlineModule = require("../../android/outline-module");
12
12
  var _context = _interopRequireDefault(require("../../context"));
13
13
  var _hooks = require("../../hooks");
14
- var _utils = require("../../utils");
15
14
  var _extension = require("../extension");
16
15
  var _useColorContext = require("../hooks/use-color-context");
17
16
  var _layout = require("../layout");
18
17
  var _nodeId = _interopRequireDefault(require("../node-id"));
18
+ var _documentUtils = require("../utils/document-utils");
19
19
  var _readonlyArticle = _interopRequireDefault(require("./readonly-article"));
20
20
  require("../assets/css/sdoc-viewer.css");
21
21
  const SDocViewer = _ref => {
@@ -31,7 +31,7 @@ const SDocViewer = _ref => {
31
31
  _context.default.initApi();
32
32
  }
33
33
  const validEditor = editor || (0, _nodeId.default)((0, _extension.createDefaultEditor)());
34
- const slateValue = (document || (0, _utils.generateDefaultDocContent)()).elements;
34
+ const slateValue = (document || (0, _documentUtils.generateDefaultDocContent)()).elements;
35
35
  const Provider = showComment ? _hooks.CollaboratorsProvider : _react.Fragment;
36
36
  (0, _react.useEffect)(() => {
37
37
  const mobileLogin = _context.default.getSetting('mobileLogin');
@@ -7,12 +7,12 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
- var _utils = require("../../utils");
11
10
  var _extension = require("../extension");
12
11
  var _useColorContext = require("../hooks/use-color-context");
13
12
  var _useScrollContext = require("../hooks/use-scroll-context");
14
13
  var _layout = require("../layout");
15
14
  var _nodeId = _interopRequireDefault(require("../node-id"));
15
+ var _documentUtils = require("../utils/document-utils");
16
16
  var _wikiOutline = _interopRequireDefault(require("../wiki-outline"));
17
17
  var _readonlyArticle = _interopRequireDefault(require("./readonly-article"));
18
18
  require("../assets/css/sdoc-wiki-viewer.css");
@@ -25,7 +25,7 @@ const SDocMdViewer = _ref => {
25
25
  scrollRef: propsScrollRef
26
26
  } = _ref;
27
27
  const validEditor = editor || (0, _nodeId.default)((0, _extension.createDefaultEditor)());
28
- const slateValue = (document || (0, _utils.generateDefaultDocContent)()).children;
28
+ const slateValue = (document || (0, _documentUtils.generateDefaultDocContent)()).children;
29
29
  const scrollRef = (0, _react.useRef)(null);
30
30
  const currentScrollRef = propsScrollRef || scrollRef;
31
31
  return /*#__PURE__*/_react.default.createElement(_layout.EditorContainer, {
@@ -14,10 +14,10 @@ var _printJs = _interopRequireDefault(require("@seafile/print-js"));
14
14
  var _basicSdk = require("../../basic-sdk");
15
15
  var _constants = require("../../basic-sdk/constants");
16
16
  var _menuShortcutIndicator = _interopRequireDefault(require("../../basic-sdk/extension/commons/menu-shortcut-indicator"));
17
+ var _localStorageUtils = _interopRequireDefault(require("../../basic-sdk/utils/local-storage-utils"));
17
18
  var _constants2 = require("../../constants");
18
19
  var _context = _interopRequireDefault(require("../../context"));
19
20
  var _utils = require("../../utils");
20
- var _localStorageUtils = _interopRequireDefault(require("../../utils/local-storage-utils"));
21
21
  var _tooltip = _interopRequireDefault(require("../tooltip"));
22
22
  const MoreOperations = _ref => {
23
23
  let {