@seafile/sdoc-editor 2.0.44 → 2.0.46

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.
@@ -1,47 +1,72 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
3
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.default = void 0;
8
9
  var _react = _interopRequireWildcard(require("react"));
10
+ var _isHotkey = _interopRequireDefault(require("is-hotkey"));
9
11
  var _reactI18next = require("react-i18next");
10
12
  var _reactstrap = require("reactstrap");
13
+ var _utils = require("../../extension/plugins/seatable-tables/seatable-settings/utils/utils");
11
14
  require("./comment-list.css");
12
15
  const CommentDeletePopover = _ref => {
13
16
  let {
14
17
  type,
15
- setIsShowDeleteModal,
18
+ setIsShowDeletePopover,
16
19
  deleteConfirm,
17
20
  targetId,
18
21
  parentDom
19
22
  } = _ref;
23
+ const popoverRef = (0, _react.useRef)(null);
24
+ const hide = (0, _react.useCallback)(event => {
25
+ if (popoverRef.current && !(0, _utils.getEventClassName)(event).includes('popover') && !popoverRef.current.contains(event.target)) {
26
+ setIsShowDeletePopover(false);
27
+ event.preventDefault();
28
+ event.stopPropagation();
29
+ return false;
30
+ }
31
+ }, [setIsShowDeletePopover]);
32
+ const onHotKey = (0, _react.useCallback)(event => {
33
+ if ((0, _isHotkey.default)('esc', event)) {
34
+ event.preventDefault();
35
+ setIsShowDeletePopover(false);
36
+ }
37
+ }, [setIsShowDeletePopover]);
38
+ (0, _react.useEffect)(() => {
39
+ document.addEventListener('click', hide, true);
40
+ document.addEventListener('keydown', onHotKey);
41
+ return () => {
42
+ document.removeEventListener('click', hide, true);
43
+ document.removeEventListener('keydown', onHotKey);
44
+ };
45
+ }, []);
20
46
  const {
21
47
  t
22
48
  } = (0, _reactI18next.useTranslation)('sdoc-editor');
23
49
  const onDeleteCancel = (0, _react.useCallback)(event => {
24
50
  event.stopPropagation();
25
- setIsShowDeleteModal(false);
26
- }, [setIsShowDeleteModal]);
51
+ setIsShowDeletePopover(false);
52
+ }, [setIsShowDeletePopover]);
27
53
  const handleConfirm = (0, _react.useCallback)(event => {
28
54
  event.stopPropagation();
29
55
  deleteConfirm();
30
56
  }, [deleteConfirm]);
31
- const message = type === 'comment' ? 'comment' : 'reply';
32
- const content = t(`Are_you_sure_to_delete_this_${message}`);
33
57
  return /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
34
58
  container: parentDom,
35
59
  target: targetId,
36
60
  onClick: event => event.stopPropagation(),
37
- placement: "bottom",
61
+ placement: "left",
38
62
  className: "comment-delete-popover",
39
63
  isOpen: true
40
- }, /*#__PURE__*/_react.default.createElement(_reactstrap.PopoverBody, {
41
- className: "comment-delete-popover-container"
64
+ }, /*#__PURE__*/_react.default.createElement("div", {
65
+ className: "comment-delete-popover-container",
66
+ ref: popoverRef
42
67
  }, /*#__PURE__*/_react.default.createElement("div", {
43
68
  className: "delete-tip"
44
- }, content), /*#__PURE__*/_react.default.createElement("div", {
69
+ }, t(`Are_you_sure_to_delete_this_${type === 'comment' ? 'comment' : 'reply'}`)), /*#__PURE__*/_react.default.createElement("div", {
45
70
  className: "delete-control mt-5"
46
71
  }, /*#__PURE__*/_react.default.createElement("button", {
47
72
  className: "btn btn-secondary mr-2",
@@ -10,6 +10,7 @@ var _react = _interopRequireWildcard(require("react"));
10
10
  var _reactI18next = require("react-i18next");
11
11
  var _reactstrap = require("reactstrap");
12
12
  var _dayjs = _interopRequireDefault(require("dayjs"));
13
+ var _context = _interopRequireDefault(require("../../../context"));
13
14
  var _commentEditor = _interopRequireDefault(require("./comment-editor"));
14
15
  var _tooltip = _interopRequireDefault(require("../../../components/tooltip"));
15
16
  var _notificationHooks = require("../hooks/notification-hooks");
@@ -79,6 +80,7 @@ const CommentItemContent = _ref => {
79
80
  updateCommentResolved(false);
80
81
  }, [updateCommentResolved]);
81
82
  const menuId = (0, _react.useMemo)(() => `comment_${comment.id}`, [comment]);
83
+ const user = _context.default.getUserInfo();
82
84
  return /*#__PURE__*/_react.default.createElement("div", {
83
85
  className: "comment-item"
84
86
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -100,7 +102,7 @@ const CommentItemContent = _ref => {
100
102
  className: "comment-success-resolved sdocfont sdoc-mark-as-resolved"
101
103
  })))), isUnseen && !isActive && /*#__PURE__*/_react.default.createElement("span", {
102
104
  className: "sdoc-unread-message-tip"
103
- }), isActive && /*#__PURE__*/_react.default.createElement("div", {
105
+ }), isActive && comment.user_email === user.username && /*#__PURE__*/_react.default.createElement("div", {
104
106
  className: "d-flex comment-item-operation-wrapper"
105
107
  }, !comment.resolved && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
106
108
  id: `tooltip_${menuId}`,
@@ -37,10 +37,10 @@ const CommentItemReply = _ref => {
37
37
  event.stopPropagation();
38
38
  setIsEditing(true);
39
39
  }, []);
40
- const [isShowDeleteDialog, setIsShowDeleteDialog] = (0, _react.useState)(false);
40
+ const [isShowDeletePopover, setIsShowDeletePopover] = (0, _react.useState)(false);
41
41
  const onDeleteToggle = (0, _react.useCallback)(event => {
42
42
  event.stopPropagation();
43
- setIsShowDeleteDialog(true);
43
+ setIsShowDeletePopover(true);
44
44
  }, []);
45
45
  const transferHtml = async mdString => {
46
46
  const htmlString = await _mdToHtml.default.process(mdString);
@@ -52,7 +52,7 @@ const CommentItemReply = _ref => {
52
52
  }, [reply.reply]);
53
53
  const _deleteReply = (0, _react.useCallback)(() => {
54
54
  deleteReply(reply.id);
55
- setIsShowDeleteDialog(false);
55
+ setIsShowDeletePopover(false);
56
56
  }, [reply.id, deleteReply]);
57
57
  const updateContent = (0, _react.useCallback)(content => {
58
58
  if (reply.reply !== content) {
@@ -118,11 +118,11 @@ const CommentItemReply = _ref => {
118
118
  content: editorContent,
119
119
  updateContent: updateContent,
120
120
  setIsEditing: setIsEditing
121
- }), isShowDeleteDialog && isActive && /*#__PURE__*/_react.default.createElement(_commentDeletePopover.default, {
121
+ }), isShowDeletePopover && isActive && /*#__PURE__*/_react.default.createElement(_commentDeletePopover.default, {
122
122
  parentDom: itemRef.current,
123
123
  type: "reply",
124
124
  deleteConfirm: _deleteReply,
125
- setIsShowDeleteModal: setIsShowDeleteDialog,
125
+ setIsShowDeletePopover: setIsShowDeletePopover,
126
126
  targetId: replyOpToolsId
127
127
  }));
128
128
  };
@@ -37,7 +37,7 @@ const CommentItemWrapper = _ref => {
37
37
  dispatch
38
38
  } = (0, _useCommentContext.useCommentContext)();
39
39
  const scrollRef = (0, _react.useRef)(document.querySelector('.sdoc-scroll-container'));
40
- const [isShowDeleteDialog, setIsShowDeleteDialog] = (0, _react.useState)(false);
40
+ const [isShowDeletePopover, setIsShowDeletePopover] = (0, _react.useState)(false);
41
41
  const commentOpToolsId = `commentOpTools_${comment === null || comment === void 0 ? void 0 : comment.id}`;
42
42
  const style = !isGlobalComment && isCollapseCommentEditor ? {
43
43
  maxHeight: '341px'
@@ -238,16 +238,16 @@ const CommentItemWrapper = _ref => {
238
238
  onCommentClick && onCommentClick(comment);
239
239
  }, [comment, onCommentClick]);
240
240
  const onDeleteComment = (0, _react.useCallback)(() => {
241
- setIsShowDeleteDialog(true);
241
+ setIsShowDeletePopover(true);
242
242
  }, []);
243
243
  const _deleteComment = (0, _react.useCallback)(() => {
244
244
  deleteComment(comment.id);
245
- setIsShowDeleteDialog(false);
245
+ setIsShowDeletePopover(false);
246
246
  setCurrentCommentGroup && setCurrentCommentGroup(null);
247
247
  }, [comment.id, deleteComment, setCurrentCommentGroup]);
248
248
  (0, _react.useEffect)(() => {
249
249
  if (!isActive) {
250
- setIsShowDeleteDialog(false);
250
+ setIsShowDeletePopover(false);
251
251
  }
252
252
  }, [isActive]);
253
253
  const className = (0, _classnames.default)('comment-ui-container', {
@@ -300,12 +300,11 @@ const CommentItemWrapper = _ref => {
300
300
  updateReply
301
301
  };
302
302
  return /*#__PURE__*/_react.default.createElement(_commentItemReply.default, props);
303
- })), isShowDeleteDialog && isActive && /*#__PURE__*/_react.default.createElement(_commentDeletePopover.default, {
303
+ })), isShowDeletePopover && isActive && /*#__PURE__*/_react.default.createElement(_commentDeletePopover.default, {
304
304
  type: "comment",
305
- setIsShowDeleteDialog: setIsShowDeleteDialog,
306
305
  targetId: commentOpToolsId,
307
306
  deleteConfirm: _deleteComment,
308
- setIsShowDeleteModal: setIsShowDeleteDialog,
307
+ setIsShowDeletePopover: setIsShowDeletePopover,
309
308
  parentDom: listRef.current
310
309
  }));
311
310
  };
@@ -51,7 +51,7 @@
51
51
  padding: 16px;
52
52
  }
53
53
 
54
- .comment-delete-popover-container .delete-control {
54
+ .comment-delete-popover .comment-delete-popover-container .delete-control {
55
55
  display: flex;
56
56
  justify-content: flex-end;
57
57
  width: 100%;
@@ -19,7 +19,6 @@ var _constants = require("../../extension/constants");
19
19
  var _constants2 = require("../../constants");
20
20
  const EditorComment = _ref => {
21
21
  let {
22
- deleteUnseenNotifications,
23
22
  editor
24
23
  } = _ref;
25
24
  (0, _useSelectionUpdate.default)();
@@ -24,11 +24,10 @@ const ElementsCommentCount = _ref => {
24
24
  const unresolvedComment = comments.filter(item => !item.resolved);
25
25
  const unresolvedCommentCount = unresolvedComment.length;
26
26
  if (unresolvedCommentCount === 0) return null;
27
- const isSelected = selectionElement && selectionElement.id === elementId;
28
27
  return /*#__PURE__*/_react.default.createElement(_elementCommentCount.default, {
29
28
  key: elementId,
30
29
  elementId: elementId,
31
- isElementSelected: isSelected,
30
+ isElementSelected: selectionElement && selectionElement.id === elementId,
32
31
  commentsCount: unresolvedCommentCount,
33
32
  editor: editor,
34
33
  onSelectElement: onSelectElement
@@ -56,7 +56,6 @@ const CommentWrapper = _ref => {
56
56
  } = _context.default.getSettings('isFreezed');
57
57
  if (commentsInfo.isFetching) return null;
58
58
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, type === 'editor' && !isFreezed && /*#__PURE__*/_react.default.createElement(_components.EditorComment, {
59
- deleteUnseenNotifications: deleteUnseenNotifications,
60
59
  editor: editor
61
60
  }), type === 'global' && /*#__PURE__*/_react.default.createElement(_components.GlobalComment, {
62
61
  deleteUnseenNotifications: deleteUnseenNotifications,
@@ -13,6 +13,16 @@ const paragraphRule = (element, parseChild) => {
13
13
  childNodes
14
14
  } = element;
15
15
  if (nodeName === 'P' && element.parentElement.nodeName !== 'LI') {
16
+ if (childNodes.length === 0) {
17
+ return {
18
+ id: _slugid.default.nice(),
19
+ type: _constants.PARAGRAPH,
20
+ children: [{
21
+ id: _slugid.default.nice(),
22
+ text: ''
23
+ }]
24
+ };
25
+ }
16
26
  return {
17
27
  id: _slugid.default.nice(),
18
28
  type: _constants.PARAGRAPH,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "2.0.44",
3
+ "version": "2.0.46",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",
@@ -25,6 +25,7 @@
25
25
  "randomcolor": "0.6.2",
26
26
  "react-color": "2.19.3",
27
27
  "react-cookies": "0.1.1",
28
+ "react-transition-group": "4.4.5",
28
29
  "reactstrap": "9.2.3",
29
30
  "rehype-format": "5.0.0",
30
31
  "rehype-mathjax": "5.0.0",
@@ -38,7 +39,7 @@
38
39
  "remark-parse": "11.0.0",
39
40
  "remark-rehype": "11.0.0",
40
41
  "remark-stringify": "11.0.0",
41
- "sea-chart": "2.0.8",
42
+ "sea-chart": "1.1.82",
42
43
  "slugid": "3.2.0",
43
44
  "socket.io-client": "4.8.1",
44
45
  "type-of": "2.0.1",