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

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 (48) hide show
  1. package/README.md +2 -4
  2. package/dist/basic-sdk/assets/css/layout.css +2 -2
  3. package/dist/basic-sdk/assets/css/sdoc-comment-editor-plugin.css +4 -4
  4. package/dist/basic-sdk/comment/components/comment-all-participants/index.css +8 -8
  5. package/dist/basic-sdk/comment/components/comment-editor.js +123 -7
  6. package/dist/basic-sdk/comment/components/comment-item-collapse-wrapper.js +2 -2
  7. package/dist/basic-sdk/comment/components/comment-item-content.js +11 -13
  8. package/dist/basic-sdk/comment/components/comment-item-wrapper.js +32 -36
  9. package/dist/basic-sdk/comment/components/comment-list.css +4 -4
  10. package/dist/basic-sdk/comment/components/comment-participants-editor/index.js +2 -2
  11. package/dist/basic-sdk/comment/components/global-comment/global-comment-body-header.js +5 -4
  12. package/dist/basic-sdk/comment/components/global-comment/global-comment-header.js +11 -4
  13. package/dist/basic-sdk/comment/components/global-comment/index.css +56 -54
  14. package/dist/basic-sdk/comment/components/global-comment/index.js +41 -36
  15. package/dist/basic-sdk/comment/hooks/comment-hooks/use-comment-mount.js +3 -4
  16. package/dist/basic-sdk/comment/hooks/notification-hooks/use-notification-mount.js +2 -6
  17. package/dist/basic-sdk/comment/index.js +2 -48
  18. package/dist/basic-sdk/constants/index.js +1 -2
  19. package/dist/basic-sdk/context.js +8 -8
  20. package/dist/basic-sdk/extension/plugins/link/menu/index.js +1 -1
  21. package/dist/basic-sdk/extension/plugins/mention/render-elem/participant-popover.js +3 -6
  22. package/dist/basic-sdk/extension/render/render-comment-editor-element.js +1 -1
  23. package/dist/basic-sdk/extension/toolbar/comment-editor-toolbar/index.js +3 -3
  24. package/dist/basic-sdk/extension/toolbar/comment-editor-toolbar/post-comment/index.js +2 -2
  25. package/dist/basic-sdk/hooks/use-comment.js +218 -0
  26. package/dist/basic-sdk/index.js +12 -32
  27. package/dist/basic-sdk/{right-panel → layout/comment-layout}/index.css +2 -2
  28. package/dist/basic-sdk/{right-panel → layout/comment-layout}/index.js +29 -28
  29. package/dist/basic-sdk/layout/comment-layout/resize-width/index.css +38 -0
  30. package/dist/basic-sdk/{right-panel → layout/comment-layout}/resize-width/index.js +3 -3
  31. package/dist/basic-sdk/layout/index.js +0 -7
  32. package/dist/index.js +12 -0
  33. package/dist/pages/seafile-comment-editor.js +19 -52
  34. package/package.json +2 -1
  35. package/dist/basic-sdk/comment/components/global-comment/global-comment-editor.js +0 -36
  36. package/dist/basic-sdk/comment/provider/comment-context-provider.js +0 -37
  37. package/dist/basic-sdk/comment/provider/index.js +0 -23
  38. package/dist/basic-sdk/comment/provider/notification-context-provider.js +0 -31
  39. package/dist/basic-sdk/comment/provider/participants-content-provider.js +0 -96
  40. package/dist/basic-sdk/editor/comment-article.js +0 -104
  41. package/dist/basic-sdk/editor/sdoc-comment-editor.js +0 -128
  42. package/dist/basic-sdk/editor/sdoc-editor.js +0 -50
  43. package/dist/basic-sdk/hooks/use-collaborators.js +0 -62
  44. package/dist/basic-sdk/hooks/use-plugins.js +0 -9
  45. package/dist/basic-sdk/layout/article-container.js +0 -89
  46. package/dist/basic-sdk/right-panel/resize-width/index.css +0 -38
  47. package/dist/hooks/index.js +0 -12
  48. package/dist/hooks/use-document.js +0 -75
@@ -10,60 +10,27 @@ var _react = _interopRequireWildcard(require("react"));
10
10
  var _reactI18next = require("react-i18next");
11
11
  var _basicSdk = require("../basic-sdk");
12
12
  var _errorBoundary = _interopRequireDefault(require("../components/error-boundary"));
13
- var _hooks = require("../hooks");
14
- require("../assets/css/simple-editor.css");
15
13
  const SeafileCommentEditor = _ref => {
16
14
  let {
17
- isStarred,
18
- isDraft,
19
- showComment,
20
- showDocOperations = true,
21
- t,
22
- plugins = [],
23
- collaborators
15
+ editor,
16
+ pluginName = '',
17
+ className = '',
18
+ pluginEventBus,
19
+ pluginEvent,
20
+ api,
21
+ onCloseCommentPanel
24
22
  } = _ref;
25
- _basicSdk.context.initApi();
26
- const editorRef = (0, _react.useRef)(null);
27
- const {
28
- isFirstLoading,
29
- isReloading,
30
- errorMessage,
31
- document,
32
- reloadDocument,
33
- setErrorMessage
34
- } = (0, _hooks.useDocument)();
35
- const validEditor = (0, _react.useMemo)(() => {
36
- const defaultEditor = (0, _basicSdk.createDefaultEditor)();
37
- const editorConfig = _basicSdk.context.getEditorConfig();
38
- const newEditor = (0, _basicSdk.withNodeId)((0, _basicSdk.withSocketIO)(defaultEditor, {
39
- document,
40
- config: editorConfig
41
- }));
42
- const {
43
- cursors
44
- } = document;
45
- newEditor.cursors = cursors || {};
46
- newEditor.width = 672; // default width
47
- return newEditor;
48
-
49
- // eslint-disable-next-line react-hooks/exhaustive-deps
50
- }, []);
51
- if (isFirstLoading) {
52
- return /*#__PURE__*/_react.default.createElement(_basicSdk.Loading, null);
53
- }
54
- if (errorMessage) {
55
- return /*#__PURE__*/_react.default.createElement("div", {
56
- className: "error-page"
57
- }, /*#__PURE__*/_react.default.createElement("div", {
58
- className: "error-tip"
59
- }, t(errorMessage)));
60
- }
61
- return /*#__PURE__*/_react.default.createElement(_errorBoundary.default, null, /*#__PURE__*/_react.default.createElement(_basicSdk.CollaboratorsProvider, {
62
- collaborators: collaborators
63
- }, /*#__PURE__*/_react.default.createElement(_basicSdk.Provider, {
64
- editor: validEditor
65
- }, /*#__PURE__*/_react.default.createElement(_basicSdk.RightPanel, {
66
- editor: validEditor
67
- }))));
23
+ _basicSdk.context.init();
24
+ return /*#__PURE__*/_react.default.createElement(_errorBoundary.default, null, /*#__PURE__*/_react.default.createElement(_basicSdk.CommentProvider, {
25
+ editor: editor,
26
+ pluginName: pluginName,
27
+ className: className,
28
+ pluginEventBus: pluginEventBus,
29
+ pluginEvent: pluginEvent,
30
+ api: api,
31
+ onCloseCommentPanel: onCloseCommentPanel
32
+ }, /*#__PURE__*/_react.default.createElement(_basicSdk.CommentLayout, {
33
+ editor: editor
34
+ })));
68
35
  };
69
36
  var _default = exports.default = (0, _reactI18next.withTranslation)('sdoc-editor')(SeafileCommentEditor);
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@seafile/comment-editor",
3
- "version": "0.0.1-alpha.0",
3
+ "version": "0.0.1-alpha.2",
4
4
  "private": false,
5
5
  "description": "This is a comment editor",
6
6
  "main": "dist/index.js",
7
7
  "dependencies": {
8
+ "@seafile/comment-editor": "^0.0.1-alpha.0",
8
9
  "@seafile/print-js": "1.6.6",
9
10
  "@seafile/react-image-lightbox": "4.0.2",
10
11
  "@seafile/sdoc-editor": "2.0.60",
@@ -1,36 +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.default = void 0;
8
- var _react = _interopRequireDefault(require("react"));
9
- var _classnames = _interopRequireDefault(require("classnames"));
10
- var _commentEditor = _interopRequireDefault(require("../comment-editor"));
11
- const GlobalCommentEditor = _ref => {
12
- let {
13
- isScrollDisplayed,
14
- globalCommentContent,
15
- type,
16
- insertDocComment,
17
- hiddenCommentEditor,
18
- onContentChange
19
- } = _ref;
20
- return /*#__PURE__*/_react.default.createElement("div", {
21
- className: (0, _classnames.default)('sdoc-doc-comment-editor-container', 'sdoc-comment-list-container', {
22
- 'scrolled': isScrollDisplayed
23
- })
24
- }, /*#__PURE__*/_react.default.createElement("div", {
25
- className: "sdoc-doc-comment-editor-content"
26
- }, /*#__PURE__*/_react.default.createElement(_commentEditor.default, {
27
- type: type,
28
- className: "sdoc-doc-comment-editor",
29
- commentContent: globalCommentContent,
30
- hiddenUserInfo: true,
31
- insertContent: insertDocComment,
32
- hiddenComment: hiddenCommentEditor,
33
- onContentChange: onContentChange
34
- })));
35
- };
36
- var _default = exports.default = GlobalCommentEditor;
@@ -1,37 +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 _constants = require("../../constants");
11
- var _eventBus = _interopRequireDefault(require("../../utils/event-bus"));
12
- var _useCommentContext = require("../hooks/comment-hooks/use-comment-context");
13
- var _useCommentMount = require("../hooks/comment-hooks/use-comment-mount");
14
- var _commentReducer = require("../reducer/comment-reducer");
15
- const CommentContextProvider = _ref => {
16
- let {
17
- children,
18
- editor
19
- } = _ref;
20
- const [commentsInfo, dispatch] = (0, _react.useReducer)(_commentReducer.commentReducer, _commentReducer.initCommentsInfo);
21
- (0, _useCommentMount.useCommentsMount)(dispatch);
22
- (0, _react.useEffect)(() => {
23
- if (Object.keys(commentsInfo.element_comments_map).length) {
24
- editor.element_comments_map = commentsInfo.element_comments_map;
25
- const eventBus = _eventBus.default.getInstance();
26
- eventBus.dispatch(_constants.INTERNAL_EVENT.RELOAD_COMMENT);
27
- }
28
- // eslint-disable-next-line react-hooks/exhaustive-deps
29
- }, [commentsInfo.element_comments_map]);
30
- return /*#__PURE__*/_react.default.createElement(_useCommentContext.CommentContext.Provider, {
31
- value: {
32
- commentsInfo,
33
- dispatch
34
- }
35
- }, children);
36
- };
37
- var _default = exports.default = CommentContextProvider;
@@ -1,23 +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.default = void 0;
8
- var _react = _interopRequireDefault(require("react"));
9
- var _commentContextProvider = _interopRequireDefault(require("./comment-context-provider"));
10
- var _notificationContextProvider = _interopRequireDefault(require("./notification-context-provider"));
11
- var _participantsContentProvider = _interopRequireDefault(require("./participants-content-provider"));
12
- const Provider = _ref => {
13
- let {
14
- children,
15
- editor
16
- } = _ref;
17
- return /*#__PURE__*/_react.default.createElement(_notificationContextProvider.default, {
18
- editor: editor
19
- }, /*#__PURE__*/_react.default.createElement(_commentContextProvider.default, {
20
- editor: editor
21
- }, /*#__PURE__*/_react.default.createElement(_participantsContentProvider.default, null, children)));
22
- };
23
- var _default = exports.default = Provider;
@@ -1,31 +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.default = void 0;
8
- var _react = _interopRequireWildcard(require("react"));
9
- var _notificationHooks = require("../hooks/notification-hooks");
10
- var _notificationReducer = require("../reducer/notification-reducer");
11
- const NotificationContextProvider = _ref => {
12
- let {
13
- children,
14
- editor
15
- } = _ref;
16
- const [notificationsInfo, dispatch] = (0, _react.useReducer)(_notificationReducer.notificationReducer, _notificationReducer.initNotificationsInfo);
17
- (0, _notificationHooks.useNotificationsMount)(dispatch);
18
- (0, _react.useEffect)(() => {
19
- editor.notifications_map = {
20
- ...notificationsInfo.notifications_map
21
- };
22
- // eslint-disable-next-line react-hooks/exhaustive-deps
23
- }, [notificationsInfo]);
24
- return /*#__PURE__*/_react.default.createElement(_notificationHooks.NotificationContext.Provider, {
25
- value: {
26
- notificationsInfo,
27
- dispatch
28
- }
29
- }, children);
30
- };
31
- var _default = exports.default = NotificationContextProvider;
@@ -1,96 +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 _toast = _interopRequireDefault(require("../../components/toast"));
12
- var _constants = require("../../constants");
13
- var _context = _interopRequireDefault(require("../../context"));
14
- var _model = require("../../model");
15
- var _commonUtils = require("../../utils/common-utils");
16
- var _eventBus = _interopRequireDefault(require("../../utils/event-bus"));
17
- var _useParticipants = require("../hooks/use-participants");
18
- const ParticipantsProvider = _ref => {
19
- let {
20
- children
21
- } = _ref;
22
- const isSdocRevision = _context.default.getSetting('isSdocRevision');
23
- const isPublished = _context.default.getSetting('isPublished');
24
- const [participants, setParticipants] = (0, _react.useState)([]);
25
- const {
26
- t
27
- } = (0, _reactI18next.useTranslation)('sdoc-editor');
28
- const updateLocalParticipants = (0, _react.useCallback)(function () {
29
- let added = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
30
- if (!Array.isArray(added) || added.length === 0) return;
31
- let newParticipants = participants.slice(0);
32
- added.forEach(participant => {
33
- const newParticipant = new _model.User(participant);
34
- if (!newParticipants.find(item => item.username === newParticipant.username)) {
35
- newParticipants.push(newParticipant);
36
- }
37
- });
38
- setParticipants(newParticipants);
39
- }, [participants]);
40
- const addParticipants = (0, _react.useCallback)(otherEmail => {
41
- if (participants.find(participant => participant.username === otherEmail)) return;
42
- _context.default.addParticipants([otherEmail]).then(res => {
43
- const {
44
- success
45
- } = res.data;
46
- updateLocalParticipants(success);
47
- }).catch(error => {
48
- const errorMessage = (0, _commonUtils.getErrorMsg)(error);
49
- _toast.default.danger(t(errorMessage));
50
- });
51
- // eslint-disable-next-line react-hooks/exhaustive-deps
52
- }, [updateLocalParticipants, participants]);
53
- const deleteLocalParticipant = (0, _react.useCallback)(email => {
54
- if (!participants.find(participant => participant.username === email)) return;
55
- let newParticipants = participants.slice(0);
56
- newParticipants = newParticipants.filter(participant => participant.username !== email);
57
- setParticipants(newParticipants);
58
- }, [participants]);
59
- const deleteParticipant = (0, _react.useCallback)(email => {
60
- if (!participants.find(participant => participant.username === email)) return;
61
- _context.default.deleteParticipants(email).then(res => {
62
- let newParticipants = participants.slice(0);
63
- newParticipants = newParticipants.filter(participant => participant.username !== email);
64
- setParticipants(newParticipants);
65
- }).catch(error => {
66
- const errorMessage = (0, _commonUtils.getErrorMsg)(error);
67
- _toast.default.danger(t(errorMessage));
68
- });
69
- // eslint-disable-next-line react-hooks/exhaustive-deps
70
- }, [participants]);
71
- (0, _react.useEffect)(() => {
72
- if (isSdocRevision && isPublished) return;
73
- _context.default.listParticipants().then(res => {
74
- const participants = res.data.participant_list;
75
- updateLocalParticipants(participants);
76
- }).catch(error => {});
77
- // eslint-disable-next-line react-hooks/exhaustive-deps
78
- }, []);
79
- (0, _react.useEffect)(() => {
80
- const eventBus = _eventBus.default.getInstance();
81
- const unsubscribeParticipantAdded = eventBus.subscribe(_constants.INTERNAL_EVENT.PARTICIPANT_ADDED, updateLocalParticipants);
82
- const unsubscribeParticipantRemoved = eventBus.subscribe(_constants.INTERNAL_EVENT.PARTICIPANT_REMOVED, deleteLocalParticipant);
83
- return () => {
84
- unsubscribeParticipantAdded();
85
- unsubscribeParticipantRemoved();
86
- };
87
- }, [updateLocalParticipants, deleteLocalParticipant]);
88
- return /*#__PURE__*/_react.default.createElement(_useParticipants.ParticipantsContext.Provider, {
89
- value: {
90
- participants,
91
- addParticipants,
92
- deleteParticipant
93
- }
94
- }, children);
95
- };
96
- var _default = exports.default = ParticipantsProvider;
@@ -1,104 +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 _isHotkey = _interopRequireDefault(require("is-hotkey"));
13
- var _scrollIntoViewIfNeeded = _interopRequireDefault(require("scroll-into-view-if-needed"));
14
- var _constants = require("../constants");
15
- var _useCursors = require("../cursor/use-cursors");
16
- var _decorates = require("../decorates");
17
- var _extension = require("../extension");
18
- var _constants2 = require("../extension/constants");
19
- var _renderCommentEditorElement = _interopRequireDefault(require("../extension/render/render-comment-editor-element"));
20
- var _eventBus = _interopRequireDefault(require("../utils/event-bus"));
21
- var _eventHandler = _interopRequireDefault(require("../utils/event-handler"));
22
- const CommentArticle = _ref => {
23
- let {
24
- editor,
25
- slateValue,
26
- updateSlateValue,
27
- type
28
- } = _ref;
29
- const {
30
- cursors
31
- } = (0, _useCursors.useCursors)(editor);
32
- const decorate = (0, _decorates.usePipDecorate)(editor);
33
- // init eventHandler
34
- // eslint-disable-next-line react-hooks/exhaustive-deps
35
- const eventProxy = (0, _react.useMemo)(() => new _eventHandler.default(editor), []);
36
- const onMouseDown = (0, _react.useCallback)(event => {
37
- if (event.button === 0) {
38
- // Compatible with the editor which unload table plugin
39
- editor.reSetTableSelectedRange && editor.reSetTableSelectedRange();
40
- const eventBus = _eventBus.default.getInstance();
41
- eventBus.dispatch(_constants.INTERNAL_EVENT.CANCEL_TABLE_SELECT_RANGE);
42
- }
43
- // eslint-disable-next-line react-hooks/exhaustive-deps
44
- }, []);
45
- const handleScrollIntoView = (0, _react.useCallback)((editor, domRange) => {
46
- try {
47
- const {
48
- selection
49
- } = editor;
50
- // Do not scroll into view, when focus on image
51
- const [imageNodeEntry] = _slate.Editor.nodes(editor, {
52
- match: n => [_constants2.IMAGE, _constants2.IMAGE_BLOCK].includes(n.type),
53
- at: selection
54
- });
55
- if (imageNodeEntry) return;
56
- const focusedNode = _slate.Node.get(editor, selection.focus.path);
57
- const domNode = _slateReact.ReactEditor.toDOMNode(editor, focusedNode);
58
- if (!domNode) return;
59
- (0, _scrollIntoViewIfNeeded.default)(domNode, {
60
- 'scrollMode': 'if-needed'
61
- });
62
- } catch (error) {
63
- //
64
- }
65
- }, []);
66
- const onKeyDown = (0, _react.useCallback)(event => {
67
- if ((0, _isHotkey.default)('enter', event)) {
68
- event.preventDefault();
69
- const eventBus = _eventBus.default.getInstance();
70
- eventBus.dispatch(_constants.INTERNAL_EVENT.COMMENT_EDITOR_POST_COMMENT, event);
71
- return;
72
- }
73
- if ((0, _isHotkey.default)('shift+enter', event)) {
74
- event.preventDefault();
75
- _slate.Editor.insertBreak(editor);
76
- return;
77
- }
78
- eventProxy.onKeyDown(event);
79
- }, [eventProxy, editor]);
80
- return /*#__PURE__*/_react.default.createElement(_slateReact.Slate, {
81
- editor: editor,
82
- value: slateValue,
83
- onChange: updateSlateValue
84
- }, /*#__PURE__*/_react.default.createElement(_slateReact.Editable, {
85
- id: "sdoc-editor",
86
- scrollSelectionIntoView: handleScrollIntoView,
87
- cursors: cursors,
88
- renderElement: props => (0, _renderCommentEditorElement.default)({
89
- ...props,
90
- commentType: type
91
- }),
92
- renderLeaf: _extension.renderLeaf,
93
- onMouseDown: onMouseDown,
94
- decorate: decorate,
95
- onCut: eventProxy.onCut,
96
- onCopy: eventProxy.onCopy,
97
- onCompositionStart: eventProxy.onCompositionStart,
98
- onCompositionUpdate: eventProxy.onCompositionUpdate,
99
- onCompositionEnd: eventProxy.onCompositionEnd,
100
- onKeyDown: onKeyDown,
101
- onBeforeInput: eventProxy.onBeforeInput
102
- }));
103
- };
104
- var _default = exports.default = CommentArticle;
@@ -1,128 +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 _deepCopy = _interopRequireDefault(require("deep-copy"));
12
- var _fileLoading = _interopRequireDefault(require("../components/file-loading"));
13
- var _constants = require("../constants");
14
- var _context = _interopRequireDefault(require("../context"));
15
- var _extension = require("../extension");
16
- var _core = require("../extension/core");
17
- var _commentEditorToolbar = _interopRequireDefault(require("../extension/toolbar/comment-editor-toolbar"));
18
- var _useCollaborators = require("../hooks/use-collaborators");
19
- var _useScrollContext = require("../hooks/use-scroll-context");
20
- var _layout = require("../layout");
21
- var _nodeId = _interopRequireDefault(require("../node-id"));
22
- var _socket = require("../socket");
23
- var _commentArticle = _interopRequireDefault(require("./comment-article"));
24
- const SdocCommentEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
25
- let {
26
- editor: propsEditor,
27
- document,
28
- isReloading,
29
- type,
30
- onSubmit,
31
- submitBtnText,
32
- onCancel
33
- } = _ref;
34
- const [slateValue, setSlateValue] = (0, _react.useState)(document.elements);
35
- const commentEditorContainerRef = (0, _react.useRef)(null);
36
- const validEditor = (0, _react.useMemo)(() => {
37
- if (propsEditor) return propsEditor;
38
- const defaultEditor = (0, _extension.createCommentEditor)();
39
- const editorConfig = _context.default.getEditorConfig();
40
- const newEditor = (0, _nodeId.default)((0, _socket.withSocketIO)(defaultEditor, {
41
- document,
42
- config: editorConfig
43
- }));
44
- const {
45
- cursors
46
- } = document;
47
- newEditor.cursors = cursors || {};
48
- newEditor.width = _constants.COMMENT_EDITOR_EDIT_AREA_WIDTH; // default width
49
-
50
- return newEditor;
51
- // eslint-disable-next-line react-hooks/exhaustive-deps
52
- }, []);
53
-
54
- // useMount: focus editor
55
- (0, _react.useEffect)(() => {
56
- const [firstNode] = validEditor.children;
57
- if (firstNode) {
58
- const [firstNodeFirstChild] = firstNode.children;
59
- if (firstNodeFirstChild) {
60
- const endOfFirstNode = _slate.Editor.end(validEditor, [0, 0]);
61
- const range = {
62
- anchor: endOfFirstNode,
63
- focus: endOfFirstNode
64
- };
65
- (0, _core.focusEditor)(validEditor, range);
66
- }
67
- // Force refresh to fix comment list
68
- setSlateValue([...validEditor.children]);
69
- }
70
- // eslint-disable-next-line react-hooks/exhaustive-deps
71
- }, []);
72
-
73
- // The parent component can call the method of this component through ref
74
- (0, _react.useImperativeHandle)(ref, () => ({
75
- setSlateValue: document => {
76
- // Force update of editor's child elements
77
- validEditor.children = document.elements;
78
- setSlateValue([...document.elements]);
79
- },
80
- updateDocumentVersion: document => {
81
- validEditor.updateDocumentVersion(document);
82
- },
83
- // get value
84
- getSlateValue: () => {
85
- return (0, _deepCopy.default)({
86
- ...document,
87
- elements: slateValue
88
- });
89
- }
90
-
91
- // eslint-disable-next-line react-hooks/exhaustive-deps
92
- }), [document, validEditor, slateValue]);
93
- if (isReloading) {
94
- return /*#__PURE__*/_react.default.createElement("div", {
95
- className: "h-100 w-100 d-flex align-items-center justify-content-center"
96
- }, /*#__PURE__*/_react.default.createElement(_fileLoading.default, null));
97
- }
98
- const handleFocusEditor = e => {
99
- if (e.target === commentEditorContainerRef.current) {
100
- const focusPoint = _slate.Editor.end(validEditor, []);
101
- (0, _core.focusEditor)(validEditor, focusPoint);
102
- }
103
- };
104
- return /*#__PURE__*/_react.default.createElement(_layout.EditorContainer, {
105
- editor: validEditor
106
- }, /*#__PURE__*/_react.default.createElement(_useCollaborators.CollaboratorsProvider, null, /*#__PURE__*/_react.default.createElement("div", {
107
- className: "sdoc-comment-editor-wrapper"
108
- }, /*#__PURE__*/_react.default.createElement("div", {
109
- ref: commentEditorContainerRef,
110
- className: "article sdoc-comment-editor",
111
- onClick: handleFocusEditor
112
- }, /*#__PURE__*/_react.default.createElement(_useScrollContext.ScrollContext.Provider, {
113
- value: {
114
- scrollRef: commentEditorContainerRef
115
- }
116
- }, /*#__PURE__*/_react.default.createElement(_commentArticle.default, {
117
- type: type,
118
- editor: validEditor,
119
- slateValue: slateValue,
120
- updateSlateValue: setSlateValue
121
- }))), /*#__PURE__*/_react.default.createElement(_commentEditorToolbar.default, {
122
- editor: validEditor,
123
- onSubmit: onSubmit,
124
- submitBtnText: submitBtnText,
125
- onCancel: onCancel
126
- }))));
127
- });
128
- var _default = exports.default = SdocCommentEditor;
@@ -1,50 +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 _provider = _interopRequireDefault(require("../comment/provider"));
11
- var _constants = require("../constants");
12
- var _context = _interopRequireDefault(require("../context"));
13
- var _extension = require("../extension");
14
- var _nodeId = _interopRequireDefault(require("../node-id"));
15
- var _rightPanel = _interopRequireDefault(require("../right-panel"));
16
- var _socket = require("../socket");
17
- const SdocEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
18
- let {
19
- editor: propsEditor,
20
- document,
21
- isReloading,
22
- showComment,
23
- isShowHeaderToolbar = true,
24
- showOutline = true
25
- } = _ref;
26
- const validEditor = (0, _react.useMemo)(() => {
27
- if (propsEditor) return propsEditor;
28
- const defaultEditor = (0, _extension.createDefaultEditor)();
29
- const editorConfig = _context.default.getEditorConfig();
30
- const newEditor = (0, _nodeId.default)((0, _socket.withSocketIO)(defaultEditor, {
31
- document,
32
- config: editorConfig
33
- }));
34
- const {
35
- cursors
36
- } = document;
37
- newEditor.cursors = cursors || {};
38
- newEditor.width = _constants.PAGE_EDIT_AREA_WIDTH; // default width
39
- return newEditor;
40
-
41
- // eslint-disable-next-line react-hooks/exhaustive-deps
42
- }, []);
43
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_provider.default, {
44
- children: _rightPanel.default,
45
- editor: validEditor
46
- }, /*#__PURE__*/_react.default.createElement(_rightPanel.default, {
47
- editor: validEditor
48
- })));
49
- });
50
- var _default = exports.default = SdocEditor;
@@ -1,62 +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.useCollaborators = exports.CollaboratorsProvider = void 0;
9
- var _react = _interopRequireWildcard(require("react"));
10
- var _context = _interopRequireDefault(require("../context"));
11
- var _model = require("../model");
12
- const CollaboratorsContext = /*#__PURE__*/_react.default.createContext(null);
13
- const CollaboratorsProvider = _ref => {
14
- let {
15
- collaborators: propsCollaborators,
16
- children
17
- } = _ref;
18
- const isSdocRevision = _context.default.getSetting('isSdocRevision');
19
- const isPublished = _context.default.getSetting('isPublished');
20
- const [collaborators, setCollaborators] = (0, _react.useState)(propsCollaborators || []);
21
- (0, _react.useEffect)(() => {
22
- if (isSdocRevision && isPublished) return;
23
- if (propsCollaborators) return;
24
- _context.default.listRelatedUsers().then(res => {
25
- const collaborators = [];
26
- res.data.related_users.forEach(user => {
27
- const collaborator = new _model.User(user);
28
- collaborators.push(collaborator);
29
- });
30
- setCollaborators(collaborators);
31
- }).catch(error => {
32
- // eslint-disable-next-line
33
- console.log(error);
34
- });
35
-
36
- // eslint-disable-next-line react-hooks/exhaustive-deps
37
- }, []);
38
- (0, _react.useEffect)(() => {
39
- if (Array.isArray(propsCollaborators) && propsCollaborators.length > 0) {
40
- setCollaborators(propsCollaborators);
41
- }
42
- }, [propsCollaborators]);
43
- return /*#__PURE__*/_react.default.createElement(CollaboratorsContext.Provider, {
44
- value: {
45
- collaborators
46
- }
47
- }, children);
48
- };
49
- exports.CollaboratorsProvider = CollaboratorsProvider;
50
- const useCollaborators = () => {
51
- const context = (0, _react.useContext)(CollaboratorsContext);
52
- if (!context) {
53
- throw new Error('\'CollaboratorsContext\' is null');
54
- }
55
- const {
56
- collaborators
57
- } = context;
58
- return {
59
- collaborators
60
- };
61
- };
62
- exports.useCollaborators = useCollaborators;