@seafile/sdoc-editor 2.0.132 → 2.0.134-alpha.0

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.
@@ -13,12 +13,13 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm
13
13
  var _react = _interopRequireWildcard(require("react"));
14
14
  var _reactI18next = require("react-i18next");
15
15
  var _reactstrap = require("reactstrap");
16
+ var _commentEditor = require("@seafile/comment-editor");
16
17
  var _dayjs = _interopRequireDefault(require("dayjs"));
17
18
  var _tooltip = _interopRequireDefault(require("../../components/tooltip"));
18
19
  var _context2 = _interopRequireDefault(require("../../context"));
19
20
  var _mdToHtml = _interopRequireDefault(require("../../slate-convert/md-to-html"));
20
21
  var _notificationHooks = require("../hooks/notification-hooks");
21
- var _commentEditor = _interopRequireDefault(require("./comment-editor"));
22
+ var _useParticipants = require("../hooks/use-participants");
22
23
  var _commentImagePreviewer = _interopRequireDefault(require("./comment-image-previewer"));
23
24
  var CommentItemContent = function CommentItemContent(_ref) {
24
25
  var isActive = _ref.isActive,
@@ -29,6 +30,8 @@ var CommentItemContent = function CommentItemContent(_ref) {
29
30
  onDeleteComment = _ref.onDeleteComment,
30
31
  t = _ref.t,
31
32
  targetId = _ref.targetId;
33
+ var _useParticipantsConte = (0, _useParticipants.useParticipantsContext)(),
34
+ addParticipants = _useParticipantsConte.addParticipants;
32
35
  var _useState = (0, _react.useState)(false),
33
36
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
34
37
  isDropdownOpen = _useState2[0],
@@ -119,6 +122,18 @@ var CommentItemContent = function CommentItemContent(_ref) {
119
122
  setImageUrl(event.target.src);
120
123
  }
121
124
  }, []);
125
+ var commentEditorProps = {
126
+ userInfo: user,
127
+ pluginName: 'sdoc',
128
+ className: 'pb-3',
129
+ addParticipants: addParticipants,
130
+ content: comment.comment,
131
+ insertContent: updateContent,
132
+ hiddenComment: setIsEditing,
133
+ api: {
134
+ uploadLocalImage: _context2["default"].uploadLocalImage
135
+ }
136
+ };
122
137
  return /*#__PURE__*/_react["default"].createElement("div", {
123
138
  className: "comment-item"
124
139
  }, /*#__PURE__*/_react["default"].createElement("div", {
@@ -187,12 +202,7 @@ var CommentItemContent = function CommentItemContent(_ref) {
187
202
  dangerouslySetInnerHTML: {
188
203
  __html: editorContent
189
204
  }
190
- })), isEditing && /*#__PURE__*/_react["default"].createElement(_commentEditor["default"], {
191
- className: "pb-3",
192
- content: comment.comment,
193
- updateContent: updateContent,
194
- setIsEditing: setIsEditing
195
- }), imageUrl && /*#__PURE__*/_react["default"].createElement(_commentImagePreviewer["default"], {
205
+ })), isEditing && /*#__PURE__*/_react["default"].createElement(_commentEditor.SeafileCommentEditor, commentEditorProps), imageUrl && /*#__PURE__*/_react["default"].createElement(_commentImagePreviewer["default"], {
196
206
  imageUrl: imageUrl,
197
207
  toggle: function toggle() {
198
208
  return setImageUrl('');
@@ -12,11 +12,13 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm
12
12
  var _react = _interopRequireWildcard(require("react"));
13
13
  var _reactI18next = require("react-i18next");
14
14
  var _reactstrap = require("reactstrap");
15
+ var _commentEditor = require("@seafile/comment-editor");
15
16
  var _dayjs = _interopRequireDefault(require("dayjs"));
16
17
  var _context2 = _interopRequireDefault(require("../../context"));
17
18
  var _mdToHtml = _interopRequireDefault(require("../../slate-convert/md-to-html"));
19
+ var _useParticipants = require("../hooks/use-participants");
18
20
  var _commentDeletePopover = _interopRequireDefault(require("./comment-delete-popover"));
19
- var _commentEditor = _interopRequireDefault(require("./comment-editor"));
21
+ var _commentEditor2 = _interopRequireDefault(require("./comment-editor"));
20
22
  var _commentImagePreviewer = _interopRequireDefault(require("./comment-image-previewer"));
21
23
  var CommentItemReply = function CommentItemReply(_ref) {
22
24
  var isActive = _ref.isActive,
@@ -25,6 +27,8 @@ var CommentItemReply = function CommentItemReply(_ref) {
25
27
  deleteReply = _ref.deleteReply,
26
28
  updateReply = _ref.updateReply,
27
29
  t = _ref.t;
30
+ var _useParticipantsConte = (0, _useParticipants.useParticipantsContext)(),
31
+ addParticipants = _useParticipantsConte.addParticipants;
28
32
  var _useState = (0, _react.useState)(false),
29
33
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
30
34
  isDropdownOpen = _useState2[0],
@@ -101,6 +105,19 @@ var CommentItemReply = function CommentItemReply(_ref) {
101
105
  setImageUrl(event.target.src);
102
106
  }
103
107
  }, []);
108
+ var commentEditorProps = {
109
+ type: 'reply',
110
+ userInfo: user,
111
+ pluginName: 'sdoc',
112
+ className: 'pb-3',
113
+ addParticipants: addParticipants,
114
+ content: editorContent,
115
+ insertContent: updateContent,
116
+ hiddenComment: setIsEditing,
117
+ api: {
118
+ uploadLocalImage: _context2["default"].uploadLocalImage
119
+ }
120
+ };
104
121
  return /*#__PURE__*/_react["default"].createElement("div", {
105
122
  className: "comment-item",
106
123
  ref: itemRef
@@ -150,13 +167,7 @@ var CommentItemReply = function CommentItemReply(_ref) {
150
167
  dangerouslySetInnerHTML: {
151
168
  __html: editorContent
152
169
  }
153
- })), isEditing && /*#__PURE__*/_react["default"].createElement(_commentEditor["default"], {
154
- className: "pb-3",
155
- type: "reply",
156
- content: editorContent,
157
- updateContent: updateContent,
158
- setIsEditing: setIsEditing
159
- }), isShowDeletePopover && isActive && /*#__PURE__*/_react["default"].createElement(_commentDeletePopover["default"], {
170
+ })), isEditing && /*#__PURE__*/_react["default"].createElement(_commentEditor.SeafileCommentEditor, commentEditorProps), isShowDeletePopover && isActive && /*#__PURE__*/_react["default"].createElement(_commentDeletePopover["default"], {
160
171
  parentDom: itemRef.current,
161
172
  type: "reply",
162
173
  deleteConfirm: _deleteReply,
@@ -14,6 +14,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm
14
14
  var _react = _interopRequireWildcard(require("react"));
15
15
  var _reactI18next = require("react-i18next");
16
16
  var _reactstrap = require("reactstrap");
17
+ var _commentEditor = require("@seafile/comment-editor");
17
18
  var _classnames = _interopRequireDefault(require("classnames"));
18
19
  var _dayjs = _interopRequireDefault(require("dayjs"));
19
20
  var _slugid = _interopRequireDefault(require("slugid"));
@@ -21,7 +22,7 @@ var _context2 = _interopRequireDefault(require("../../context"));
21
22
  var _useSelectionPosition = require("../../hooks/use-selection-position");
22
23
  var _helper = require("../helper");
23
24
  var _useCommentContext2 = require("../hooks/comment-hooks/use-comment-context");
24
- var _commentEditor = _interopRequireDefault(require("./comment-editor"));
25
+ var _useParticipants = require("../hooks/use-participants");
25
26
  var _commentItemWrapper = _interopRequireDefault(require("./comment-item-wrapper"));
26
27
  require("./comment-list.css");
27
28
  var CommentList = function CommentList(_ref) {
@@ -41,6 +42,8 @@ var CommentList = function CommentList(_ref) {
41
42
  t = _ref.t;
42
43
  var commentPopover = (0, _react.useRef)(null);
43
44
  var commentDetailRef = (0, _react.useRef)(null);
45
+ var _useParticipantsConte = (0, _useParticipants.useParticipantsContext)(),
46
+ addParticipants = _useParticipantsConte.addParticipants;
44
47
  var position = (0, _useSelectionPosition.useCommentListPosition)(activeElementIds, isContextComment, isClickedContextComment, commentedDom, commentDetail, closeComment);
45
48
  var _useCommentContext = (0, _useCommentContext2.useCommentContext)(),
46
49
  dispatch = _useCommentContext.dispatch;
@@ -202,12 +205,17 @@ var CommentList = function CommentList(_ref) {
202
205
  style: {
203
206
  paddingTop: isEmptyComment ? '16px' : ''
204
207
  }
205
- }, isEmptyComment && /*#__PURE__*/_react["default"].createElement(_commentEditor["default"], {
208
+ }, isEmptyComment && /*#__PURE__*/_react["default"].createElement(_commentEditor.SeafileCommentEditor, {
209
+ userInfo: _context2["default"].getUserInfo(),
210
+ pluginName: "sdoc",
211
+ addParticipants: addParticipants,
206
212
  type: "comment",
207
213
  insertContent: addNewComment,
208
214
  hiddenComment: hiddenComment,
209
- isContextComment: isContextComment,
210
- closeComment: closeComment
215
+ closePanel: closeComment,
216
+ api: {
217
+ uploadLocalImage: _context2["default"].uploadLocalImage
218
+ }
211
219
  }), !isEmptyComment && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !isActiveEditor && /*#__PURE__*/_react["default"].createElement(_reactstrap.Input, {
212
220
  value: inputContent !== null && inputContent !== void 0 && inputContent.trim() ? '.....' : '',
213
221
  readOnly: true,
@@ -215,29 +223,40 @@ var CommentList = function CommentList(_ref) {
215
223
  onFocus: function onFocus() {
216
224
  setActiveCommentKey(index);
217
225
  }
218
- }), isActiveEditor && /*#__PURE__*/_react["default"].createElement(_commentEditor["default"], {
226
+ }), isActiveEditor && /*#__PURE__*/_react["default"].createElement(_commentEditor.SeafileCommentEditor, {
227
+ userInfo: _context2["default"].getUserInfo(),
228
+ pluginName: "sdoc",
219
229
  type: "reply",
220
230
  placeholder: 'Enter_reply_shift_Enter_for_new_line_Enter_to_send',
221
- commentContent: commentInputs[item.id] || '',
231
+ addParticipants: addParticipants,
232
+ content: commentInputs[item.id] || '',
222
233
  insertContent: function insertContent(value) {
223
234
  return handleReplySubmit(value, item.id);
224
235
  },
225
236
  onContentChange: function onContentChange(content) {
226
237
  return handleInputChange(item.id, content);
227
238
  },
228
- hiddenComment: hiddenComment
239
+ hiddenComment: hiddenComment,
240
+ api: {
241
+ uploadLocalImage: _context2["default"].uploadLocalImage
242
+ }
229
243
  }))));
230
244
  }), Object.values(commentDetail).length === 0 && /*#__PURE__*/_react["default"].createElement("div", {
231
245
  className: "non-global-comment-input-wrapper",
232
246
  style: {
233
247
  paddingTop: isEmptyComment ? '16px' : ''
234
248
  }
235
- }, isEmptyComment && /*#__PURE__*/_react["default"].createElement(_commentEditor["default"], {
249
+ }, isEmptyComment && /*#__PURE__*/_react["default"].createElement(_commentEditor.SeafileCommentEditor, {
250
+ userInfo: _context2["default"].getUserInfo(),
251
+ pluginName: "sdoc",
236
252
  type: "comment",
253
+ addParticipants: addParticipants,
237
254
  insertContent: addNewComment,
238
255
  hiddenComment: hiddenComment,
239
- isContextComment: isContextComment,
240
- closeComment: closeComment
256
+ closePanel: closeComment,
257
+ api: {
258
+ uploadLocalImage: _context2["default"].uploadLocalImage
259
+ }
241
260
  }), !isEmptyComment && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !showEditor && /*#__PURE__*/_react["default"].createElement(_reactstrap.Input, {
242
261
  value: inputContent !== null && inputContent !== void 0 && inputContent.trim() ? '.....' : '',
243
262
  readOnly: true,
@@ -245,15 +264,21 @@ var CommentList = function CommentList(_ref) {
245
264
  onFocus: function onFocus() {
246
265
  setShowEditor(true);
247
266
  }
248
- }), showEditor && /*#__PURE__*/_react["default"].createElement(_commentEditor["default"], {
267
+ }), showEditor && /*#__PURE__*/_react["default"].createElement(_commentEditor.SeafileCommentEditor, {
268
+ userInfo: _context2["default"].getUserInfo(),
269
+ pluginName: "sdoc",
249
270
  type: "reply",
250
271
  placeholder: 'Enter_reply_shift_Enter_for_new_line_Enter_to_send',
251
- commentContent: inputContent,
272
+ addParticipants: addParticipants,
273
+ content: inputContent,
252
274
  insertContent: replyComment,
253
275
  onContentChange: function onContentChange(content) {
254
276
  setInputContent(content);
255
277
  },
256
- hiddenComment: hiddenComment
278
+ hiddenComment: hiddenComment,
279
+ api: {
280
+ uploadLocalImage: _context2["default"].uploadLocalImage
281
+ }
257
282
  }))));
258
283
  };
259
284
  var _default = exports["default"] = (0, _reactI18next.withTranslation)('sdoc-editor')(CommentList);
@@ -6,8 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports["default"] = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
+ var _commentEditor = require("@seafile/comment-editor");
9
10
  var _classnames = _interopRequireDefault(require("classnames"));
10
- var _commentEditor = _interopRequireDefault(require("../comment-editor"));
11
+ var _context = _interopRequireDefault(require("../../../context"));
12
+ var _useParticipants = require("../../hooks/use-participants");
11
13
  var GlobalCommentEditor = function GlobalCommentEditor(_ref) {
12
14
  var isScrollDisplayed = _ref.isScrollDisplayed,
13
15
  globalCommentContent = _ref.globalCommentContent,
@@ -15,20 +17,29 @@ var GlobalCommentEditor = function GlobalCommentEditor(_ref) {
15
17
  insertDocComment = _ref.insertDocComment,
16
18
  hiddenCommentEditor = _ref.hiddenCommentEditor,
17
19
  onContentChange = _ref.onContentChange;
20
+ var _useParticipantsConte = (0, _useParticipants.useParticipantsContext)(),
21
+ addParticipants = _useParticipantsConte.addParticipants;
22
+ var commentEditorProps = {
23
+ type: type,
24
+ userInfo: _context["default"].getUserInfo(),
25
+ pluginName: 'sdoc',
26
+ className: 'sdoc-doc-comment-editor 11111',
27
+ hiddenUserInfo: true,
28
+ content: globalCommentContent,
29
+ insertContent: insertDocComment,
30
+ onContentChange: onContentChange,
31
+ hiddenComment: hiddenCommentEditor,
32
+ addParticipants: addParticipants,
33
+ api: {
34
+ uploadLocalImage: _context["default"].uploadLocalImage
35
+ }
36
+ };
18
37
  return /*#__PURE__*/_react["default"].createElement("div", {
19
38
  className: (0, _classnames["default"])('sdoc-doc-comment-editor-container', 'sdoc-comment-list-container', {
20
39
  'scrolled': isScrollDisplayed
21
40
  })
22
41
  }, /*#__PURE__*/_react["default"].createElement("div", {
23
42
  className: "sdoc-doc-comment-editor-content"
24
- }, /*#__PURE__*/_react["default"].createElement(_commentEditor["default"], {
25
- type: type,
26
- className: "sdoc-doc-comment-editor",
27
- commentContent: globalCommentContent,
28
- hiddenUserInfo: true,
29
- insertContent: insertDocComment,
30
- hiddenComment: hiddenCommentEditor,
31
- onContentChange: onContentChange
32
- })));
43
+ }, /*#__PURE__*/_react["default"].createElement(_commentEditor.SeafileCommentEditor, commentEditorProps)));
33
44
  };
34
45
  var _default = exports["default"] = GlobalCommentEditor;
@@ -55,7 +55,7 @@ var SelectSdocFileDialog = function SelectSdocFileDialog(_ref) {
55
55
  modalTitle = 'Select_video_file';
56
56
  break;
57
57
  case _constants.ELEMENT_TYPE.WHITEBOARD:
58
- modalTitle = 'Select_Excalidraw_document';
58
+ modalTitle = 'Select_Excalidraw_file';
59
59
  break;
60
60
  default:
61
61
  break;
@@ -87,7 +87,7 @@ function AIModule(_ref) {
87
87
  var selectElements = (0, _helpers.handleSelectElements)(editor);
88
88
  var _content = '';
89
89
  if (selectElements) {
90
- if ((0, _helpers.validateNestedStructure)(selectElements[0])) {
90
+ if (selectElements.length === 1 && (0, _helpers.validateNestedStructure)(selectElements[0])) {
91
91
  // list.length === 1
92
92
  _content = window.getSelection().toString();
93
93
  } else {
@@ -51,9 +51,9 @@ var WhiteboardMenu = function WhiteboardMenu(_ref) {
51
51
  }, /*#__PURE__*/_react["default"].createElement("div", {
52
52
  className: "sdoc-dropdown-menu-item",
53
53
  onClick: openSelectWhiteboardFileDialog
54
- }, t('Select_Excalidraw_document')), /*#__PURE__*/_react["default"].createElement("div", {
54
+ }, t('Select_Excalidraw_file')), /*#__PURE__*/_react["default"].createElement("div", {
55
55
  className: "sdoc-dropdown-menu-item",
56
56
  onClick: onCreateFile
57
- }, t('Create_new_excalidraw')))));
57
+ }, t('New_Excalidraw_file')))));
58
58
  };
59
59
  var _default = exports["default"] = WhiteboardMenu;
@@ -5,7 +5,12 @@
5
5
  min-width: 360px;
6
6
  position: relative;
7
7
  right: 0;
8
- animation: rightdrawer .3s 1ms;
8
+ margin-right: -360px;
9
+ transition: margin-right .3s ease-in-out;
10
+ }
11
+
12
+ .sdoc-content-right-panel-wrapper.open {
13
+ margin-right: 0;
9
14
  }
10
15
 
11
16
  .sdoc-content-right-panel-wrapper .sdoc-content-right-panel {
@@ -14,13 +19,3 @@
14
19
  overflow: hidden;
15
20
  border-left: 1px solid #d8d8d8;
16
21
  }
17
-
18
- @keyframes rightdrawer {
19
- 0% {
20
- transform: translate(100%);
21
- }
22
-
23
- 100% {
24
- transform: translate(0);
25
- }
26
- }
@@ -60,12 +60,15 @@ var RightPanel = function RightPanel(_ref) {
60
60
  (0, _react.useEffect)(function () {
61
61
  var isShowGlobalComments = displayPluginName === 'sdoc-comment' ? true : false;
62
62
  var commentBox = document.querySelector('.sdoc-content-right-panel-wrapper');
63
- var editorEl = document.querySelector('#sdoc-scroll-container');
63
+ var editorEl = document.querySelector('.sdoc-scroll-container');
64
64
  var commentWidth = commentBox === null || commentBox === void 0 ? void 0 : commentBox.offsetWidth;
65
- editorEl.scrollTo({
66
- left: commentWidth + 36,
67
- behavior: 'smooth'
68
- });
65
+ commentBox === null || commentBox === void 0 ? void 0 : commentBox.classList.add('open');
66
+ setTimeout(function () {
67
+ editorEl.scrollTo({
68
+ left: commentWidth + 36,
69
+ behavior: 'smooth'
70
+ });
71
+ }, 300);
69
72
  var settings = _localStorageUtils["default"].getItem(_constants.SDOC_STORAGE) || {};
70
73
  _localStorageUtils["default"].setItem(_constants.SDOC_STORAGE, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, settings), {}, {
71
74
  isShowGlobalComments: isShowGlobalComments
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "2.0.132",
3
+ "version": "2.0.134-alpha.0",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -17,6 +17,7 @@
17
17
  "license": "ISC",
18
18
  "description": "",
19
19
  "dependencies": {
20
+ "@seafile/comment-editor": "^0.0.1-alpha.23",
20
21
  "@seafile/print-js": "1.6.6",
21
22
  "@seafile/react-image-lightbox": "4.0.2",
22
23
  "@seafile/slate": "0.91.8",
@@ -69,6 +70,5 @@
69
70
  },
70
71
  "publishConfig": {
71
72
  "access": "public"
72
- },
73
- "gitHead": "7d4ba52369aee54fc7bbd9f59e4eb415411ee113"
74
- }
73
+ }
74
+ }
package/LICENSE.txt DELETED
@@ -1,13 +0,0 @@
1
- Copyright (c) 2025 Seafile Ltd.
2
-
3
- Licensed under the Apache License, Version 2.0 (the "License");
4
- you may not use this file except in compliance with the License.
5
- You may obtain a copy of the License at
6
-
7
- http://www.apache.org/licenses/LICENSE-2.0
8
-
9
- Unless required by applicable law or agreed to in writing, software
10
- distributed under the License is distributed on an "AS IS" BASIS,
11
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- See the License for the specific language governing permissions and
13
- limitations under the License.