@seafile/sdoc-editor 3.0.4 → 3.0.6

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.
@@ -383,6 +383,7 @@
383
383
  }
384
384
 
385
385
  .sdoc-comment-list-container-popover {
386
+ z-index: 102;
386
387
  background-color: rgba(255, 255, 255);
387
388
  box-shadow: 0 1px 3px rgba(0, 0, 0, .15), 0 4px 8px 3px rgba(0, 0, 0, .15);
388
389
  border-radius: 5px;
@@ -65,32 +65,32 @@ var EditorComment = function EditorComment(_ref) {
65
65
  var unresolvedComments = element_comments_map[elementId].filter(function (item) {
66
66
  return !item.resolved;
67
67
  });
68
+ setIsShowComments(true);
68
69
  setCommentDetail((0, _objectSpread2["default"])({}, unresolvedComments));
69
70
  setIsClickedContextComment(false);
71
+ return;
70
72
  }
71
- setIsShowComments(true);
72
- if (isClickInContext) {
73
- var clickedComments = [];
74
- for (var _i = 0, _Object$values = Object.values(editor.element_comments_map); _i < _Object$values.length; _i++) {
75
- var comments = _Object$values[_i];
76
- var _iterator = (0, _createForOfIteratorHelper2["default"])(comments),
77
- _step;
78
- try {
79
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
80
- var comment = _step.value;
81
- if (elementId.includes(comment.detail.text_comment_id)) {
82
- clickedComments.push(comment);
83
- }
73
+ var clickedComments = [];
74
+ for (var _i = 0, _Object$values = Object.values(editor.element_comments_map); _i < _Object$values.length; _i++) {
75
+ var comments = _Object$values[_i];
76
+ var _iterator = (0, _createForOfIteratorHelper2["default"])(comments),
77
+ _step;
78
+ try {
79
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
80
+ var comment = _step.value;
81
+ if (elementId.includes(comment.detail.text_comment_id)) {
82
+ clickedComments.push(comment);
84
83
  }
85
- } catch (err) {
86
- _iterator.e(err);
87
- } finally {
88
- _iterator.f();
89
84
  }
85
+ } catch (err) {
86
+ _iterator.e(err);
87
+ } finally {
88
+ _iterator.f();
90
89
  }
91
- setCommentDetail((0, _objectSpread2["default"])({}, clickedComments));
92
- setIsClickedContextComment(true);
93
90
  }
91
+ setIsShowComments(true);
92
+ setCommentDetail((0, _objectSpread2["default"])({}, clickedComments));
93
+ setIsClickedContextComment(true);
94
94
  }, [editor, element_comments_map, hiddenComment]);
95
95
  (0, _react.useEffect)(function () {
96
96
  var handleHoverContextComment = function handleHoverContextComment(event) {
@@ -22,6 +22,7 @@ var CommentContextProvider = function CommentContextProvider(_ref) {
22
22
  dispatch = _useReducer2[1];
23
23
  (0, _useCommentMount.useCommentsMount)(dispatch);
24
24
  (0, _react.useEffect)(function () {
25
+ editor.element_comments_map = {};
25
26
  if (Object.keys(commentsInfo.element_comments_map).length) {
26
27
  editor.element_comments_map = commentsInfo.element_comments_map;
27
28
  var eventBus = _eventBus["default"].getInstance();
@@ -189,6 +189,7 @@ var EditableArticle = function EditableArticle(_ref) {
189
189
  });
190
190
  }
191
191
  }
192
+ // eslint-disable-next-line react-hooks/exhaustive-deps
192
193
  }, [editor.selection]);
193
194
  var onKeyDown = (0, _react.useCallback)(function (event) {
194
195
  var _scrollRef$current = scrollRef.current,
@@ -87,6 +87,7 @@ var SdocEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
87
87
 
88
88
  // eslint-disable-next-line react-hooks/exhaustive-deps
89
89
  }, []);
90
+
90
91
  // useMount: init socket connection
91
92
  (0, _react.useEffect)(function () {
92
93
  if (propsEditor) return;
@@ -265,6 +266,7 @@ var SdocEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
265
266
  }, /*#__PURE__*/_react["default"].createElement(_readonlyArticle["default"], {
266
267
  editor: validEditor,
267
268
  slateValue: slateValue,
269
+ updateSlateValue: onValueChange,
268
270
  showComment: false
269
271
  }))));
270
272
  }
@@ -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.removeMark = exports.isMenuDisabled = exports.getValue = exports.addMark = void 0;
7
+ exports.removeMark = exports.isTextCommentExist = exports.isMenuDisabled = exports.getValue = exports.addMark = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
9
9
  var _slate = require("@seafile/slate");
10
10
  var _elementType = require("../../constants/element-type");
@@ -64,4 +64,19 @@ var getValue = exports.getValue = function getValue(editor, mark) {
64
64
  match = _Editor$nodes4[0];
65
65
  return !!match;
66
66
  }
67
+ };
68
+ var isTextCommentExist = exports.isTextCommentExist = function isTextCommentExist(commentClass, editor) {
69
+ if (!commentClass) return null;
70
+ if (!editor.element_comments_map) return null;
71
+ var commentId = commentClass.split('sdoc_comment_')[1];
72
+ if (!commentId) return null;
73
+ var element_comments_map = editor.element_comments_map;
74
+ var commentsArray = Object.values(element_comments_map);
75
+ var comments = commentsArray.flat();
76
+ var comment = comments.find(function (item) {
77
+ var id = item.detail.text_comment_id || '';
78
+ if (id === commentId) return true;
79
+ return false;
80
+ });
81
+ return comment ? true : false;
67
82
  };
@@ -12,8 +12,9 @@ var _react = _interopRequireDefault(require("react"));
12
12
  var _constants = require("../../constants");
13
13
  var _helpers = require("../font/helpers");
14
14
  var _caret = _interopRequireDefault(require("./caret"));
15
+ var _helpers2 = require("./helpers");
15
16
  var _excluded = ["text"];
16
- var renderText = function renderText(props) {
17
+ var renderText = function renderText(props, editor) {
17
18
  var attributes = props.attributes,
18
19
  children = props.children,
19
20
  leaf = props.leaf;
@@ -57,6 +58,9 @@ var renderText = function renderText(props) {
57
58
  var _step$value = (0, _slicedToArray2["default"])(_step.value, 2),
58
59
  key = _step$value[0],
59
60
  value = _step$value[1];
61
+ if (!(0, _helpers2.isTextCommentExist)(key, editor)) {
62
+ delete rest[key];
63
+ }
60
64
  if (value === false && key.startsWith('sdoc_comment_')) {
61
65
  var newKey = "removed_".concat(key);
62
66
  rest[newKey] = true;
@@ -1,16 +1,32 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports["default"] = void 0;
8
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
9
- var _react = _interopRequireDefault(require("react"));
10
+ var _react = _interopRequireWildcard(require("react"));
10
11
  var _slateReact = require("@seafile/slate-react");
12
+ var _constants = require("../../constants");
13
+ var _useForceUpdate = _interopRequireDefault(require("../../hooks/use-force-update"));
14
+ var _eventBus = _interopRequireDefault(require("../../utils/event-bus"));
11
15
  var _plugins = require("../plugins");
12
16
  var CustomLeaf = function CustomLeaf(props) {
13
17
  var editor = (0, _slateReact.useSlateStatic)();
18
+ var forceUpdate = (0, _useForceUpdate["default"])();
19
+ var updateRender = (0, _react.useCallback)(function () {
20
+ forceUpdate();
21
+ }, [forceUpdate]);
22
+ (0, _react.useEffect)(function () {
23
+ var eventBus = _eventBus["default"].getInstance();
24
+ var unsubscribeReloadComment = eventBus.subscribe(_constants.INTERNAL_EVENT.RELOAD_COMMENT, updateRender);
25
+ return function () {
26
+ unsubscribeReloadComment();
27
+ };
28
+ // eslint-disable-next-line react-hooks/exhaustive-deps
29
+ }, []);
14
30
  var _TextPlugin$renderEle = (0, _slicedToArray2["default"])(_plugins.TextPlugin.renderElements, 1),
15
31
  renderText = _TextPlugin$renderEle[0];
16
32
  return renderText(props, editor);
@@ -16,12 +16,14 @@ var _layout = require("../layout");
16
16
  var ReadOnlyArticle = function ReadOnlyArticle(_ref) {
17
17
  var editor = _ref.editor,
18
18
  slateValue = _ref.slateValue,
19
+ updateSlateValue = _ref.updateSlateValue,
19
20
  _ref$showComment = _ref.showComment,
20
21
  showComment = _ref$showComment === void 0 ? false : _ref$showComment;
21
22
  var decorate = (0, _decorates.usePipDecorate)(editor);
22
23
  return /*#__PURE__*/_react["default"].createElement(_slateReact.Slate, {
23
24
  editor: editor,
24
- value: slateValue
25
+ value: slateValue,
26
+ onChange: updateSlateValue
25
27
  }, /*#__PURE__*/_react["default"].createElement(_layout.ArticleContainer, {
26
28
  editor: editor
27
29
  }, /*#__PURE__*/_react["default"].createElement(_react.Fragment, null, /*#__PURE__*/_react["default"].createElement(_highlight.SetNodeToDecorations, null), /*#__PURE__*/_react["default"].createElement(_slateReact.Editable, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "3.0.4",
3
+ "version": "3.0.6",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -71,5 +71,5 @@
71
71
  "publishConfig": {
72
72
  "access": "public"
73
73
  },
74
- "gitHead": "40de301531da184f54c0270ca175c91c5ce52c5c"
74
+ "gitHead": "975472a9d94d065f221dc7e76bde42fcb73cb2d8"
75
75
  }