@seafile/sdoc-editor 2.0.69 → 2.0.70

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 (26) 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/plugins/ai/ai-icon/index.js +2 -2
  18. package/dist/basic-sdk/extension/plugins/ai/ai-module/helpers.js +4 -0
  19. package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +2 -1
  20. package/dist/basic-sdk/extension/plugins/text-style/render-elem.js +28 -4
  21. package/dist/basic-sdk/hooks/use-selection-position.js +51 -30
  22. package/dist/basic-sdk/node-id/helpers.js +26 -2
  23. package/dist/basic-sdk/node-id/index.js +37 -2
  24. package/package.json +1 -1
  25. package/public/locales/en/sdoc-editor.json +2 -1
  26. package/public/locales/zh_CN/sdoc-editor.json +2 -1
@@ -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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "2.0.69",
3
+ "version": "2.0.70",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",
@@ -633,5 +633,6 @@
633
633
  "Presentation": "Presentation",
634
634
  "More_operation": "More operation",
635
635
  "Property": "Property",
636
- "Comment_list": "Comment list"
636
+ "Comment_list": "Comment list",
637
+ "Add_Comment": "Add Comment"
637
638
  }
@@ -634,5 +634,6 @@
634
634
  "Presentation": "演示",
635
635
  "More_operation": "更多操作",
636
636
  "Property": "属性",
637
- "Comment_list": "评论列表"
637
+ "Comment_list": "评论列表",
638
+ "Add_Comment": "添加评论"
638
639
  }