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

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 (67) 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/context.js +8 -14
  4. package/dist/basic-sdk/editor/comment-editor.css +138 -0
  5. package/dist/basic-sdk/{comment/components → editor}/comment-editor.js +41 -43
  6. package/dist/basic-sdk/extension/plugins/image/helpers.js +1 -1
  7. package/dist/basic-sdk/extension/plugins/image/use-copy-image.js +1 -1
  8. package/dist/basic-sdk/extension/plugins/image/use-upload-image.js +1 -1
  9. package/dist/basic-sdk/extension/toolbar/comment-editor-toolbar/index.js +7 -3
  10. package/dist/basic-sdk/hooks/use-comment.js +27 -181
  11. package/dist/basic-sdk/index.js +3 -10
  12. package/dist/index.js +0 -12
  13. package/dist/pages/seafile-comment-editor.js +37 -13
  14. package/package.json +1 -1
  15. package/dist/assets/css/plugin-editor.css +0 -7
  16. package/dist/assets/css/simple-viewer.css +0 -6
  17. package/dist/basic-sdk/comment/components/comment-all-participants/index.css +0 -83
  18. package/dist/basic-sdk/comment/components/comment-all-participants/index.js +0 -67
  19. package/dist/basic-sdk/comment/components/comment-all-participants/participant-avatar.js +0 -43
  20. package/dist/basic-sdk/comment/components/comment-delete-popover.js +0 -80
  21. package/dist/basic-sdk/comment/components/comment-item-collapse-wrapper.js +0 -160
  22. package/dist/basic-sdk/comment/components/comment-item-content.js +0 -154
  23. package/dist/basic-sdk/comment/components/comment-item-reply.js +0 -124
  24. package/dist/basic-sdk/comment/components/comment-item-resolved-reply.js +0 -38
  25. package/dist/basic-sdk/comment/components/comment-item-wrapper.js +0 -364
  26. package/dist/basic-sdk/comment/components/comment-list.css +0 -422
  27. package/dist/basic-sdk/comment/components/comment-list.js +0 -216
  28. package/dist/basic-sdk/comment/components/comment-participants-editor/index.css +0 -132
  29. package/dist/basic-sdk/comment/components/comment-participants-editor/index.js +0 -69
  30. package/dist/basic-sdk/comment/components/comment-participants-editor/searched-collaborators.js +0 -62
  31. package/dist/basic-sdk/comment/components/comment-participants-editor/selected-participants.js +0 -48
  32. package/dist/basic-sdk/comment/components/editor-comment.js +0 -183
  33. package/dist/basic-sdk/comment/components/elements-comment-count/element-comment-count.js +0 -64
  34. package/dist/basic-sdk/comment/components/elements-comment-count/index.css +0 -29
  35. package/dist/basic-sdk/comment/components/elements-comment-count/index.js +0 -49
  36. package/dist/basic-sdk/comment/components/global-comment/global-comment-body-header.js +0 -88
  37. package/dist/basic-sdk/comment/components/global-comment/global-comment-header.js +0 -90
  38. package/dist/basic-sdk/comment/components/global-comment/index.css +0 -328
  39. package/dist/basic-sdk/comment/components/global-comment/index.js +0 -217
  40. package/dist/basic-sdk/comment/components/index.js +0 -21
  41. package/dist/basic-sdk/comment/components/style.css +0 -40
  42. package/dist/basic-sdk/comment/helper.js +0 -184
  43. package/dist/basic-sdk/comment/hooks/comment-hooks/use-comment-context.js +0 -20
  44. package/dist/basic-sdk/comment/hooks/comment-hooks/use-comment-list.js +0 -45
  45. package/dist/basic-sdk/comment/hooks/comment-hooks/use-comment-mount.js +0 -57
  46. package/dist/basic-sdk/comment/hooks/notification-hooks/index.js +0 -25
  47. package/dist/basic-sdk/comment/hooks/notification-hooks/use-notification-context.js +0 -20
  48. package/dist/basic-sdk/comment/hooks/notification-hooks/use-notification-mount.js +0 -70
  49. package/dist/basic-sdk/comment/hooks/use-participants.js +0 -26
  50. package/dist/basic-sdk/comment/index.js +0 -21
  51. package/dist/basic-sdk/comment/reducer/comment-reducer.js +0 -353
  52. package/dist/basic-sdk/comment/reducer/notification-reducer.js +0 -89
  53. package/dist/basic-sdk/comment/utils/get-event-transfer.js +0 -77
  54. package/dist/basic-sdk/comment/utils/index.js +0 -281
  55. package/dist/basic-sdk/comment/utils/notification-utils.js +0 -62
  56. package/dist/basic-sdk/layout/comment-layout/index.css +0 -15
  57. package/dist/basic-sdk/layout/comment-layout/index.js +0 -87
  58. package/dist/basic-sdk/layout/comment-layout/resize-width/index.css +0 -38
  59. package/dist/basic-sdk/layout/comment-layout/resize-width/index.js +0 -132
  60. package/dist/basic-sdk/layout/editor-container.js +0 -32
  61. package/dist/basic-sdk/layout/index.js +0 -13
  62. package/dist/basic-sdk/socket/helpers.js +0 -299
  63. package/dist/basic-sdk/socket/index.js +0 -20
  64. package/dist/basic-sdk/socket/socket-client.js +0 -211
  65. package/dist/basic-sdk/socket/socket-manager.js +0 -386
  66. package/dist/basic-sdk/socket/with-socket-io.js +0 -73
  67. /package/dist/basic-sdk/comment/{constants/index.js → constants.js} +0 -0
@@ -1,207 +1,53 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.useComment = exports.CommentProvider = void 0;
9
8
  var _react = _interopRequireWildcard(require("react"));
10
- var _reactI18next = require("react-i18next");
11
- var _constants = require("../comment/constants");
12
- var _useCommentMount = require("../comment/hooks/comment-hooks/use-comment-mount");
13
- var _notificationHooks = require("../comment/hooks/notification-hooks");
14
- var _commentReducer = require("../comment/reducer/comment-reducer");
15
- var _notificationReducer = require("../comment/reducer/notification-reducer");
16
- var _utils = require("../comment/utils");
17
- var _toast = _interopRequireDefault(require("../components/toast"));
18
- var _constants2 = require("../constants");
19
9
  var _model = require("../model");
20
- var _commonUtils = require("../utils/common-utils");
21
- var _eventBus = _interopRequireDefault(require("../utils/event-bus"));
10
+ require("../assets/css/layout.css");
11
+ require("../assets/css/default.css");
12
+ require("../assets/css/sdoc-editor-article.css");
13
+ require("../assets/css/sdoc-editor-plugins.css");
14
+ require("../assets/css/sdoc-comment-editor-plugin.css");
15
+ require("../assets/css/dropdown-menu.css");
22
16
  const CommentContext = /*#__PURE__*/_react.default.createContext(null);
23
17
  const CommentProvider = _ref => {
24
18
  let {
25
19
  children,
26
- editor,
27
- pluginName = '',
20
+ type,
21
+ // comment or replay
22
+ userInfo,
28
23
  className = '',
24
+ pluginName = '',
25
+ // sdoc or wiki or txt ...
29
26
  pluginEventBus,
30
27
  pluginEvent,
31
- api,
32
- onCloseCommentPanel
28
+ collaborators = [],
29
+ participants = [],
30
+ addParticipants
33
31
  } = _ref;
34
- const {
35
- t
36
- } = (0, _reactI18next.useTranslation)('sdoc-editor');
37
- const [collaborators, setCollaborators] = (0, _react.useState)([]);
38
- const [participants, setParticipants] = (0, _react.useState)([]);
39
- const [commentType, setCommentType] = (0, _react.useState)(_constants.COMMENT_TYPES.ALL);
40
- const [commentList, setCommentList] = (0, _react.useState)([]);
41
- const [commentsInfo, dispatch] = (0, _react.useReducer)(_commentReducer.commentReducer, _commentReducer.initCommentsInfo);
42
- (0, _useCommentMount.useCommentsMount)(dispatch, api);
43
- const [notificationsInfo, notificationsDispatch] = (0, _react.useReducer)(_notificationReducer.notificationReducer, _notificationReducer.initNotificationsInfo);
44
- (0, _notificationHooks.useNotificationsMount)(dispatch, api, collaborators);
45
- (0, _react.useEffect)(() => {
46
- if (Object.keys(commentsInfo.element_comments_map).length) {
47
- editor.element_comments_map = commentsInfo.element_comments_map;
48
- }
49
- // eslint-disable-next-line react-hooks/exhaustive-deps
50
- }, [commentsInfo.element_comments_map]);
51
- (0, _react.useEffect)(() => {
52
- editor.notifications_map = {
53
- ...notificationsInfo.notifications_map
54
- };
55
- // eslint-disable-next-line react-hooks/exhaustive-deps
56
- }, [notificationsInfo]);
57
- (0, _react.useEffect)(() => {
58
- const {
59
- comment_list
60
- } = commentsInfo;
61
- if (commentType === _constants.COMMENT_TYPES.ALL) {
62
- const commentList = comment_list.map(item => {
63
- item.replies = item.replies.filter(reply => !['True', 'False'].includes(reply.reply));
64
- return item;
65
- });
66
- setCommentList(commentList);
67
- } else if (commentType === _constants.COMMENT_TYPES.RESOLVED) {
68
- const commentList = comment_list.filter(item => item.resolved);
69
- setCommentList(commentList);
70
- } else if (commentType === _constants.COMMENT_TYPES.UNRESOLVED) {
71
- const commentList = comment_list.filter(item => !item.resolved);
72
- setCommentList(commentList);
73
- } else if (commentType === _constants.COMMENT_TYPES.DOC) {
74
- const commentList = comment_list.filter(comment => comment.detail.element_id === _constants.DOC_COMMENT_ELEMENT_ID);
75
- setCommentList(commentList);
76
- }
77
- }, [commentType, commentsInfo]);
78
-
79
- // Participants
80
- const updateLocalParticipants = (0, _react.useCallback)(function () {
81
- let added = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
82
- if (!Array.isArray(added) || added.length === 0) return;
83
- let newParticipants = participants.slice(0);
84
- added.forEach(participant => {
85
- const newParticipant = new _model.User(participant);
86
- if (!newParticipants.find(item => item.username === newParticipant.username)) {
87
- newParticipants.push(newParticipant);
88
- }
89
- });
90
- setParticipants(newParticipants);
91
- }, [participants]);
92
- const deleteLocalParticipant = (0, _react.useCallback)(email => {
93
- if (!participants.find(participant => participant.username === email)) return;
94
- let newParticipants = participants.slice(0);
95
- newParticipants = newParticipants.filter(participant => participant.username !== email);
96
- setParticipants(newParticipants);
97
- }, [participants]);
98
- const addParticipants = (0, _react.useCallback)(otherEmail => {
99
- if (participants.find(participant => participant.username === otherEmail)) return;
100
- api.addParticipants([otherEmail]).then(res => {
101
- const {
102
- success
103
- } = res.data;
104
- updateLocalParticipants(success);
105
- }).catch(error => {
106
- const errorMessage = (0, _commonUtils.getErrorMsg)(error);
107
- _toast.default.danger(t(errorMessage));
108
- });
109
- // eslint-disable-next-line react-hooks/exhaustive-deps
110
- }, [updateLocalParticipants, participants]);
111
- const deleteParticipant = (0, _react.useCallback)(email => {
112
- if (!participants.find(participant => participant.username === email)) return;
113
- api.deleteParticipants(email).then(res => {
114
- let newParticipants = participants.slice(0);
115
- newParticipants = newParticipants.filter(participant => participant.username !== email);
116
- setParticipants(newParticipants);
117
- }).catch(error => {
118
- const errorMessage = (0, _commonUtils.getErrorMsg)(error);
119
- _toast.default.danger(t(errorMessage));
120
- });
121
- // eslint-disable-next-line react-hooks/exhaustive-deps
32
+ const getCollaborators = (0, _react.useCallback)(() => {
33
+ const newCollaborators = collaborators.map(user => new _model.User(user));
34
+ return newCollaborators;
35
+ }, [collaborators]);
36
+ const getParticipants = (0, _react.useCallback)(() => {
37
+ const newParticipants = participants.map(user => new _model.User(user));
38
+ return newParticipants;
122
39
  }, [participants]);
123
-
124
- // Notifications
125
- const deleteUnseenNotifications = (0, _react.useCallback)(comment => {
126
- let unseenCommentIds = [];
127
- let unseenNotificationKeys = [];
128
- const commentNotificationKey = (0, _utils.generatorNotificationKey)(comment.id);
129
- const commentNotification = notificationsInfo.notifications_map[commentNotificationKey];
130
- if (commentNotification) {
131
- unseenNotificationKeys.push(commentNotification.key);
132
- unseenCommentIds.push(commentNotification.id);
133
- }
134
- Array.isArray(comment.replies) && comment.replies.forEach(reply => {
135
- const replyNotificationKey = (0, _utils.generatorNotificationKey)(reply.comment_id, reply.id);
136
- const replyNotification = notificationsInfo.notifications_map[replyNotificationKey];
137
- if (replyNotification) {
138
- unseenNotificationKeys.push(replyNotification.key);
139
- unseenCommentIds.push(replyNotification.id);
140
- }
141
- });
142
- api.deleteUnseenNotifications(unseenCommentIds).then(res => {
143
- notificationsDispatch({
144
- type: _constants.DOC_NOTIFICATION_REDUCER_TYPE.DEL,
145
- payload: unseenNotificationKeys
146
- });
147
- }).catch(error => {
148
- //
149
- });
150
- }, [api, notificationsInfo.notifications_map]);
151
-
152
- // Mount
153
- (0, _react.useEffect)(() => {
154
- // get participants
155
- api.listParticipants().then(res => {
156
- const participants = res.data.participant_list;
157
- updateLocalParticipants(participants);
158
- }).catch(error => {
159
- console.log(error);
160
- });
161
-
162
- // get collaborators
163
- api.listRelatedUsers().then(res => {
164
- const collaborators = [];
165
- res.data.related_users.forEach(user => {
166
- const collaborator = new _model.User(user);
167
- collaborators.push(collaborator);
168
- });
169
- setCollaborators(collaborators);
170
- }).catch(error => {
171
- console.log(error);
172
- });
173
- // eslint-disable-next-line react-hooks/exhaustive-deps
174
- }, []);
175
-
176
- // Listening
177
- (0, _react.useEffect)(() => {
178
- const eventBus = _eventBus.default.getInstance();
179
- const unsubscribeParticipantAdded = eventBus.subscribe(_constants2.INTERNAL_EVENT.PARTICIPANT_ADDED, updateLocalParticipants);
180
- const unsubscribeParticipantRemoved = eventBus.subscribe(_constants2.INTERNAL_EVENT.PARTICIPANT_REMOVED, deleteLocalParticipant);
181
- return () => {
182
- unsubscribeParticipantAdded();
183
- unsubscribeParticipantRemoved();
184
- };
185
- }, [updateLocalParticipants, deleteLocalParticipant]);
186
40
  return /*#__PURE__*/_react.default.createElement(CommentContext.Provider, {
187
41
  value: {
188
- pluginName,
42
+ type,
43
+ userInfo,
189
44
  className,
190
- api,
45
+ pluginName,
191
46
  pluginEventBus,
192
47
  pluginEvent,
193
- commentsInfo,
194
- commentType,
195
- commentList,
196
- dispatch,
197
- setCommentType,
198
- onCloseCommentPanel,
199
- collaborators,
200
- notificationsInfo,
201
- deleteUnseenNotifications,
202
- addParticipants,
203
- deleteParticipant,
204
- participants
48
+ collaborators: getCollaborators(),
49
+ participants: getParticipants(),
50
+ addParticipants
205
51
  }
206
52
  }, children);
207
53
  };
@@ -4,10 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- Object.defineProperty(exports, "CommentLayout", {
7
+ Object.defineProperty(exports, "CommentEditor", {
8
8
  enumerable: true,
9
9
  get: function () {
10
- return _commentLayout.default;
10
+ return _commentEditor.default;
11
11
  }
12
12
  });
13
13
  Object.defineProperty(exports, "CommentProvider", {
@@ -148,26 +148,19 @@ Object.defineProperty(exports, "withNodeId", {
148
148
  return _nodeId.default;
149
149
  }
150
150
  });
151
- Object.defineProperty(exports, "withSocketIO", {
152
- enumerable: true,
153
- get: function () {
154
- return _socket.withSocketIO;
155
- }
156
- });
157
151
  var _fileLoading = _interopRequireDefault(require("./components/file-loading"));
158
152
  var _loading = _interopRequireDefault(require("./components/loading"));
159
153
  var _toast = _interopRequireDefault(require("./components/toast"));
160
154
  var _tooltip = _interopRequireDefault(require("./components/tooltip"));
161
155
  var _constants = require("./constants");
162
156
  var _context = _interopRequireDefault(require("./context"));
157
+ var _commentEditor = _interopRequireDefault(require("./editor/comment-editor"));
163
158
  var _extension = require("./extension");
164
159
  var _dropdownMenuItem = _interopRequireDefault(require("./extension/commons/dropdown-menu-item"));
165
160
  var _menuShortcutIndicator = _interopRequireDefault(require("./extension/commons/menu-shortcut-indicator"));
166
161
  var _useComment = require("./hooks/use-comment");
167
- var _commentLayout = _interopRequireDefault(require("./layout/comment-layout"));
168
162
  var _nodeId = _interopRequireDefault(require("./node-id"));
169
163
  var _slateConvert = require("./slate-convert");
170
- var _socket = require("./socket");
171
164
  var _commonUtils = require("./utils/common-utils");
172
165
  var _eventBus = _interopRequireDefault(require("./utils/event-bus"));
173
166
  var _localStorageUtils = _interopRequireDefault(require("./utils/local-storage-utils"));
package/dist/index.js CHANGED
@@ -22,18 +22,6 @@ Object.defineProperty(exports, "SeafileCommentEditor", {
22
22
  return _seafileCommentEditor.default;
23
23
  }
24
24
  });
25
- Object.defineProperty(exports, "createCommentEditor", {
26
- enumerable: true,
27
- get: function () {
28
- return _basicSdk.createCommentEditor;
29
- }
30
- });
31
- Object.defineProperty(exports, "withNodeId", {
32
- enumerable: true,
33
- get: function () {
34
- return _basicSdk.withNodeId;
35
- }
36
- });
37
25
  var _basicSdk = require("./basic-sdk");
38
26
  var _constants = require("./constants");
39
27
  var _seafileCommentEditor = _interopRequireDefault(require("./pages/seafile-comment-editor"));
@@ -1,36 +1,60 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
- var _react = _interopRequireWildcard(require("react"));
8
+ var _react = _interopRequireDefault(require("react"));
10
9
  var _reactI18next = require("react-i18next");
11
10
  var _basicSdk = require("../basic-sdk");
12
11
  var _errorBoundary = _interopRequireDefault(require("../components/error-boundary"));
13
12
  const SeafileCommentEditor = _ref => {
14
13
  let {
15
- editor,
16
- pluginName = '',
14
+ // Provider
15
+ type,
16
+ // comment or replay
17
+ userInfo,
17
18
  className = '',
19
+ pluginName = '',
20
+ // sdoc or wiki or txt ...
18
21
  pluginEventBus,
19
22
  pluginEvent,
20
- api,
21
- onCloseCommentPanel
23
+ // Comment editor
24
+ content,
25
+ insertContent,
26
+ onContentChange,
27
+ hiddenUserInfo,
28
+ hiddenComment,
29
+ hiddenToolMenu,
30
+ closePanel,
31
+ collaborators,
32
+ participants,
33
+ addParticipants,
34
+ // settings
35
+ settings,
36
+ api
22
37
  } = _ref;
23
- _basicSdk.context.init();
38
+ _basicSdk.context.init(settings, api);
24
39
  return /*#__PURE__*/_react.default.createElement(_errorBoundary.default, null, /*#__PURE__*/_react.default.createElement(_basicSdk.CommentProvider, {
25
- editor: editor,
26
- pluginName: pluginName,
40
+ type: type,
41
+ userInfo: userInfo,
27
42
  className: className,
43
+ pluginName: pluginName,
28
44
  pluginEventBus: pluginEventBus,
29
45
  pluginEvent: pluginEvent,
30
- api: api,
31
- onCloseCommentPanel: onCloseCommentPanel
32
- }, /*#__PURE__*/_react.default.createElement(_basicSdk.CommentLayout, {
33
- editor: editor
46
+ collaborators: collaborators,
47
+ participants: participants,
48
+ addParticipants: addParticipants
49
+ }, /*#__PURE__*/_react.default.createElement(_basicSdk.CommentEditor, {
50
+ content: content,
51
+ insertContent: insertContent,
52
+ onContentChange: onContentChange,
53
+ hiddenUserInfo: hiddenUserInfo,
54
+ hiddenComment: hiddenComment,
55
+ hiddenToolMenu: hiddenToolMenu,
56
+ closePanel: closePanel,
57
+ addParticipants: addParticipants
34
58
  })));
35
59
  };
36
60
  var _default = exports.default = (0, _reactI18next.withTranslation)('sdoc-editor')(SeafileCommentEditor);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/comment-editor",
3
- "version": "0.0.1-alpha.3",
3
+ "version": "0.0.1-alpha.31",
4
4
  "private": false,
5
5
  "description": "This is a comment editor",
6
6
  "main": "dist/index.js",
@@ -1,7 +0,0 @@
1
- .sdoc-editor-container .sdoc-editor-content.no-outline .sdoc-article-container {
2
- margin: 0 auto !important;
3
- }
4
-
5
- html {
6
- scrollbar-width: none;
7
- }
@@ -1,6 +0,0 @@
1
- .sdoc-share-permission {
2
- font-size: 12px;
3
- padding: 2px 6px;
4
- border-radius: 4px;
5
- border: solid 1px rgba(0, 0, 0, 0.12);
6
- }
@@ -1,83 +0,0 @@
1
- .comment-drawer .comments-panel-body__header .comments-participants-container {
2
- width: fit-content;
3
- max-width: 100%;
4
- height: 42px;
5
- padding-top: 6px;
6
- display: flex;
7
- align-items: center;
8
- position: relative;
9
- }
10
-
11
- .comment-drawer .comments-panel-body__header .comments-participants-editor-target {
12
- position: absolute;
13
- left: -1px;
14
- top: 0;
15
- z-index: -1;
16
- height: 100%;
17
- width: 1px;
18
- background-color: transparent;
19
- }
20
-
21
- .comment-drawer .comments-panel-body__header .comment-participant-avatar {
22
- border-radius: 50%;
23
- vertical-align: middle;
24
- margin-right: -0.5rem;
25
- }
26
-
27
- .comment-drawer .comments-panel-body__header .comment-participant-avatar img {
28
- width: 28px;
29
- height: 28px;
30
- border: 2px solid #fff;
31
- line-height: 2rem;
32
- border-radius: 50%;
33
- display: inline-block;
34
- background: #ced4da no-repeat center/cover;
35
- position: relative;
36
- text-align: center;
37
- color: #868e96;
38
- font-weight: 600;
39
- vertical-align: bottom;
40
- font-size: .875rem;
41
- user-select: none;
42
- }
43
-
44
- .comment-drawer .comments-panel-body__header .add-comments-participants {
45
- position: relative;
46
- bottom: -3px;
47
- cursor: pointer;
48
- margin-right: -0.5rem;
49
- height: 20px;
50
- width: 20px;
51
- background-color: #fff;
52
- border: 1px solid #fff;
53
- border-radius: 50%;
54
- display: flex;
55
- align-items: center;
56
- justify-content: center;
57
- }
58
-
59
- .comment-drawer .add-comments-participants .sdocfont {
60
- font-size: 16px;
61
- color: #ff8000;
62
- border-radius: 50%;
63
- }
64
-
65
- .comment-drawer .comment-participants-more {
66
- position: absolute;
67
- top: 0;
68
- left: 0;
69
- width: 28px;
70
- height: 28px;
71
- border-radius: 50%;
72
- display: flex;
73
- align-items: center;
74
- justify-content: center;
75
- overflow: hidden;
76
- background-color: rgba(0, 0, 0, .6);
77
- border: 2px solid #fff;
78
- }
79
-
80
- .comment-drawer .comment-participants-more .sdocfont {
81
- color: #fff;
82
- font-size: 12px;
83
- }
@@ -1,67 +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 _slateReact = require("@seafile/slate-react");
12
- var _tooltip = _interopRequireDefault(require("../../../components/tooltip"));
13
- var _useParticipants = require("../../hooks/use-participants");
14
- var _commentParticipantsEditor = _interopRequireDefault(require("../comment-participants-editor"));
15
- var _participantAvatar = _interopRequireDefault(require("./participant-avatar"));
16
- require("./index.css");
17
- const CommentAllParticipants = () => {
18
- const popoverRef = (0, _react.useRef)();
19
- const {
20
- participants
21
- } = (0, _useParticipants.useParticipantsContext)();
22
- const editor = (0, _slateReact.useSlateStatic)();
23
- const {
24
- t
25
- } = (0, _reactI18next.useTranslation)('sdoc-editor');
26
- const addParticipantId = 'sdoc-add-participants';
27
- const commentsParticipantsId = 'sdoc-comments-participants';
28
- const [isDidMount, setDidMount] = (0, _react.useState)(false);
29
- (0, _react.useEffect)(() => {
30
- setDidMount(true);
31
- }, []);
32
- const toggle = (0, _react.useCallback)(() => {
33
- popoverRef.current && popoverRef.current.toggle();
34
-
35
- // eslint-disable-next-line react-hooks/exhaustive-deps
36
- }, [popoverRef.current]);
37
- const participantsCount = participants.length;
38
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
39
- className: "comments-participants-container"
40
- }, /*#__PURE__*/_react.default.createElement("div", {
41
- className: "comments-participants-editor-target",
42
- id: commentsParticipantsId
43
- }), participants.slice(0, 14).map((participant, index) => {
44
- const {
45
- username
46
- } = participant;
47
- return /*#__PURE__*/_react.default.createElement(_participantAvatar.default, {
48
- key: username,
49
- participant: participant,
50
- index: index,
51
- showMore: participantsCount > 13 && index === 13
52
- });
53
- }), /*#__PURE__*/_react.default.createElement("div", {
54
- className: "add-comments-participants",
55
- id: addParticipantId,
56
- onClick: toggle
57
- }, /*#__PURE__*/_react.default.createElement("i", {
58
- className: "sdocfont sdoc-add"
59
- })), isDidMount && /*#__PURE__*/_react.default.createElement(_tooltip.default, {
60
- target: addParticipantId
61
- }, t('Add_participants'))), isDidMount && /*#__PURE__*/_react.default.createElement(_commentParticipantsEditor.default, {
62
- target: commentsParticipantsId,
63
- ref: popoverRef,
64
- editor: editor
65
- }));
66
- };
67
- var _default = exports.default = CommentAllParticipants;
@@ -1,43 +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 _classnames = _interopRequireDefault(require("classnames"));
11
- var _tooltip = _interopRequireDefault(require("../../../components/tooltip"));
12
- const ParticipantAvatar = _ref => {
13
- let {
14
- participant,
15
- index,
16
- showMore
17
- } = _ref;
18
- const [showTooltip, setShowTooltip] = (0, _react.useState)(false);
19
- (0, _react.useEffect)(() => {
20
- setShowTooltip(true);
21
- }, []);
22
- const {
23
- name,
24
- avatar_url
25
- } = participant;
26
- const id = `comment-participant-avatar-${index}-${Math.floor(Math.random() * 1000)}`;
27
- return /*#__PURE__*/_react.default.createElement("div", {
28
- className: (0, _classnames.default)('comment-participant-avatar', {
29
- 'position-relative': showMore
30
- }),
31
- id: id
32
- }, /*#__PURE__*/_react.default.createElement("img", {
33
- src: avatar_url,
34
- alt: ""
35
- }), showTooltip && /*#__PURE__*/_react.default.createElement(_tooltip.default, {
36
- target: id
37
- }, name), showMore && /*#__PURE__*/_react.default.createElement("div", {
38
- className: "comment-participants-more"
39
- }, /*#__PURE__*/_react.default.createElement("i", {
40
- className: "sdocfont sdoc-more"
41
- })));
42
- };
43
- var _default = exports.default = ParticipantAvatar;
@@ -1,80 +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 _isHotkey = _interopRequireDefault(require("is-hotkey"));
13
- var _utils = require("../utils");
14
- require("./comment-list.css");
15
- const CommentDeletePopover = _ref => {
16
- let {
17
- type,
18
- setIsShowDeletePopover,
19
- deleteConfirm,
20
- targetId,
21
- parentDom
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
- // eslint-disable-next-line react-hooks/exhaustive-deps
46
- }, []);
47
- const {
48
- t
49
- } = (0, _reactI18next.useTranslation)('sdoc-editor');
50
- const onDeleteCancel = (0, _react.useCallback)(event => {
51
- event.stopPropagation();
52
- setIsShowDeletePopover(false);
53
- }, [setIsShowDeletePopover]);
54
- const handleConfirm = (0, _react.useCallback)(event => {
55
- event.stopPropagation();
56
- deleteConfirm();
57
- }, [deleteConfirm]);
58
- return /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
59
- container: parentDom,
60
- target: targetId,
61
- onClick: event => event.stopPropagation(),
62
- placement: "left",
63
- className: "comment-delete-popover",
64
- isOpen: true
65
- }, /*#__PURE__*/_react.default.createElement("div", {
66
- className: "comment-delete-popover-container",
67
- ref: popoverRef
68
- }, /*#__PURE__*/_react.default.createElement("div", {
69
- className: "delete-tip"
70
- }, t(`Are_you_sure_to_delete_this_${type === 'comment' ? 'comment' : 'reply'}`)), /*#__PURE__*/_react.default.createElement("div", {
71
- className: "delete-control mt-5"
72
- }, /*#__PURE__*/_react.default.createElement("button", {
73
- className: "btn btn-secondary mr-2",
74
- onClick: onDeleteCancel
75
- }, t('Cancel')), /*#__PURE__*/_react.default.createElement("button", {
76
- className: "btn btn-primary",
77
- onClick: handleConfirm
78
- }, t('Confirm')))));
79
- };
80
- var _default = exports.default = CommentDeletePopover;