@seafile/comment-editor 0.0.1-alpha.3 → 0.0.1-alpha.5

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 (56) hide show
  1. package/dist/basic-sdk/assets/css/layout.css +1 -45
  2. package/dist/basic-sdk/comment/utils.js +39 -0
  3. package/dist/basic-sdk/editor/comment-editor.css +138 -0
  4. package/dist/basic-sdk/{comment/components → editor}/comment-editor.js +27 -20
  5. package/dist/basic-sdk/hooks/use-comment.js +8 -169
  6. package/dist/basic-sdk/index.js +3 -10
  7. package/dist/index.js +0 -12
  8. package/dist/pages/seafile-comment-editor.js +16 -10
  9. package/package.json +1 -1
  10. package/dist/assets/css/plugin-editor.css +0 -7
  11. package/dist/assets/css/simple-viewer.css +0 -6
  12. package/dist/basic-sdk/comment/components/comment-all-participants/index.css +0 -83
  13. package/dist/basic-sdk/comment/components/comment-all-participants/index.js +0 -67
  14. package/dist/basic-sdk/comment/components/comment-all-participants/participant-avatar.js +0 -43
  15. package/dist/basic-sdk/comment/components/comment-delete-popover.js +0 -80
  16. package/dist/basic-sdk/comment/components/comment-item-collapse-wrapper.js +0 -160
  17. package/dist/basic-sdk/comment/components/comment-item-content.js +0 -154
  18. package/dist/basic-sdk/comment/components/comment-item-reply.js +0 -124
  19. package/dist/basic-sdk/comment/components/comment-item-resolved-reply.js +0 -38
  20. package/dist/basic-sdk/comment/components/comment-item-wrapper.js +0 -364
  21. package/dist/basic-sdk/comment/components/comment-list.css +0 -422
  22. package/dist/basic-sdk/comment/components/comment-list.js +0 -216
  23. package/dist/basic-sdk/comment/components/comment-participants-editor/index.css +0 -132
  24. package/dist/basic-sdk/comment/components/comment-participants-editor/index.js +0 -69
  25. package/dist/basic-sdk/comment/components/comment-participants-editor/searched-collaborators.js +0 -62
  26. package/dist/basic-sdk/comment/components/comment-participants-editor/selected-participants.js +0 -48
  27. package/dist/basic-sdk/comment/components/editor-comment.js +0 -183
  28. package/dist/basic-sdk/comment/components/elements-comment-count/element-comment-count.js +0 -64
  29. package/dist/basic-sdk/comment/components/elements-comment-count/index.css +0 -29
  30. package/dist/basic-sdk/comment/components/elements-comment-count/index.js +0 -49
  31. package/dist/basic-sdk/comment/components/global-comment/global-comment-body-header.js +0 -88
  32. package/dist/basic-sdk/comment/components/global-comment/global-comment-header.js +0 -90
  33. package/dist/basic-sdk/comment/components/global-comment/index.css +0 -328
  34. package/dist/basic-sdk/comment/components/global-comment/index.js +0 -217
  35. package/dist/basic-sdk/comment/components/index.js +0 -21
  36. package/dist/basic-sdk/comment/components/style.css +0 -40
  37. package/dist/basic-sdk/comment/helper.js +0 -184
  38. package/dist/basic-sdk/comment/hooks/comment-hooks/use-comment-context.js +0 -20
  39. package/dist/basic-sdk/comment/hooks/comment-hooks/use-comment-list.js +0 -45
  40. package/dist/basic-sdk/comment/hooks/comment-hooks/use-comment-mount.js +0 -57
  41. package/dist/basic-sdk/comment/hooks/notification-hooks/index.js +0 -25
  42. package/dist/basic-sdk/comment/hooks/notification-hooks/use-notification-context.js +0 -20
  43. package/dist/basic-sdk/comment/hooks/notification-hooks/use-notification-mount.js +0 -70
  44. package/dist/basic-sdk/comment/hooks/use-participants.js +0 -26
  45. package/dist/basic-sdk/comment/index.js +0 -21
  46. package/dist/basic-sdk/comment/reducer/comment-reducer.js +0 -353
  47. package/dist/basic-sdk/comment/reducer/notification-reducer.js +0 -89
  48. package/dist/basic-sdk/comment/utils/get-event-transfer.js +0 -77
  49. package/dist/basic-sdk/comment/utils/index.js +0 -281
  50. package/dist/basic-sdk/comment/utils/notification-utils.js +0 -62
  51. package/dist/basic-sdk/socket/helpers.js +0 -299
  52. package/dist/basic-sdk/socket/index.js +0 -20
  53. package/dist/basic-sdk/socket/socket-client.js +0 -211
  54. package/dist/basic-sdk/socket/socket-manager.js +0 -386
  55. package/dist/basic-sdk/socket/with-socket-io.js +0 -73
  56. /package/dist/basic-sdk/comment/{constants/index.js → constants.js} +0 -0
@@ -1,124 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _react = _interopRequireWildcard(require("react"));
10
- var _reactI18next = require("react-i18next");
11
- var _reactstrap = require("reactstrap");
12
- var _dayjs = _interopRequireDefault(require("dayjs"));
13
- var _context = _interopRequireDefault(require("../../context"));
14
- var _mdToHtml = _interopRequireDefault(require("../../slate-convert/md-to-html"));
15
- var _commentDeletePopover = _interopRequireDefault(require("./comment-delete-popover"));
16
- var _commentEditor = _interopRequireDefault(require("./comment-editor"));
17
- const CommentItemReply = _ref => {
18
- let {
19
- isActive,
20
- container,
21
- reply,
22
- deleteReply,
23
- updateReply,
24
- t
25
- } = _ref;
26
- const [isDropdownOpen, setDropdownOpen] = (0, _react.useState)(false);
27
- const itemRef = (0, _react.useRef)(null);
28
- const [isEditing, setIsEditing] = (0, _react.useState)(false);
29
- const [editorContent, setEditorContent] = (0, _react.useState)('');
30
- const replyOpToolsId = `replyOpTools_${reply.id}`;
31
- const onEditToggle = (0, _react.useCallback)(event => {
32
- event.stopPropagation();
33
- setIsEditing(true);
34
- }, []);
35
- const [isShowDeletePopover, setIsShowDeletePopover] = (0, _react.useState)(false);
36
- const onDeleteToggle = (0, _react.useCallback)(event => {
37
- event.stopPropagation();
38
- setIsShowDeletePopover(true);
39
- }, []);
40
- const transferHtml = async mdString => {
41
- const htmlString = await _mdToHtml.default.process(mdString);
42
- const formatHtml = String(htmlString).replace(/\n */g, '');
43
- setEditorContent(formatHtml);
44
- };
45
- (0, _react.useEffect)(() => {
46
- transferHtml(reply.reply);
47
- }, [reply.reply]);
48
- const _deleteReply = (0, _react.useCallback)(() => {
49
- deleteReply(reply.id);
50
- setIsShowDeletePopover(false);
51
- }, [reply.id, deleteReply]);
52
- const updateContent = (0, _react.useCallback)(content => {
53
- if (reply.reply !== content) {
54
- const time = (0, _dayjs.default)().format('YYYY-MM-DD HH:mm:ss');
55
- const newReply = {
56
- reply: content,
57
- updated_at: time
58
- };
59
- updateReply(reply.id, newReply);
60
- }
61
- setIsEditing(false);
62
- }, [reply, updateReply]);
63
- const user = _context.default.getUserInfo();
64
- return /*#__PURE__*/_react.default.createElement("div", {
65
- className: "comment-item",
66
- ref: itemRef
67
- }, /*#__PURE__*/_react.default.createElement("div", {
68
- className: "comment-header"
69
- }, /*#__PURE__*/_react.default.createElement("div", {
70
- className: "comment-author"
71
- }, /*#__PURE__*/_react.default.createElement("span", {
72
- className: "comment-author__avatar"
73
- }, /*#__PURE__*/_react.default.createElement("img", {
74
- alt: "",
75
- src: reply.avatar_url
76
- })), /*#__PURE__*/_react.default.createElement("span", {
77
- className: "comment-author__info"
78
- }, /*#__PURE__*/_react.default.createElement("span", {
79
- className: "name"
80
- }, reply.user_name), /*#__PURE__*/_react.default.createElement("span", {
81
- className: "time"
82
- }, (0, _dayjs.default)(reply.updated_at).format('MM-DD HH:mm')))), isActive && user.username === reply.author && /*#__PURE__*/_react.default.createElement("div", {
83
- className: "comment-item-operation-wrapper"
84
- }, /*#__PURE__*/_react.default.createElement(_reactstrap.Dropdown, {
85
- id: replyOpToolsId,
86
- isOpen: isDropdownOpen,
87
- toggle: () => setDropdownOpen(!isDropdownOpen)
88
- }, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownToggle, {
89
- tag: "div",
90
- className: "comment-operation"
91
- }, /*#__PURE__*/_react.default.createElement("i", {
92
- className: "sdocfont sdoc-more"
93
- })), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownMenu, {
94
- className: "sdoc-dropdown-menu",
95
- container: container
96
- }, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
97
- className: "sdoc-dropdown-menu-item",
98
- tag: "div",
99
- onClick: onEditToggle
100
- }, t('Edit')), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
101
- className: "sdoc-dropdown-menu-item",
102
- tag: "div",
103
- onClick: onDeleteToggle
104
- }, t('Delete')))))), /*#__PURE__*/_react.default.createElement("div", {
105
- className: "comment-content"
106
- }, !isEditing && /*#__PURE__*/_react.default.createElement("div", {
107
- dangerouslySetInnerHTML: {
108
- __html: editorContent
109
- }
110
- })), isEditing && /*#__PURE__*/_react.default.createElement(_commentEditor.default, {
111
- className: "pb-3",
112
- type: "reply",
113
- content: editorContent,
114
- updateContent: updateContent,
115
- setIsEditing: setIsEditing
116
- }), isShowDeletePopover && isActive && /*#__PURE__*/_react.default.createElement(_commentDeletePopover.default, {
117
- parentDom: itemRef.current,
118
- type: "reply",
119
- deleteConfirm: _deleteReply,
120
- setIsShowDeletePopover: setIsShowDeletePopover,
121
- targetId: replyOpToolsId
122
- }));
123
- };
124
- var _default = exports.default = (0, _reactI18next.withTranslation)('sdoc-editor')(CommentItemReply);
@@ -1,38 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _react = _interopRequireWildcard(require("react"));
10
- var _reactI18next = require("react-i18next");
11
- var _dayjs = _interopRequireDefault(require("dayjs"));
12
- const CommentItemResolvedReply = _ref => {
13
- let {
14
- reply,
15
- t
16
- } = _ref;
17
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
18
- className: "comment-item"
19
- }, /*#__PURE__*/_react.default.createElement("div", {
20
- className: "comment-header"
21
- }, /*#__PURE__*/_react.default.createElement("div", {
22
- className: "comment-author"
23
- }, /*#__PURE__*/_react.default.createElement("span", {
24
- className: "comment-author__avatar"
25
- }, /*#__PURE__*/_react.default.createElement("img", {
26
- alt: "",
27
- src: reply.avatar_url
28
- })), /*#__PURE__*/_react.default.createElement("span", {
29
- className: "comment-author__info"
30
- }, /*#__PURE__*/_react.default.createElement("span", {
31
- className: "name"
32
- }, reply.user_name), /*#__PURE__*/_react.default.createElement("span", {
33
- className: "time"
34
- }, (0, _dayjs.default)(reply.updated_at).format('MM-DD HH:mm'))))), /*#__PURE__*/_react.default.createElement("p", {
35
- className: "comment-content"
36
- }, reply.reply === 'True' && /*#__PURE__*/_react.default.createElement("span", null, t('Mark_as_Resolved')), reply.reply === 'False' && /*#__PURE__*/_react.default.createElement("span", null, t('Resubmitted')))));
37
- };
38
- var _default = exports.default = (0, _reactI18next.withTranslation)('sdoc-editor')(CommentItemResolvedReply);
@@ -1,364 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _react = _interopRequireWildcard(require("react"));
10
- var _slate = require("@seafile/slate");
11
- var _slateReact = require("@seafile/slate-react");
12
- var _classnames = _interopRequireDefault(require("classnames"));
13
- var _dayjs = _interopRequireDefault(require("dayjs"));
14
- var _context = _interopRequireDefault(require("../../context"));
15
- var _useComment = require("../../hooks/use-comment");
16
- var _constants = require("../constants");
17
- var _helper = require("../helper");
18
- var _commentDeletePopover = _interopRequireDefault(require("./comment-delete-popover"));
19
- var _commentItemContent = _interopRequireDefault(require("./comment-item-content"));
20
- var _commentItemReply = _interopRequireDefault(require("./comment-item-reply"));
21
- const CommentItemWrapper = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
22
- let {
23
- container = 'sdoc-comment-list-container',
24
- editor,
25
- element,
26
- isActive,
27
- comment,
28
- commentsDetail,
29
- setIsClickedContextComment,
30
- setIsCommentPanelVisible,
31
- onSelectElement,
32
- isGlobalComment,
33
- commentDetailRef,
34
- updateScrollPosition,
35
- setCurrentCommentGroup,
36
- onCommentClick,
37
- isEmptyComment,
38
- isCollapseCommentEditor,
39
- isClickedContextComment = false,
40
- closeComment
41
- } = _ref;
42
- const listRef = (0, _react.useRef)(null);
43
- const {
44
- dispatch,
45
- api
46
- } = (0, _useComment.useComment)();
47
- const scrollRef = (0, _react.useRef)(document.querySelector('.sdoc-scroll-container'));
48
- const [isShowDeletePopover, setIsShowDeletePopover] = (0, _react.useState)(false);
49
- const commentOpToolsId = `commentOpTools_${comment === null || comment === void 0 ? void 0 : comment.id}`;
50
- const style = !isGlobalComment && isCollapseCommentEditor ? {
51
- maxHeight: '341px'
52
- } : {};
53
- const updateComment = (0, _react.useCallback)(async (commentId, newComment) => {
54
- await api.updateComment(commentId, newComment);
55
- const elementId = (0, _helper.getPrimaryElementId)(comment.detail);
56
- dispatch({
57
- type: 'UPDATE_COMMENT',
58
- payload: {
59
- element_id: elementId,
60
- comment_id: commentId,
61
- comment: newComment
62
- }
63
- });
64
- }, [api, comment.detail, dispatch]);
65
- const updateCommentState = (0, _react.useCallback)(async (commentId, newComment) => {
66
- const time = (0, _dayjs.default)().format('YYYY-MM-DD HH:mm:ss');
67
- const user = _context.default.getUserInfo();
68
- console.log(user);
69
- const reply = {
70
- type: 'comment',
71
- reply: newComment.resolved,
72
- updated_at: time,
73
- author: user.username
74
- };
75
-
76
- // When updating comment status, add a new reply
77
- const res = await api.insertReply(commentId, reply);
78
- const {
79
- reply: returnReply
80
- } = res.data;
81
- const newReply = {
82
- ...reply,
83
- id: returnReply.id,
84
- reply: returnReply.reply,
85
- user_name: returnReply.user_name,
86
- avatar_url: returnReply.avatar_url
87
- };
88
- const elementId = (0, _helper.getPrimaryElementId)(comment.detail);
89
- if (newComment.resolved === true) {
90
- const resolvedComment = commentsDetail ? Object.values(commentsDetail).find(comments => comments.id === commentId) : comment;
91
- if (resolvedComment.detail.element_id_list) {
92
- var _resolvedComment$deta;
93
- (0, _helper.updateCommentedElementsAttrs)(resolvedComment.detail.element_id_list, editor, (_resolvedComment$deta = resolvedComment.detail) === null || _resolvedComment$deta === void 0 ? void 0 : _resolvedComment$deta.text_comment_id, !newComment.resolved);
94
- closeComment && closeComment();
95
- }
96
- if (commentsDetail && Object.values(commentsDetail).length === 1) {
97
- setIsClickedContextComment(false);
98
- setIsCommentPanelVisible(false);
99
- }
100
- }
101
- if (newComment.resolved === false && comment.detail.element_id_list) {
102
- const unresolvedComment = commentsDetail ? Object.values(commentsDetail).find(comments => comments.id === commentId) : comment;
103
- if (unresolvedComment.detail.element_id_list) {
104
- var _unresolvedComment$de;
105
- (0, _helper.updateCommentedElementsAttrs)(unresolvedComment.detail.element_id_list, editor, (_unresolvedComment$de = unresolvedComment.detail) === null || _unresolvedComment$de === void 0 ? void 0 : _unresolvedComment$de.text_comment_id, !newComment.resolved);
106
- }
107
- }
108
- dispatch({
109
- type: 'INSERT_REPLY',
110
- payload: {
111
- element_id: elementId,
112
- comment_id: commentId,
113
- reply: newReply
114
- }
115
- });
116
-
117
- // Modify comment status
118
- await api.updateComment(commentId, newComment);
119
- dispatch({
120
- type: 'UPDATE_COMMENT_STATE',
121
- payload: {
122
- element_id: elementId,
123
- comment_id: commentId,
124
- comment: newComment
125
- }
126
- });
127
-
128
- // If the status of the comment is set to resolved, the page jumps to the position of the comment
129
- if (!isClickedContextComment && newComment.resolved === true) {
130
- setTimeout(() => {
131
- updateScrollPosition && updateScrollPosition();
132
- }, 100);
133
- }
134
- // eslint-disable-next-line react-hooks/exhaustive-deps
135
- }, [comment, commentsDetail, dispatch, editor, isClickedContextComment, setIsClickedContextComment, setIsCommentPanelVisible, updateScrollPosition]);
136
- const insertReply = (0, _react.useCallback)(async (commentId, replies) => {
137
- const elementId = (0, _helper.getPrimaryElementId)(comment.detail);
138
- for (let i = 0; i < replies.length; i++) {
139
- const reply = replies[i];
140
- const res = await _context.default.insertReply(commentId, reply);
141
- const {
142
- reply: returnReply
143
- } = res.data;
144
- const newReply = {
145
- ...reply,
146
- id: returnReply.id,
147
- comment_id: commentId,
148
- reply: returnReply.reply,
149
- user_name: returnReply.user_name,
150
- avatar_url: returnReply.avatar_url
151
- };
152
- dispatch({
153
- type: 'INSERT_REPLY',
154
- payload: {
155
- element_id: elementId,
156
- comment_id: commentId,
157
- reply: newReply
158
- }
159
- });
160
- }
161
-
162
- // If the number of replies is greater than one, it means that the comment needs to be resubmitted and the status of the comment should be modified
163
- if (replies.length > 1) {
164
- const newComment = {
165
- resolved: false
166
- };
167
- await _context.default.updateComment(commentId, newComment);
168
- dispatch({
169
- type: 'UPDATE_COMMENT_STATE',
170
- payload: {
171
- element_id: elementId,
172
- comment_id: commentId,
173
- comment: newComment
174
- }
175
- });
176
- }
177
- setTimeout(() => {
178
- const options = {
179
- top: 10000,
180
- behavior: 'smooth'
181
- };
182
- listRef.current.scrollTo(options);
183
- }, 0);
184
- }, [comment.detail, dispatch]);
185
- const insertContent = (0, _react.useCallback)(content => {
186
- const user = _context.default.getUserInfo();
187
- const replies = [];
188
-
189
- // The comment has already been resolved, when adding a new reply, resubmit the comment
190
- if (comment.resolved) {
191
- const time = (0, _dayjs.default)().format('YYYY-MM-DD HH:mm:ss');
192
- const stateChangeReply = {
193
- type: 'comment',
194
- reply: false,
195
- updated_at: time,
196
- author: user.username
197
- };
198
- replies.push(stateChangeReply);
199
- }
200
-
201
- // User added reply
202
- const time = (0, _dayjs.default)().format('YYYY-MM-DD HH:mm:ss');
203
- const reply = {
204
- type: 'reply',
205
- reply: content,
206
- updated_at: time,
207
- author: user.username
208
- };
209
- replies.push(reply);
210
- insertReply(comment.id, replies);
211
- }, [comment.id, comment.resolved, insertReply]);
212
- (0, _react.useImperativeHandle)(ref ? ref : commentDetailRef, () => ({
213
- insertContent
214
- }));
215
- const deleteReply = (0, _react.useCallback)(async replyId => {
216
- const commentId = comment.id;
217
- const elementId = (0, _helper.getPrimaryElementId)(comment.detail);
218
- await _context.default.deleteReply(commentId, replyId);
219
- dispatch({
220
- type: 'DELETE_REPLY',
221
- payload: {
222
- element_id: elementId,
223
- comment_id: commentId,
224
- reply_id: replyId
225
- }
226
- });
227
- }, [comment.detail, comment.id, dispatch]);
228
- const updateReply = (0, _react.useCallback)(async (replyId, newReply) => {
229
- const commentId = comment.id;
230
- const elementId = (0, _helper.getPrimaryElementId)(comment.detail);
231
- await _context.default.updateReply(commentId, replyId, newReply);
232
- dispatch({
233
- type: 'UPDATE_REPLY',
234
- payload: {
235
- element_id: elementId,
236
- comment_id: commentId,
237
- reply_id: replyId,
238
- reply: newReply
239
- }
240
- });
241
- }, [comment.detail, comment.id, dispatch]);
242
- const onItemClick = (0, _react.useCallback)(event => {
243
- if (event.target.className === _constants.COMMENT_URL_CLASSNAME) return;
244
- onCommentClick && onCommentClick(comment);
245
- }, [comment, onCommentClick]);
246
- const onDeleteComment = (0, _react.useCallback)(async () => {
247
- await api.deleteComment(comment.id);
248
- let {
249
- element_id: elementId,
250
- element_id_list
251
- } = comment.detail;
252
- if (element_id_list) {
253
- var _comment$detail;
254
- elementId = element_id_list[0];
255
- (0, _helper.updateCommentedElementsAttrs)(element_id_list, editor, (_comment$detail = comment.detail) === null || _comment$detail === void 0 ? void 0 : _comment$detail.text_comment_id, false, true);
256
- }
257
- dispatch({
258
- type: 'DELETE_COMMENT',
259
- payload: {
260
- element_id: elementId,
261
- comment_id: comment.id
262
- }
263
- });
264
- closeComment && closeComment();
265
- setIsShowDeletePopover(false);
266
- setCurrentCommentGroup && setCurrentCommentGroup(null);
267
- if (isClickedContextComment) {
268
- if (Object.values(commentsDetail).length === 1) {
269
- setIsClickedContextComment(false);
270
- setIsCommentPanelVisible(false);
271
- } else {
272
- const newCommentIdArray = Object.values(commentsDetail).filter(item => item.id !== comment.id).map(item => item.detail.text_comment_id);
273
- onSelectElement(newCommentIdArray, true);
274
- }
275
- }
276
- // eslint-disable-next-line react-hooks/exhaustive-deps
277
- }, [comment.id, commentsDetail, isClickedContextComment, onSelectElement, setCurrentCommentGroup, setIsClickedContextComment, setIsCommentPanelVisible]);
278
- (0, _react.useEffect)(() => {
279
- if (!isActive) {
280
- setIsShowDeletePopover(false);
281
- }
282
- }, [isActive]);
283
- const className = (0, _classnames.default)('comment-ui-container', {
284
- 'active': isActive,
285
- 'sdoc-resolved': comment === null || comment === void 0 ? void 0 : comment.resolved,
286
- 'd-flex flex-column': element,
287
- 'global-comment-item-detail-wrapper': isGlobalComment,
288
- 'comment-item-detail-wrapper': !isGlobalComment
289
- });
290
- const handleScrollToArticle = (0, _react.useCallback)(e => {
291
- e.stopPropagation();
292
- const dom = _slateReact.ReactEditor.toDOMNode(editor, element);
293
- const headerHeight = 56 + 37;
294
- scrollRef.current.scrollTo({
295
- top: dom.offsetTop - headerHeight,
296
- behavior: 'smooth'
297
- });
298
- }, [editor, element, scrollRef]);
299
- const newCommentId = isClickedContextComment && comment !== null && comment !== void 0 && comment.detail.element_id_list ? comment === null || comment === void 0 ? void 0 : comment.detail.element_id_list[0] : comment === null || comment === void 0 ? void 0 : comment.id;
300
- return /*#__PURE__*/_react.default.createElement("div", {
301
- id: `comment-item-wrapper_${newCommentId}`,
302
- className: className,
303
- onClick: onItemClick
304
- }, element && /*#__PURE__*/_react.default.createElement("div", {
305
- className: "comment-item-selected-text-container",
306
- onClick: handleScrollToArticle
307
- }, /*#__PURE__*/_react.default.createElement("i", {
308
- className: "sdocfont sdoc-comment-quote mr-2"
309
- }), /*#__PURE__*/_react.default.createElement("div", {
310
- className: "comment-item-selected-text"
311
- }, _slate.Node.string(element))), !isEmptyComment && /*#__PURE__*/_react.default.createElement("div", {
312
- ref: listRef,
313
- className: "comment-item-list",
314
- style: style
315
- }, comment.detail.element_id_list && !isGlobalComment && /*#__PURE__*/_react.default.createElement("div", {
316
- className: "context-comment-item-selected-text-container"
317
- }, /*#__PURE__*/_react.default.createElement("i", {
318
- className: "sdocfont sdoc-comment-quote mr-2"
319
- }), /*#__PURE__*/_react.default.createElement("div", {
320
- className: "context-comment-items"
321
- }, comment.detail.element_id_list.map((elementId, index) => {
322
- return /*#__PURE__*/_react.default.createElement("div", {
323
- className: "context-comment-item-selected-text",
324
- key: index
325
- }, (0, _helper.getCommentedTextsByElementId)(elementId, comment.detail.text_comment_id));
326
- }))), /*#__PURE__*/_react.default.createElement(_commentItemContent.default, {
327
- key: newCommentId,
328
- container: container,
329
- isActive: isActive,
330
- comment: comment,
331
- updateComment: updateComment,
332
- updateCommentState: updateCommentState,
333
- onShowDeletePopover: () => setIsShowDeletePopover(true),
334
- targetId: commentOpToolsId,
335
- isClickedContextComment: isClickedContextComment
336
- }), isClickedContextComment && comment.replies && comment.replies.length > 0 && comment.replies.filter(item => item.type === 'reply').map(reply => {
337
- const props = {
338
- key: reply.id,
339
- isActive,
340
- container,
341
- reply,
342
- deleteReply,
343
- updateReply
344
- };
345
- return /*#__PURE__*/_react.default.createElement(_commentItemReply.default, props);
346
- }), !isClickedContextComment && comment.replies && comment.replies.length > 0 && comment.replies.filter(item => item.type === 'reply').map(reply => {
347
- const props = {
348
- key: reply.id,
349
- isActive,
350
- container,
351
- reply,
352
- deleteReply,
353
- updateReply
354
- };
355
- return /*#__PURE__*/_react.default.createElement(_commentItemReply.default, props);
356
- })), isShowDeletePopover && isActive && /*#__PURE__*/_react.default.createElement(_commentDeletePopover.default, {
357
- type: "comment",
358
- targetId: commentOpToolsId,
359
- deleteConfirm: onDeleteComment,
360
- setIsShowDeletePopover: setIsShowDeletePopover,
361
- parentDom: listRef.current
362
- }));
363
- });
364
- var _default = exports.default = CommentItemWrapper;