@seafile/comment-editor 0.0.1-alpha.0 → 0.0.1-alpha.10

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 (93) hide show
  1. package/README.md +2 -4
  2. package/dist/basic-sdk/assets/css/layout.css +1 -45
  3. package/dist/basic-sdk/assets/css/sdoc-comment-editor-plugin.css +4 -4
  4. package/dist/basic-sdk/comment/utils.js +39 -0
  5. package/dist/basic-sdk/constants/index.js +1 -2
  6. package/dist/basic-sdk/context.js +9 -8
  7. package/dist/basic-sdk/editor/comment-editor.css +138 -0
  8. package/dist/basic-sdk/editor/comment-editor.js +289 -0
  9. package/dist/basic-sdk/extension/plugins/image/helpers.js +1 -1
  10. package/dist/basic-sdk/extension/plugins/image/use-copy-image.js +1 -1
  11. package/dist/basic-sdk/extension/plugins/image/use-upload-image.js +2 -1
  12. package/dist/basic-sdk/extension/plugins/link/menu/index.js +1 -1
  13. package/dist/basic-sdk/extension/plugins/mention/render-elem/participant-popover.js +3 -6
  14. package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +1 -2
  15. package/dist/basic-sdk/extension/render/render-comment-editor-element.js +1 -1
  16. package/dist/basic-sdk/extension/toolbar/comment-editor-toolbar/index.js +3 -3
  17. package/dist/basic-sdk/extension/toolbar/comment-editor-toolbar/post-comment/index.js +2 -2
  18. package/dist/basic-sdk/hooks/use-comment.js +53 -0
  19. package/dist/basic-sdk/index.js +12 -39
  20. package/dist/pages/seafile-comment-editor.js +30 -54
  21. package/package.json +2 -1
  22. package/dist/assets/css/plugin-editor.css +0 -7
  23. package/dist/assets/css/simple-viewer.css +0 -6
  24. package/dist/basic-sdk/comment/components/comment-all-participants/index.css +0 -83
  25. package/dist/basic-sdk/comment/components/comment-all-participants/index.js +0 -67
  26. package/dist/basic-sdk/comment/components/comment-all-participants/participant-avatar.js +0 -43
  27. package/dist/basic-sdk/comment/components/comment-context-menu/index.css +0 -16
  28. package/dist/basic-sdk/comment/components/comment-context-menu/index.js +0 -43
  29. package/dist/basic-sdk/comment/components/comment-context-menu/menu-item.js +0 -57
  30. package/dist/basic-sdk/comment/components/comment-delete-popover.js +0 -80
  31. package/dist/basic-sdk/comment/components/comment-editor.js +0 -165
  32. package/dist/basic-sdk/comment/components/comment-item-collapse-wrapper.js +0 -160
  33. package/dist/basic-sdk/comment/components/comment-item-content.js +0 -156
  34. package/dist/basic-sdk/comment/components/comment-item-reply.js +0 -124
  35. package/dist/basic-sdk/comment/components/comment-item-resolved-reply.js +0 -38
  36. package/dist/basic-sdk/comment/components/comment-item-wrapper.js +0 -368
  37. package/dist/basic-sdk/comment/components/comment-list.css +0 -422
  38. package/dist/basic-sdk/comment/components/comment-list.js +0 -216
  39. package/dist/basic-sdk/comment/components/comment-operation/index.css +0 -26
  40. package/dist/basic-sdk/comment/components/comment-operation/index.js +0 -31
  41. package/dist/basic-sdk/comment/components/comment-participants-editor/index.css +0 -132
  42. package/dist/basic-sdk/comment/components/comment-participants-editor/index.js +0 -69
  43. package/dist/basic-sdk/comment/components/comment-participants-editor/searched-collaborators.js +0 -62
  44. package/dist/basic-sdk/comment/components/comment-participants-editor/selected-participants.js +0 -48
  45. package/dist/basic-sdk/comment/components/editor-comment.js +0 -183
  46. package/dist/basic-sdk/comment/components/elements-comment-count/element-comment-count.js +0 -64
  47. package/dist/basic-sdk/comment/components/elements-comment-count/index.css +0 -29
  48. package/dist/basic-sdk/comment/components/elements-comment-count/index.js +0 -49
  49. package/dist/basic-sdk/comment/components/global-comment/global-comment-body-header.js +0 -87
  50. package/dist/basic-sdk/comment/components/global-comment/global-comment-editor.js +0 -36
  51. package/dist/basic-sdk/comment/components/global-comment/global-comment-header.js +0 -82
  52. package/dist/basic-sdk/comment/components/global-comment/index.css +0 -326
  53. package/dist/basic-sdk/comment/components/global-comment/index.js +0 -212
  54. package/dist/basic-sdk/comment/components/index.js +0 -21
  55. package/dist/basic-sdk/comment/components/style.css +0 -40
  56. package/dist/basic-sdk/comment/helper.js +0 -184
  57. package/dist/basic-sdk/comment/hooks/comment-hooks/use-comment-context.js +0 -20
  58. package/dist/basic-sdk/comment/hooks/comment-hooks/use-comment-list.js +0 -45
  59. package/dist/basic-sdk/comment/hooks/comment-hooks/use-comment-mount.js +0 -58
  60. package/dist/basic-sdk/comment/hooks/notification-hooks/index.js +0 -25
  61. package/dist/basic-sdk/comment/hooks/notification-hooks/use-notification-context.js +0 -20
  62. package/dist/basic-sdk/comment/hooks/notification-hooks/use-notification-mount.js +0 -74
  63. package/dist/basic-sdk/comment/hooks/use-participants.js +0 -26
  64. package/dist/basic-sdk/comment/index.js +0 -67
  65. package/dist/basic-sdk/comment/provider/comment-context-provider.js +0 -37
  66. package/dist/basic-sdk/comment/provider/index.js +0 -23
  67. package/dist/basic-sdk/comment/provider/notification-context-provider.js +0 -31
  68. package/dist/basic-sdk/comment/provider/participants-content-provider.js +0 -96
  69. package/dist/basic-sdk/comment/reducer/comment-reducer.js +0 -353
  70. package/dist/basic-sdk/comment/reducer/notification-reducer.js +0 -89
  71. package/dist/basic-sdk/comment/utils/get-event-transfer.js +0 -77
  72. package/dist/basic-sdk/comment/utils/index.js +0 -281
  73. package/dist/basic-sdk/comment/utils/notification-utils.js +0 -62
  74. package/dist/basic-sdk/editor/comment-article.js +0 -104
  75. package/dist/basic-sdk/editor/sdoc-comment-editor.js +0 -128
  76. package/dist/basic-sdk/editor/sdoc-editor.js +0 -50
  77. package/dist/basic-sdk/hooks/use-collaborators.js +0 -62
  78. package/dist/basic-sdk/hooks/use-plugins.js +0 -9
  79. package/dist/basic-sdk/layout/article-container.js +0 -89
  80. package/dist/basic-sdk/layout/editor-container.js +0 -32
  81. package/dist/basic-sdk/layout/index.js +0 -20
  82. package/dist/basic-sdk/right-panel/index.css +0 -15
  83. package/dist/basic-sdk/right-panel/index.js +0 -86
  84. package/dist/basic-sdk/right-panel/resize-width/index.css +0 -38
  85. package/dist/basic-sdk/right-panel/resize-width/index.js +0 -132
  86. package/dist/basic-sdk/socket/helpers.js +0 -299
  87. package/dist/basic-sdk/socket/index.js +0 -20
  88. package/dist/basic-sdk/socket/socket-client.js +0 -211
  89. package/dist/basic-sdk/socket/socket-manager.js +0 -386
  90. package/dist/basic-sdk/socket/with-socket-io.js +0 -73
  91. package/dist/hooks/index.js +0 -12
  92. package/dist/hooks/use-document.js +0 -75
  93. /package/dist/basic-sdk/comment/{constants/index.js → constants.js} +0 -0
@@ -1,212 +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 _classnames = _interopRequireDefault(require("classnames"));
13
- var _dayjs = _interopRequireDefault(require("dayjs"));
14
- var _context = _interopRequireDefault(require("../../../context"));
15
- var _core = require("../../../extension/core");
16
- var _constants = require("../../constants");
17
- var _useCommentList = _interopRequireDefault(require("../../hooks/comment-hooks/use-comment-list"));
18
- var _commentItemCollapseWrapper = _interopRequireDefault(require("../comment-item-collapse-wrapper"));
19
- var _commentItemWrapper = _interopRequireDefault(require("../comment-item-wrapper"));
20
- var _globalCommentBodyHeader = _interopRequireDefault(require("./global-comment-body-header"));
21
- var _globalCommentEditor = _interopRequireDefault(require("./global-comment-editor"));
22
- var _globalCommentHeader = _interopRequireDefault(require("./global-comment-header"));
23
- require("./index.css");
24
- const GlobalComment = _ref => {
25
- let {
26
- editor,
27
- deleteUnseenNotifications,
28
- t
29
- } = _ref;
30
- const contentRef = (0, _react.useRef)(null);
31
- const commentDetailRef = (0, _react.useRef)(null);
32
- const [activeCommentGroup, setActiveCommentGroup] = (0, _react.useState)(null);
33
- const [showEditor, setShowEditor] = (0, _react.useState)(false);
34
- const [isScrollDisplayed, setIsScrollDisplayed] = (0, _react.useState)(false);
35
- const [globalCommentContent, setGlobalCommentContent] = (0, _react.useState)(null);
36
- const {
37
- commentList,
38
- commentType,
39
- setCommentType,
40
- dispatch
41
- } = (0, _useCommentList.default)();
42
- const detectScroll = (0, _react.useCallback)(() => {
43
- if (!contentRef.current) return;
44
- const contentContainer = contentRef.current;
45
- const isShowScroll = contentContainer.scrollHeight > contentContainer.clientHeight;
46
- setIsScrollDisplayed(isShowScroll);
47
- }, []);
48
- const onCommentsPanelBodyScroll = (0, _react.useCallback)(position => {
49
- var _contentRef$current, _contentRef$current2;
50
- (_contentRef$current = contentRef.current) === null || _contentRef$current === void 0 ? void 0 : _contentRef$current.scrollTo({
51
- top: position === 'top' ? 0 : (_contentRef$current2 = contentRef.current) === null || _contentRef$current2 === void 0 ? void 0 : _contentRef$current2.scrollHeight,
52
- behavior: 'smooth'
53
- });
54
- }, [contentRef]);
55
- (0, _react.useEffect)(() => {
56
- detectScroll();
57
- // When a comment is updated, update the comment details page
58
- if (activeCommentGroup) {
59
- const newActiveCommentGroup = commentList.find(item => item.id === activeCommentGroup.id);
60
- setActiveCommentGroup(newActiveCommentGroup);
61
- deleteUnseenNotifications && deleteUnseenNotifications(newActiveCommentGroup);
62
- }
63
- // eslint-disable-next-line react-hooks/exhaustive-deps
64
- }, [commentList, detectScroll]);
65
- const updateScrollPosition = (0, _react.useCallback)(() => {
66
- var _contentRef$current3;
67
- const resolvedDom = document.querySelector('.sdoc-resolved');
68
- (_contentRef$current3 = contentRef.current) === null || _contentRef$current3 === void 0 ? void 0 : _contentRef$current3.scrollTo({
69
- top: resolvedDom.offsetTop,
70
- behavior: 'smooth'
71
- });
72
- }, []);
73
- const insertComment = (0, _react.useCallback)(async (elementId, comment) => {
74
- const res = await _context.default.insertComment(comment);
75
- const {
76
- comment: returnComment
77
- } = res.data;
78
- const newComment = {
79
- ...comment,
80
- id: returnComment.id,
81
- user_name: returnComment.user_name,
82
- avatar_url: returnComment.avatar_url,
83
- replies: []
84
- };
85
- dispatch({
86
- type: 'INSERT_COMMENT',
87
- payload: {
88
- element_id: elementId,
89
- comment: newComment
90
- }
91
- });
92
- }, [dispatch]);
93
- const insertDocComment = (0, _react.useCallback)(commentDetail => {
94
- var _commentDetailRef$cur;
95
- // Reply to a comment
96
- if (activeCommentGroup && (_commentDetailRef$cur = commentDetailRef.current) !== null && _commentDetailRef$cur !== void 0 && _commentDetailRef$cur.insertContent) {
97
- commentDetailRef.current.insertContent(commentDetail);
98
- } else {
99
- // Insert global comment
100
- const user = _context.default.getUserInfo();
101
- const elementId = _constants.DOC_COMMENT_ELEMENT_ID;
102
- const time = (0, _dayjs.default)().format('YYYY-MM-DD HH:mm:ss');
103
- const comment = {
104
- comment: commentDetail,
105
- detail: {
106
- element_id: elementId,
107
- comment: commentDetail
108
- },
109
- author: user.username,
110
- updated_at: time
111
- };
112
- insertComment(elementId, comment);
113
- detectScroll();
114
- }
115
- // After the comment is inserted, scroll to the bottom
116
- setTimeout(() => {
117
- onCommentsPanelBodyScroll('bottom');
118
- }, 500);
119
- }, [activeCommentGroup, detectScroll, insertComment, onCommentsPanelBodyScroll]);
120
- const hiddenCommentEditor = (0, _react.useCallback)(() => {
121
- setShowEditor(false);
122
- }, []);
123
- const isClickCommentPanelBody = (0, _react.useCallback)(event => {
124
- if (contentRef.current && contentRef.current.contains(event.target)) return true;
125
- return false;
126
- }, []);
127
- const getNodeByElementId = (0, _react.useCallback)(elementId => {
128
- if (elementId !== _constants.DOC_COMMENT_ELEMENT_ID) {
129
- return (0, _core.getNodeById)(editor.children, elementId);
130
- }
131
- return null;
132
- }, [editor.children]);
133
- const setCurrentCommentGroup = (0, _react.useCallback)(commentGroupId => {
134
- const activeCommentGroup = commentList.find(item => item.id === commentGroupId);
135
- if (activeCommentGroup) {
136
- setActiveCommentGroup(activeCommentGroup);
137
- deleteUnseenNotifications && deleteUnseenNotifications(activeCommentGroup);
138
- } else {
139
- setActiveCommentGroup(null);
140
- }
141
- }, [commentList, deleteUnseenNotifications]);
142
- const commentEditorPlaceholder = !activeCommentGroup ? t('Enter_comment_shift_enter_for_new_line_Enter_to_send') : t('Enter_reply_shift_Enter_for_new_line_Enter_to_send');
143
- return /*#__PURE__*/_react.default.createElement("div", {
144
- className: "sdoc-comment-drawer"
145
- }, /*#__PURE__*/_react.default.createElement("div", {
146
- className: "comments-panel-wrapper"
147
- }, /*#__PURE__*/_react.default.createElement(_globalCommentHeader.default, {
148
- toggle: () => {},
149
- activeCommentGroup: activeCommentGroup,
150
- setCurrentCommentGroup: setCurrentCommentGroup
151
- }), /*#__PURE__*/_react.default.createElement("div", {
152
- className: "comments-panel-body"
153
- }, !activeCommentGroup && /*#__PURE__*/_react.default.createElement(_globalCommentBodyHeader.default, {
154
- commentList: commentList,
155
- commentType: commentType,
156
- setCommentType: setCommentType
157
- }), /*#__PURE__*/_react.default.createElement("div", {
158
- ref: contentRef,
159
- className: "comments-panel-body__content"
160
- }, /*#__PURE__*/_react.default.createElement("div", {
161
- id: "global-comment-list-container",
162
- className: "sdoc-comment-list-container"
163
- }, !activeCommentGroup && Array.isArray(commentList) && commentList.map(comment => {
164
- var _comment$replies, _comment$replies2;
165
- const replyCount = (_comment$replies = comment.replies) === null || _comment$replies === void 0 ? void 0 : _comment$replies.length;
166
- const latestReply = ((_comment$replies2 = comment.replies) === null || _comment$replies2 === void 0 ? void 0 : _comment$replies2.length) > 0 ? comment.replies[comment.replies.length - 1] : null;
167
- const elementId = comment.detail.element_id;
168
- const element = getNodeByElementId(elementId);
169
- return /*#__PURE__*/_react.default.createElement(_commentItemCollapseWrapper.default, {
170
- key: comment.id,
171
- editor: editor,
172
- element: element,
173
- topLevelComment: comment,
174
- replyCount: replyCount,
175
- latestReply: latestReply,
176
- setCurrentCommentGroup: setCurrentCommentGroup
177
- });
178
- }), activeCommentGroup && /*#__PURE__*/_react.default.createElement(_commentItemWrapper.default, {
179
- key: activeCommentGroup.id,
180
- editor: editor,
181
- element: getNodeByElementId(activeCommentGroup.detail.element_id),
182
- container: "global-comment-list-container",
183
- commentDetailRef: commentDetailRef,
184
- comment: activeCommentGroup,
185
- isGlobalComment: true,
186
- isActive: true,
187
- updateScrollPosition: updateScrollPosition,
188
- isClickCommentPanelBody: isClickCommentPanelBody,
189
- setCurrentCommentGroup: setCurrentCommentGroup
190
- }))), /*#__PURE__*/_react.default.createElement("div", {
191
- className: (0, _classnames.default)('global-comment-input-wrapper', {
192
- 'active': globalCommentContent === null || globalCommentContent === void 0 ? void 0 : globalCommentContent.trim()
193
- })
194
- }, !showEditor && /*#__PURE__*/_react.default.createElement(_reactstrap.Input, {
195
- value: globalCommentContent !== null && globalCommentContent !== void 0 && globalCommentContent.trim() ? '.....' : '',
196
- readOnly: true,
197
- placeholder: commentEditorPlaceholder,
198
- onFocus: () => {
199
- setShowEditor(true);
200
- }
201
- }), showEditor && /*#__PURE__*/_react.default.createElement(_globalCommentEditor.default, {
202
- globalCommentContent: globalCommentContent,
203
- isScrollDisplayed: isScrollDisplayed,
204
- type: activeCommentGroup ? 'replay' : 'comment',
205
- hiddenCommentEditor: hiddenCommentEditor,
206
- insertDocComment: insertDocComment,
207
- onContentChange: content => {
208
- setGlobalCommentContent(content);
209
- }
210
- })))));
211
- };
212
- var _default = exports.default = (0, _reactI18next.withTranslation)('sdoc-editor')(GlobalComment);
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- Object.defineProperty(exports, "EditorComment", {
8
- enumerable: true,
9
- get: function () {
10
- return _editorComment.default;
11
- }
12
- });
13
- Object.defineProperty(exports, "GlobalComment", {
14
- enumerable: true,
15
- get: function () {
16
- return _globalComment.default;
17
- }
18
- });
19
- var _editorComment = _interopRequireDefault(require("./editor-comment"));
20
- var _globalComment = _interopRequireDefault(require("./global-comment"));
21
- require("./style.css");
@@ -1,40 +0,0 @@
1
- /* editor-comment css */
2
- .sdoc-comment-container {
3
- position: absolute;
4
- left: 0;
5
- top: 0;
6
- width: 100%;
7
- }
8
-
9
- .sdoc-comment-container .comment-container-main {
10
- position: absolute;
11
- width: 100%;
12
- top: 0;
13
- }
14
-
15
- .sdoc-comment-container .comment-container-right {
16
- position: absolute;
17
- left: 100%;
18
- }
19
-
20
- .sdoc-comment-container .comment-container-right .comment-add-wrapper {
21
- position: absolute;
22
- left: -22px;
23
- width: 20px;
24
- }
25
-
26
- .sdoc-comment-container .comment-container-right .comment-add-wrapper .sdocfont {
27
- color: #999;
28
- background-color: #FFF;
29
- }
30
-
31
- .sdoc-comment-container .comment-container-right .comment-add-wrapper .sdocfont:hover {
32
- color: #333;
33
- cursor: pointer;
34
- }
35
-
36
- .sdoc-comment-container .comment-container-right .comment-list-wrapper {
37
- position: absolute;
38
- left: 14px;
39
- width: 280px;
40
- }
@@ -1,184 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.useCursorPosition = exports.updateElementsAttrs = exports.updateCommentedElementsAttrs = exports.getSelectionRange = exports.getSelectedElemIds = exports.getPrimaryElementId = exports.getElementCommentCountTop = exports.getDomById = exports.getCursorPosition = exports.getCommentedTextsByElementId = exports.getAvatarUrl = void 0;
8
- var _slate = require("@seafile/slate");
9
- var _slateReact = require("@seafile/slate-react");
10
- var _context = _interopRequireDefault(require("../context"));
11
- var _core = require("../extension/core");
12
- var _useScrollContext = require("../hooks/use-scroll-context");
13
- const getSelectionRange = () => {
14
- if (window.getSelection) {
15
- const sel = window.getSelection();
16
- if (sel.getRangeAt && sel.rangeCount) {
17
- return sel.getRangeAt(0);
18
- }
19
- } else if (document.selection && document.selection.createRange) {
20
- return document.selection.createRange();
21
- }
22
- return null;
23
- };
24
- exports.getSelectionRange = getSelectionRange;
25
- const getCursorPosition = () => {
26
- let x = 0;
27
- let y = 0;
28
- let range = getSelectionRange();
29
- if (range) {
30
- const rect = range.getBoundingClientRect();
31
- const headerHeight = 93;
32
- x = rect.x || 0;
33
- y = rect.y - headerHeight + (rect.height - 24) / 2 || 0;
34
- }
35
- return {
36
- x: x,
37
- y: y
38
- };
39
- };
40
- exports.getCursorPosition = getCursorPosition;
41
- const useCursorPosition = () => {
42
- const scrollRef = (0, _useScrollContext.useScrollContext)();
43
- const {
44
- scrollTop = 0
45
- } = scrollRef.current || {};
46
- let position = getCursorPosition();
47
- if (position.y !== 0) {
48
- position.y = position.y + scrollTop;
49
- }
50
- return position;
51
- };
52
- exports.useCursorPosition = useCursorPosition;
53
- const getAvatarUrl = () => {
54
- const server = _context.default.getSetting('serviceUrl');
55
- const avatarUrl = `${server}/media/avatars/default.png`;
56
- return avatarUrl;
57
- };
58
- exports.getAvatarUrl = getAvatarUrl;
59
- const getElementCommentCountTop = (editor, element, scrollTop) => {
60
- let minY;
61
- const children = element.children || [];
62
- children.forEach(child => {
63
- const childDom = _slateReact.ReactEditor.toDOMNode(editor, child);
64
-
65
- // use child real dom
66
- const childRealDom = childDom.childNodes[0];
67
- const {
68
- y
69
- } = childRealDom ? childRealDom.getBoundingClientRect() : {
70
- y: 0
71
- };
72
- if (!minY) minY = y;
73
- minY = Math.min(minY, y);
74
- });
75
- return minY - 93 + scrollTop; // 100: header height(56) + toolbar height(37)
76
- };
77
- exports.getElementCommentCountTop = getElementCommentCountTop;
78
- const getSelectedElemIds = editor => {
79
- const {
80
- selection
81
- } = editor;
82
- if (!selection) return;
83
- const selectedElemId = [];
84
- const nodeEntries = Array.from(_slate.Editor.nodes(editor, {
85
- match: n => _slate.Element.isElement(n) && _slate.Editor.isBlock(editor, n),
86
- mode: 'lowest'
87
- }));
88
- for (const [node] of nodeEntries) {
89
- selectedElemId.push(node.id);
90
- }
91
- return selectedElemId;
92
- };
93
- exports.getSelectedElemIds = getSelectedElemIds;
94
- const getCommentedTextsByElementId = (elementId, textCommentId) => {
95
- const container = document.querySelector(`[data-id='${elementId}']`);
96
- if (!container) return [];
97
- let targetDoms = container.querySelectorAll(`.sdoc_comment_${textCommentId}`);
98
- if (targetDoms.length === 0) {
99
- targetDoms = container.querySelectorAll(`.removed_sdoc_comment_${textCommentId}`);
100
- }
101
- const texts = [];
102
- targetDoms.forEach(dom => {
103
- var _dom$textContent;
104
- texts.push(((_dom$textContent = dom.textContent) === null || _dom$textContent === void 0 ? void 0 : _dom$textContent.trim()) || '');
105
- });
106
- return texts;
107
- };
108
- exports.getCommentedTextsByElementId = getCommentedTextsByElementId;
109
- const getDomById = elementId => {
110
- const container = document.querySelector(`[data-id='${elementId}']`);
111
- if (!container) return [];
112
- const lastCommentedDomWithMarks = container.querySelector('.comment');
113
- return lastCommentedDomWithMarks;
114
- };
115
- exports.getDomById = getDomById;
116
- const updateElementsAttrs = (activeElementIds, editor, text_comment_id) => {
117
- if (Array.isArray(activeElementIds)) {
118
- for (const elemId of activeElementIds) {
119
- const dom = document.querySelectorAll(`[data-id="${elemId}"]`)[0];
120
- if (!dom) continue;
121
- const domNode = _slateReact.ReactEditor.toSlateNode(editor, dom);
122
- const nodePath = (0, _core.findPath)(editor, domNode);
123
- domNode.children.forEach((textNode, index) => {
124
- if (textNode.comment) {
125
- const textNodePath = [...nodePath, index];
126
- _slate.Transforms.setNodes(editor, {
127
- [`sdoc_comment_${text_comment_id}`]: true
128
- }, {
129
- at: textNodePath,
130
- match: _slate.Text.isText,
131
- split: true
132
- });
133
- }
134
- });
135
- }
136
- }
137
- };
138
- exports.updateElementsAttrs = updateElementsAttrs;
139
- const updateCommentedElementsAttrs = function (activeElementIds, editor, text_comment_id) {
140
- let resolved = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
141
- let isDeleteComment = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
142
- if (Array.isArray(activeElementIds)) {
143
- _slate.Editor.withoutNormalizing(editor, () => {
144
- for (const elemId of activeElementIds) {
145
- // const { element } = elem;
146
- const dom = document.querySelector(`[data-id="${elemId}"]`);
147
- if (!dom) continue;
148
- const domNode = _slateReact.ReactEditor.toSlateNode(editor, dom);
149
- const domNodePath = (0, _core.findPath)(editor, domNode);
150
- domNode.children.forEach((child, index) => {
151
- const childPath = [...domNodePath, index];
152
- if (_slate.Text.isText(child) && `sdoc_comment_${text_comment_id}` in child) {
153
- _slate.Transforms.unsetNodes(editor, [`sdoc_comment_${text_comment_id}`], {
154
- at: childPath,
155
- match: _slate.Text.isText
156
- });
157
- !isDeleteComment && _slate.Transforms.setNodes(editor, {
158
- [`sdoc_comment_${text_comment_id}`]: resolved
159
- }, {
160
- at: childPath,
161
- match: _slate.Text.isText
162
- });
163
- }
164
- });
165
- }
166
- });
167
- }
168
- };
169
- exports.updateCommentedElementsAttrs = updateCommentedElementsAttrs;
170
- const getPrimaryElementId = detail => {
171
- if (!detail) return null;
172
- let elementId;
173
- const {
174
- element_id,
175
- element_id_list = []
176
- } = detail;
177
- if (element_id_list.length > 0) {
178
- elementId = element_id_list[0];
179
- } else {
180
- elementId = element_id;
181
- }
182
- return elementId;
183
- };
184
- exports.getPrimaryElementId = getPrimaryElementId;
@@ -1,20 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.useCommentContext = exports.CommentContext = void 0;
8
- var _react = _interopRequireWildcard(require("react"));
9
- const CommentContext = exports.CommentContext = /*#__PURE__*/_react.default.createContext();
10
- const useCommentContext = () => {
11
- const {
12
- commentsInfo,
13
- dispatch
14
- } = (0, _react.useContext)(CommentContext);
15
- return {
16
- commentsInfo,
17
- dispatch
18
- };
19
- };
20
- exports.useCommentContext = useCommentContext;
@@ -1,45 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _react = require("react");
8
- var _constants = require("../../constants");
9
- var _useCommentContext = require("./use-comment-context");
10
- const useCommentList = () => {
11
- const {
12
- commentsInfo,
13
- dispatch
14
- } = (0, _useCommentContext.useCommentContext)();
15
- const {
16
- comment_list
17
- } = commentsInfo || {};
18
- const [commentType, setCommentType] = (0, _react.useState)(_constants.COMMENT_TYPES.ALL);
19
- const [commentList, setCommentList] = (0, _react.useState)([]);
20
- (0, _react.useEffect)(() => {
21
- if (commentType === _constants.COMMENT_TYPES.ALL) {
22
- const commentList = comment_list.map(item => {
23
- item.replies = item.replies.filter(reply => !['True', 'False'].includes(reply.reply));
24
- return item;
25
- });
26
- setCommentList(commentList);
27
- } else if (commentType === _constants.COMMENT_TYPES.RESOLVED) {
28
- const commentList = comment_list.filter(item => item.resolved);
29
- setCommentList(commentList);
30
- } else if (commentType === _constants.COMMENT_TYPES.UNRESOLVED) {
31
- const commentList = comment_list.filter(item => !item.resolved);
32
- setCommentList(commentList);
33
- } else if (commentType === _constants.COMMENT_TYPES.DOC) {
34
- const commentList = comment_list.filter(comment => comment.detail.element_id === _constants.DOC_COMMENT_ELEMENT_ID);
35
- setCommentList(commentList);
36
- }
37
- }, [commentType, comment_list]);
38
- return {
39
- dispatch,
40
- commentList,
41
- commentType,
42
- setCommentType
43
- };
44
- };
45
- var _default = exports.default = useCommentList;
@@ -1,58 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.useCommentsMount = void 0;
8
- var _react = require("react");
9
- var _constants = require("../../../constants");
10
- var _context = _interopRequireDefault(require("../../../context"));
11
- var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
12
- const useCommentsMount = dispatch => {
13
- const request = (0, _react.useCallback)(async () => {
14
- dispatch({
15
- type: 'FETCHING_STATE'
16
- });
17
- try {
18
- const res = await _context.default.listComments();
19
- const comments = res.data.comments;
20
- dispatch({
21
- type: 'RECEIVE_STATE',
22
- payload: comments
23
- });
24
- } catch (error) {
25
- console.log(error);
26
- dispatch({
27
- type: 'FETCHING_ERROR'
28
- });
29
- }
30
- // eslint-disable-next-line react-hooks/exhaustive-deps
31
- }, []);
32
- const reRequest = (0, _react.useCallback)(async () => {
33
- dispatch({
34
- type: 'REFETCHING_STATE'
35
- });
36
- try {
37
- const res = await _context.default.listComments();
38
- const comments = res.data.comments;
39
- dispatch({
40
- type: 'RECEIVE_STATE',
41
- payload: comments
42
- });
43
- } catch (error) {
44
- console.log(error);
45
- // dispatch({type: 'FETCHING_ERROR'});
46
- }
47
- // eslint-disable-next-line react-hooks/exhaustive-deps
48
- }, []);
49
- (0, _react.useEffect)(() => {
50
- request();
51
- const eventBus = _eventBus.default.getInstance();
52
- const unsubscribeNewNotification = eventBus.subscribe(_constants.INTERNAL_EVENT.NEW_NOTIFICATION, reRequest);
53
- return () => {
54
- unsubscribeNewNotification();
55
- };
56
- }, [request, reRequest]);
57
- };
58
- exports.useCommentsMount = useCommentsMount;
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "NotificationContext", {
7
- enumerable: true,
8
- get: function () {
9
- return _useNotificationContext.NotificationContext;
10
- }
11
- });
12
- Object.defineProperty(exports, "useNotificationContext", {
13
- enumerable: true,
14
- get: function () {
15
- return _useNotificationContext.useNotificationContext;
16
- }
17
- });
18
- Object.defineProperty(exports, "useNotificationsMount", {
19
- enumerable: true,
20
- get: function () {
21
- return _useNotificationMount.useNotificationsMount;
22
- }
23
- });
24
- var _useNotificationContext = require("./use-notification-context");
25
- var _useNotificationMount = require("./use-notification-mount");
@@ -1,20 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.useNotificationContext = exports.NotificationContext = void 0;
8
- var _react = _interopRequireWildcard(require("react"));
9
- const NotificationContext = exports.NotificationContext = /*#__PURE__*/_react.default.createContext();
10
- const useNotificationContext = () => {
11
- const {
12
- notificationsInfo,
13
- dispatch
14
- } = (0, _react.useContext)(NotificationContext);
15
- return {
16
- notificationsInfo,
17
- dispatch
18
- };
19
- };
20
- exports.useNotificationContext = useNotificationContext;