@seafile/comment-editor 0.0.1-alpha.5 → 0.0.1-alpha.50
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.
- package/dist/_i18n/index.js +37 -0
- package/dist/basic-sdk/context.js +8 -21
- package/dist/basic-sdk/editor/comment-editor.js +16 -58
- package/dist/basic-sdk/extension/commons/color-menu/color-item.js +4 -2
- package/dist/basic-sdk/extension/commons/color-menu/index.js +4 -2
- package/dist/basic-sdk/extension/commons/select-file-dialog/local-files/index.js +4 -2
- package/dist/basic-sdk/extension/plugins/code-block/hover-menu/index.js +5 -3
- package/dist/basic-sdk/extension/plugins/file-link/hover-menu/index.js +5 -3
- package/dist/basic-sdk/extension/plugins/image/helpers.js +1 -1
- package/dist/basic-sdk/extension/plugins/image/hover-menu/index.js +4 -2
- package/dist/basic-sdk/extension/plugins/image/render-elem.js +5 -3
- package/dist/basic-sdk/extension/plugins/image/use-copy-image.js +1 -1
- package/dist/basic-sdk/extension/plugins/image/use-upload-image.js +1 -1
- package/dist/basic-sdk/extension/plugins/sdoc-link/hover-menu/index.js +4 -2
- package/dist/basic-sdk/extension/plugins/table/menu/color-selector-popover/color-item.js +4 -2
- package/dist/basic-sdk/extension/plugins/table/menu/table-menu/index.js +1 -2
- package/dist/basic-sdk/extension/plugins/text-align/menu/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/text-style/menu/comemnt-editor-menu.js +1 -2
- package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +4 -2
- package/dist/basic-sdk/extension/plugins/video/render-elem.js +1 -2
- package/dist/basic-sdk/extension/toolbar/comment-editor-toolbar/index.js +13 -9
- package/dist/basic-sdk/hooks/use-comment.js +24 -16
- package/dist/basic-sdk/model/index.js +1 -8
- package/dist/basic-sdk/socket/helpers.js +312 -0
- package/dist/components/error-boundary/error-page.js +4 -4
- package/dist/pages/seafile-comment-editor.js +39 -17
- package/package.json +6 -6
- package/dist/basic-sdk/layout/comment-layout/index.css +0 -15
- package/dist/basic-sdk/layout/comment-layout/index.js +0 -87
- package/dist/basic-sdk/layout/comment-layout/resize-width/index.css +0 -38
- package/dist/basic-sdk/layout/comment-layout/resize-width/index.js +0 -132
- package/dist/basic-sdk/layout/editor-container.js +0 -32
- package/dist/basic-sdk/layout/index.js +0 -13
- package/dist/basic-sdk/model/notification.js +0 -18
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getI18n = void 0;
|
|
8
|
+
var _reactI18next = require("react-i18next");
|
|
9
|
+
var _i18next = _interopRequireDefault(require("i18next"));
|
|
10
|
+
var _i18nextBrowserLanguagedetector = _interopRequireDefault(require("i18next-browser-languagedetector"));
|
|
11
|
+
var _i18nextHttpBackend = _interopRequireDefault(require("i18next-http-backend"));
|
|
12
|
+
const getI18n = _ref => {
|
|
13
|
+
let {
|
|
14
|
+
lang
|
|
15
|
+
} = _ref;
|
|
16
|
+
_i18next.default.use(_i18nextHttpBackend.default).use(_i18nextBrowserLanguagedetector.default).use(_reactI18next.initReactI18next).init({
|
|
17
|
+
lng: lang,
|
|
18
|
+
fallbackLng: 'en',
|
|
19
|
+
ns: ['sdoc-editor'],
|
|
20
|
+
defaultNS: 'sdoc-editor',
|
|
21
|
+
debug: false,
|
|
22
|
+
// console log if debug: true
|
|
23
|
+
|
|
24
|
+
whitelist: ['en', 'zh_CN', 'fr', 'de', 'cs', 'es', 'es-AR', 'es-MX', 'ru'],
|
|
25
|
+
backend: {
|
|
26
|
+
loadPath: '/public/locales/{{ lng }}/{{ ns }}.json'
|
|
27
|
+
},
|
|
28
|
+
interpolation: {
|
|
29
|
+
escapeValue: false // not needed for react!!
|
|
30
|
+
},
|
|
31
|
+
react: {
|
|
32
|
+
wait: true
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return _i18next.default;
|
|
36
|
+
};
|
|
37
|
+
exports.getI18n = getI18n;
|
|
@@ -11,12 +11,12 @@ var _sdocServerApi = _interopRequireDefault(require("./api/sdoc-server-api"));
|
|
|
11
11
|
var _seafileApi = _interopRequireDefault(require("./api/seafile-api"));
|
|
12
12
|
class Context {
|
|
13
13
|
constructor() {
|
|
14
|
-
(0, _defineProperty2.default)(this, "initSettings",
|
|
15
|
-
this.settings = window.seafile ? window.seafile : window.seafileConfig;
|
|
14
|
+
(0, _defineProperty2.default)(this, "initSettings", settings => {
|
|
15
|
+
this.settings = settings ? settings : window.seafile ? window.seafile : window.seafileConfig;
|
|
16
16
|
const {
|
|
17
|
-
name,
|
|
18
|
-
username,
|
|
19
|
-
avatarURL
|
|
17
|
+
name = '',
|
|
18
|
+
username = '',
|
|
19
|
+
avatarURL = ''
|
|
20
20
|
} = this.settings;
|
|
21
21
|
const userInfo = {
|
|
22
22
|
name,
|
|
@@ -24,13 +24,6 @@ class Context {
|
|
|
24
24
|
avatar_url: avatarURL
|
|
25
25
|
};
|
|
26
26
|
this.user = userInfo;
|
|
27
|
-
if (this.settings['isSdocRevision']) {
|
|
28
|
-
const repoID = this.getSetting('repoID');
|
|
29
|
-
const siteRoot = this.getSetting('siteRoot');
|
|
30
|
-
const originFilePath = this.getSetting('originFilePath');
|
|
31
|
-
const originFileURL = `${siteRoot}lib/${repoID}/file${originFilePath}`;
|
|
32
|
-
this.settings['originFileURL'] = originFileURL;
|
|
33
|
-
}
|
|
34
27
|
});
|
|
35
28
|
(0, _defineProperty2.default)(this, "uploadLocalImage", imageFiles => {
|
|
36
29
|
const docUuid = this.getSetting('docUuid');
|
|
@@ -55,15 +48,9 @@ class Context {
|
|
|
55
48
|
this.api = null;
|
|
56
49
|
this.config = null;
|
|
57
50
|
}
|
|
58
|
-
init() {
|
|
59
|
-
this.initSettings();
|
|
60
|
-
|
|
61
|
-
// const token = this.getSetting('accessToken');
|
|
62
|
-
// this.api = new SeafileAPI(server, token);
|
|
63
|
-
// const isOpenSocket = this.getSetting('isOpenSocket');
|
|
64
|
-
// if (isOpenSocket) {
|
|
65
|
-
// this.sdocServerApi = new SDocServerApi(this.settings);
|
|
66
|
-
// }
|
|
51
|
+
init(settings, api) {
|
|
52
|
+
this.initSettings(settings);
|
|
53
|
+
this.api = api;
|
|
67
54
|
}
|
|
68
55
|
getSettings() {
|
|
69
56
|
return this.settings;
|
|
@@ -14,17 +14,16 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
14
14
|
var _isHotkey = _interopRequireDefault(require("is-hotkey"));
|
|
15
15
|
var _scrollIntoViewIfNeeded = _interopRequireDefault(require("scroll-into-view-if-needed"));
|
|
16
16
|
var _constants = require("../constants");
|
|
17
|
-
var _context = _interopRequireDefault(require("../context"));
|
|
18
17
|
var _useCursors = require("../cursor/use-cursors");
|
|
19
18
|
var _decorates = require("../decorates");
|
|
20
19
|
var _extension = require("../extension");
|
|
20
|
+
var _insertElementDialog = _interopRequireDefault(require("../extension/commons/insert-element-dialog"));
|
|
21
21
|
var _constants2 = require("../extension/constants");
|
|
22
22
|
var _core = require("../extension/core");
|
|
23
23
|
var _renderCommentEditorElement = _interopRequireDefault(require("../extension/render/render-comment-editor-element"));
|
|
24
24
|
var _commentEditorToolbar = _interopRequireDefault(require("../extension/toolbar/comment-editor-toolbar"));
|
|
25
25
|
var _useComment = require("../hooks/use-comment");
|
|
26
26
|
var _useScrollContext = require("../hooks/use-scroll-context");
|
|
27
|
-
var _layout = require("../layout");
|
|
28
27
|
var _nodeId = _interopRequireDefault(require("../node-id"));
|
|
29
28
|
var _mdToSlate = _interopRequireDefault(require("../slate-convert/md-to-slate"));
|
|
30
29
|
var _slateToMd = _interopRequireDefault(require("../slate-convert/slate-to-md"));
|
|
@@ -38,29 +37,26 @@ const getSubmitTip = (type, content) => {
|
|
|
38
37
|
const DEFAULT_PLACEHOLDER = 'Enter_comment_shift_enter_for_new_line_Enter_to_send';
|
|
39
38
|
const CommentEditor = _ref => {
|
|
40
39
|
let {
|
|
41
|
-
type,
|
|
42
40
|
content,
|
|
43
|
-
commentContent,
|
|
44
41
|
placeholder = DEFAULT_PLACEHOLDER,
|
|
45
42
|
insertContent,
|
|
46
|
-
|
|
47
|
-
setIsEditing,
|
|
43
|
+
onContentChange,
|
|
48
44
|
hiddenComment,
|
|
49
45
|
hiddenUserInfo,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
closeComment
|
|
46
|
+
toolMenus = ['text_style', _constants2.BLOCKQUOTE, _constants2.UNORDERED_LIST, _constants2.ORDERED_LIST, _constants2.LINK, _constants2.IMAGE],
|
|
47
|
+
closePanel
|
|
53
48
|
} = _ref;
|
|
54
49
|
const commentWrapperRef = (0, _react.useRef)();
|
|
55
50
|
const {
|
|
56
51
|
t
|
|
57
52
|
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
58
53
|
const {
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
className,
|
|
55
|
+
userInfo,
|
|
56
|
+
type,
|
|
57
|
+
addParticipants
|
|
61
58
|
} = (0, _useComment.useComment)();
|
|
62
59
|
const submitTip = (0, _react.useMemo)(() => getSubmitTip(type, content), [content, type]);
|
|
63
|
-
const userInfo = _context.default.getUserInfo();
|
|
64
60
|
const document = (0, _react.useMemo)(() => {
|
|
65
61
|
const cursor = {};
|
|
66
62
|
let elements = null;
|
|
@@ -92,23 +88,19 @@ const CommentEditor = _ref => {
|
|
|
92
88
|
// init eventHandler
|
|
93
89
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
94
90
|
const eventProxy = (0, _react.useMemo)(() => new _eventHandler.default(editor), []);
|
|
95
|
-
const updateValue = (0, _react.useCallback)(value => {
|
|
96
|
-
if (!value || value.trim() === '') return;
|
|
97
|
-
if (!content) return insertContent(value);
|
|
98
|
-
updateContent && updateContent(value);
|
|
99
|
-
}, [content, insertContent, updateContent]);
|
|
100
91
|
const onSubmit = (0, _react.useCallback)(event => {
|
|
101
92
|
event && event.stopPropagation();
|
|
102
93
|
const mdString = (0, _slateToMd.default)(editor.children);
|
|
103
|
-
|
|
104
|
-
addParticipants(userInfo.username);
|
|
94
|
+
if (mdString && mdString.trim()) insertContent(mdString);
|
|
95
|
+
addParticipants && addParticipants(userInfo.username);
|
|
105
96
|
editor.children = [(0, _core.generateEmptyElement)(_constants2.PARAGRAPH, {
|
|
106
97
|
placeholder
|
|
107
98
|
})];
|
|
108
99
|
_slate.Transforms.select(editor, _slate.Editor.start(editor, []));
|
|
109
100
|
onContentChange && onContentChange(null);
|
|
110
|
-
|
|
111
|
-
|
|
101
|
+
closePanel && closePanel();
|
|
102
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
103
|
+
}, [editor, insertContent, addParticipants, placeholder, onContentChange, closePanel]);
|
|
112
104
|
const onSubmitByEnterKey = (0, _react.useCallback)(event => {
|
|
113
105
|
if (!_slateReact.ReactEditor.isFocused(editor)) return;
|
|
114
106
|
onSubmit(event);
|
|
@@ -140,7 +132,6 @@ const CommentEditor = _ref => {
|
|
|
140
132
|
const isPreventCancel = isClickOnListContainer || isClickOnCommentEditorContainer || isClickResizeContainer || isSdocContentWrapper;
|
|
141
133
|
if (isPreventCancel) return;
|
|
142
134
|
}
|
|
143
|
-
setIsEditing && setIsEditing(false);
|
|
144
135
|
hiddenComment && hiddenComment(false);
|
|
145
136
|
if (onContentChange) {
|
|
146
137
|
if (editor.children.find(n => _slate.Node.string(n).trim())) {
|
|
@@ -150,17 +141,14 @@ const CommentEditor = _ref => {
|
|
|
150
141
|
}
|
|
151
142
|
}
|
|
152
143
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
153
|
-
}, [
|
|
144
|
+
}, []);
|
|
154
145
|
|
|
155
146
|
// set editor children
|
|
156
147
|
(0, _react.useEffect)(() => {
|
|
157
148
|
let children = (0, _mdToSlate.default)(content);
|
|
158
|
-
if (commentContent) {
|
|
159
|
-
children = (0, _mdToSlate.default)(commentContent);
|
|
160
|
-
}
|
|
161
149
|
editor.children = children;
|
|
162
150
|
_slate.Transforms.select(editor, _slate.Editor.end(editor, []));
|
|
163
|
-
}, [editor, content
|
|
151
|
+
}, [editor, content]);
|
|
164
152
|
|
|
165
153
|
// useMount: focus editor
|
|
166
154
|
(0, _react.useEffect)(() => {
|
|
@@ -230,6 +218,7 @@ const CommentEditor = _ref => {
|
|
|
230
218
|
}
|
|
231
219
|
eventProxy.onKeyDown(event);
|
|
232
220
|
}, [eventProxy, editor]);
|
|
221
|
+
console.log('toolMenus', toolMenus);
|
|
233
222
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
234
223
|
className: (0, _classnames.default)('comment-editor-wrapper', className),
|
|
235
224
|
ref: commentWrapperRef
|
|
@@ -252,37 +241,6 @@ const CommentEditor = _ref => {
|
|
|
252
241
|
ref: commentEditorContainerRef,
|
|
253
242
|
className: "article comment-editor",
|
|
254
243
|
onClick: handleFocusEditor
|
|
255
|
-
}, /*#__PURE__*/_react.default.createElement(_useScrollContext.ScrollContext.Provider, {
|
|
256
|
-
value: {
|
|
257
|
-
scrollRef: commentEditorContainerRef
|
|
258
|
-
}
|
|
259
|
-
}, /*#__PURE__*/_react.default.createElement(_slateReact.Slate, {
|
|
260
|
-
editor: editor,
|
|
261
|
-
value: slateValue,
|
|
262
|
-
onChange: setSlateValue
|
|
263
|
-
}, /*#__PURE__*/_react.default.createElement(_slateReact.Editable, {
|
|
264
|
-
id: "sdoc-editor",
|
|
265
|
-
scrollSelectionIntoView: handleScrollIntoView,
|
|
266
|
-
cursors: cursors,
|
|
267
|
-
renderElement: props => (0, _renderCommentEditorElement.default)({
|
|
268
|
-
...props,
|
|
269
|
-
commentType: type
|
|
270
|
-
}),
|
|
271
|
-
renderLeaf: _extension.renderLeaf,
|
|
272
|
-
onMouseDown: onMouseDown,
|
|
273
|
-
decorate: decorate,
|
|
274
|
-
onCut: eventProxy.onCut,
|
|
275
|
-
onCopy: eventProxy.onCopy,
|
|
276
|
-
onCompositionStart: eventProxy.onCompositionStart,
|
|
277
|
-
onCompositionUpdate: eventProxy.onCompositionUpdate,
|
|
278
|
-
onCompositionEnd: eventProxy.onCompositionEnd,
|
|
279
|
-
onKeyDown: onKeyDown,
|
|
280
|
-
onBeforeInput: eventProxy.onBeforeInput
|
|
281
|
-
})))), /*#__PURE__*/_react.default.createElement(_commentEditorToolbar.default, {
|
|
282
|
-
editor: editor,
|
|
283
|
-
onSubmit: onSubmit,
|
|
284
|
-
submitBtnText: t(submitTip),
|
|
285
|
-
onCancel: onCancel
|
|
286
244
|
}))));
|
|
287
245
|
};
|
|
288
246
|
var _default = exports.default = CommentEditor;
|
|
@@ -10,10 +10,12 @@ var _reactI18next = require("react-i18next");
|
|
|
10
10
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
11
|
const ColorItem = _ref => {
|
|
12
12
|
let {
|
|
13
|
-
t,
|
|
14
13
|
color,
|
|
15
14
|
lastUsedColor
|
|
16
15
|
} = _ref;
|
|
16
|
+
const {
|
|
17
|
+
t
|
|
18
|
+
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
17
19
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
18
20
|
className: (0, _classnames.default)('sdoc-color-item', {
|
|
19
21
|
'selected': lastUsedColor === color.value
|
|
@@ -28,4 +30,4 @@ const ColorItem = _ref => {
|
|
|
28
30
|
}) : t(color.name)
|
|
29
31
|
});
|
|
30
32
|
};
|
|
31
|
-
var _default = exports.default =
|
|
33
|
+
var _default = exports.default = ColorItem;
|
|
@@ -26,7 +26,6 @@ const ColorMenu = _ref => {
|
|
|
26
26
|
id,
|
|
27
27
|
popoverClassName,
|
|
28
28
|
disabled,
|
|
29
|
-
t,
|
|
30
29
|
setColor,
|
|
31
30
|
recentUsedColorsKey,
|
|
32
31
|
text,
|
|
@@ -35,6 +34,9 @@ const ColorMenu = _ref => {
|
|
|
35
34
|
lastUsedColor,
|
|
36
35
|
updateLastUsedColor
|
|
37
36
|
} = _ref;
|
|
37
|
+
const {
|
|
38
|
+
t
|
|
39
|
+
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
38
40
|
const popoverRef = (0, _react.useRef)(null);
|
|
39
41
|
const moreColorsPopoverRef = (0, _react.useRef)(null);
|
|
40
42
|
const [recentUsedColors, setRecentUsedColors] = (0, _react.useState)(_localStorageUtils.default.getItem(recentUsedColorsKey, _constants.DEFAULT_RECENT_USED_LIST));
|
|
@@ -205,4 +207,4 @@ const ColorMenu = _ref => {
|
|
|
205
207
|
onChange: onChange
|
|
206
208
|
}))))));
|
|
207
209
|
};
|
|
208
|
-
var _default = exports.default =
|
|
210
|
+
var _default = exports.default = ColorMenu;
|
|
@@ -20,10 +20,12 @@ const LocalFiles = _ref => {
|
|
|
20
20
|
onSelectedFile,
|
|
21
21
|
toggle,
|
|
22
22
|
fileType,
|
|
23
|
-
t,
|
|
24
23
|
searchContent,
|
|
25
24
|
isOpenSearch
|
|
26
25
|
} = _ref;
|
|
26
|
+
const {
|
|
27
|
+
t
|
|
28
|
+
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
27
29
|
const folderRef = (0, _react.useRef)(null);
|
|
28
30
|
const [expandedFolder, setExpandedFolder] = (0, _react.useState)(new Set([]));
|
|
29
31
|
const [currentActiveItem, setCurrentActiveItem] = (0, _react.useState)(null);
|
|
@@ -188,4 +190,4 @@ const LocalFiles = _ref => {
|
|
|
188
190
|
className: "sdoc-file-search-no-result"
|
|
189
191
|
}, t('No_results')));
|
|
190
192
|
};
|
|
191
|
-
var _default = exports.default =
|
|
193
|
+
var _default = exports.default = LocalFiles;
|
|
@@ -55,9 +55,11 @@ const CodeBlockHoverMenu = _ref2 => {
|
|
|
55
55
|
onChangeLanguage,
|
|
56
56
|
onChangeAutoLineWrap,
|
|
57
57
|
onCopyCodeBlock,
|
|
58
|
-
onDeleteCodeBlock
|
|
59
|
-
t
|
|
58
|
+
onDeleteCodeBlock
|
|
60
59
|
} = _ref2;
|
|
60
|
+
const {
|
|
61
|
+
t
|
|
62
|
+
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
61
63
|
const {
|
|
62
64
|
white_space = 'nowrap'
|
|
63
65
|
} = style;
|
|
@@ -254,4 +256,4 @@ const CodeBlockHoverMenu = _ref2 => {
|
|
|
254
256
|
ref: langRefs
|
|
255
257
|
})))));
|
|
256
258
|
};
|
|
257
|
-
var _default = exports.default =
|
|
259
|
+
var _default = exports.default = CodeBlockHoverMenu;
|
|
@@ -24,9 +24,11 @@ const FileLinkHoverMenu = _ref => {
|
|
|
24
24
|
menuPosition,
|
|
25
25
|
element,
|
|
26
26
|
onUnwrapFileLinkNode,
|
|
27
|
-
onHideInsertHoverMenu
|
|
28
|
-
t
|
|
27
|
+
onHideInsertHoverMenu
|
|
29
28
|
} = _ref;
|
|
29
|
+
const {
|
|
30
|
+
t
|
|
31
|
+
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
30
32
|
const readOnly = (0, _slateReact.useReadOnly)();
|
|
31
33
|
const [isShowDisplayStylePopover, setIsShowDisplayStylePopover] = (0, _react.useState)(false);
|
|
32
34
|
const onCopy = (0, _react.useCallback)(e => {
|
|
@@ -117,4 +119,4 @@ const FileLinkHoverMenu = _ref => {
|
|
|
117
119
|
}));
|
|
118
120
|
}))));
|
|
119
121
|
};
|
|
120
|
-
var _default = exports.default =
|
|
122
|
+
var _default = exports.default = FileLinkHoverMenu;
|
|
@@ -291,7 +291,7 @@ const handleBase64Image = (editor, path, imgData) => {
|
|
|
291
291
|
const file = new File([blob], `${_slugid.default.nice()}.jpg`, {
|
|
292
292
|
type: unit8Array.mime
|
|
293
293
|
});
|
|
294
|
-
_context.default.uploadLocalImage([file]).then(res => {
|
|
294
|
+
_context.default.api.uploadLocalImage([file]).then(res => {
|
|
295
295
|
const _data = {
|
|
296
296
|
...imgData,
|
|
297
297
|
src: res[0]
|
|
@@ -27,9 +27,11 @@ const ImageHoverMenu = _ref => {
|
|
|
27
27
|
parentNodeEntry,
|
|
28
28
|
imageCaptionInputRef,
|
|
29
29
|
onHideImageHoverMenu,
|
|
30
|
-
t,
|
|
31
30
|
readonly
|
|
32
31
|
} = _ref;
|
|
32
|
+
const {
|
|
33
|
+
t
|
|
34
|
+
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
33
35
|
const {
|
|
34
36
|
data,
|
|
35
37
|
border_type = _constants2.IMAGE_BORDER_TYPE[0].type
|
|
@@ -299,4 +301,4 @@ const ImageHoverMenu = _ref => {
|
|
|
299
301
|
}
|
|
300
302
|
})));
|
|
301
303
|
};
|
|
302
|
-
var _default = exports.default =
|
|
304
|
+
var _default = exports.default = ImageHoverMenu;
|
|
@@ -33,9 +33,11 @@ const Image = _ref => {
|
|
|
33
33
|
className,
|
|
34
34
|
attributes,
|
|
35
35
|
children,
|
|
36
|
-
isSelected
|
|
37
|
-
t
|
|
36
|
+
isSelected
|
|
38
37
|
} = _ref;
|
|
38
|
+
const {
|
|
39
|
+
t
|
|
40
|
+
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
39
41
|
const {
|
|
40
42
|
data,
|
|
41
43
|
border_type = _constants3.IMAGE_BORDER_TYPE[0].type
|
|
@@ -348,7 +350,7 @@ const Image = _ref => {
|
|
|
348
350
|
}
|
|
349
351
|
})));
|
|
350
352
|
};
|
|
351
|
-
const SdocImage =
|
|
353
|
+
const SdocImage = Image;
|
|
352
354
|
function renderImage(props, editor) {
|
|
353
355
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
354
356
|
const isSelected = (0, _slateReact.useSelected)();
|
|
@@ -51,7 +51,7 @@ const useCopyImage = _ref => {
|
|
|
51
51
|
const file = new File([blob], 'downloaded_image.png', {
|
|
52
52
|
type: blob.type
|
|
53
53
|
});
|
|
54
|
-
const imageUrl = await _context.default.uploadLocalImage([file]);
|
|
54
|
+
const imageUrl = await _context.default.api.uploadLocalImage([file]);
|
|
55
55
|
if (imageUrl && imageUrl[0]) {
|
|
56
56
|
updateImageNode(editor, element, imageUrl[0]);
|
|
57
57
|
}
|
|
@@ -42,7 +42,7 @@ const useUploadImage = _ref => {
|
|
|
42
42
|
const uploadCurrentImage = async () => {
|
|
43
43
|
try {
|
|
44
44
|
const fileItem = _imageCache.default.getImage(file_uuid);
|
|
45
|
-
const imageUrl = await _context.default.uploadLocalImage([fileItem]);
|
|
45
|
+
const imageUrl = await _context.default.api.uploadLocalImage([fileItem]);
|
|
46
46
|
if (imageUrl && imageUrl[0]) {
|
|
47
47
|
updateImageNode(editor, element, imageUrl[0]);
|
|
48
48
|
}
|
|
@@ -25,9 +25,11 @@ const SdocLinkHoverMenu = _ref => {
|
|
|
25
25
|
element,
|
|
26
26
|
onUnwrapFileLinkNode,
|
|
27
27
|
onHideInsertHoverMenu,
|
|
28
|
-
t,
|
|
29
28
|
url
|
|
30
29
|
} = _ref;
|
|
30
|
+
const {
|
|
31
|
+
t
|
|
32
|
+
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
31
33
|
const readOnly = (0, _slateReact.useReadOnly)();
|
|
32
34
|
const [isShowDisplayStylePopover, setIsShowDisplayStylePopover] = (0, _react.useState)(false);
|
|
33
35
|
const onCopy = (0, _react.useCallback)(e => {
|
|
@@ -116,4 +118,4 @@ const SdocLinkHoverMenu = _ref => {
|
|
|
116
118
|
}));
|
|
117
119
|
}))));
|
|
118
120
|
};
|
|
119
|
-
var _default = exports.default =
|
|
121
|
+
var _default = exports.default = SdocLinkHoverMenu;
|
|
@@ -10,10 +10,12 @@ var _reactI18next = require("react-i18next");
|
|
|
10
10
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
11
|
const ColorItem = _ref => {
|
|
12
12
|
let {
|
|
13
|
-
t,
|
|
14
13
|
color,
|
|
15
14
|
lastUsedColor
|
|
16
15
|
} = _ref;
|
|
16
|
+
const {
|
|
17
|
+
t
|
|
18
|
+
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
17
19
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
18
20
|
className: (0, _classnames.default)('sdoc-color-item', {
|
|
19
21
|
'selected': lastUsedColor === color.value
|
|
@@ -28,4 +30,4 @@ const ColorItem = _ref => {
|
|
|
28
30
|
}) : t(color.name)
|
|
29
31
|
});
|
|
30
32
|
};
|
|
31
|
-
var _default = exports.default =
|
|
33
|
+
var _default = exports.default = ColorItem;
|
|
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
-
var _reactI18next = require("react-i18next");
|
|
11
10
|
var _dropdownMenuItem = _interopRequireDefault(require("../../../../commons/dropdown-menu-item"));
|
|
12
11
|
var _constants = require("../../../../constants");
|
|
13
12
|
var _helpers = require("../../helpers");
|
|
@@ -38,4 +37,4 @@ const TableMenu = _ref => {
|
|
|
38
37
|
createTable: createTable
|
|
39
38
|
}));
|
|
40
39
|
};
|
|
41
|
-
var _default = exports.default =
|
|
40
|
+
var _default = exports.default = TableMenu;
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
var _reactI18next = require("react-i18next");
|
|
10
9
|
var _commons = require("../../../commons");
|
|
11
10
|
var _constants = require("../../../constants");
|
|
12
11
|
var _menusConfig = require("../../../constants/menus-config");
|
|
@@ -69,4 +68,4 @@ const CommentEditorTextStyleMenuList = _ref => {
|
|
|
69
68
|
key: index
|
|
70
69
|
}, itemProps))));
|
|
71
70
|
};
|
|
72
|
-
var _default = exports.default =
|
|
71
|
+
var _default = exports.default = CommentEditorTextStyleMenuList;
|
|
@@ -25,12 +25,14 @@ var _helpers3 = require("../helpers");
|
|
|
25
25
|
const TextStyleMenuList = _ref => {
|
|
26
26
|
let {
|
|
27
27
|
editor,
|
|
28
|
-
t,
|
|
29
28
|
isRichEditor,
|
|
30
29
|
className,
|
|
31
30
|
idPrefix,
|
|
32
31
|
readonly
|
|
33
32
|
} = _ref;
|
|
33
|
+
const {
|
|
34
|
+
t
|
|
35
|
+
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
34
36
|
let selectedFontSize = (0, _helpers.getFontSize)(editor);
|
|
35
37
|
let selectedFontSizeValue = selectedFontSize;
|
|
36
38
|
const enableSeafileAI = _context.default.getSetting('enableSeafileAI');
|
|
@@ -159,4 +161,4 @@ const TextStyleMenuList = _ref => {
|
|
|
159
161
|
isRichEditor: isRichEditor
|
|
160
162
|
}));
|
|
161
163
|
};
|
|
162
|
-
var _default = exports.default =
|
|
164
|
+
var _default = exports.default = TextStyleMenuList;
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.renderVideo = renderVideo;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
var _reactI18next = require("react-i18next");
|
|
10
9
|
var _slate = require("@seafile/slate");
|
|
11
10
|
var _slateReact = require("@seafile/slate-react");
|
|
12
11
|
var _helpers = require("./helpers");
|
|
@@ -128,7 +127,7 @@ const Video = _ref => {
|
|
|
128
127
|
}
|
|
129
128
|
}))));
|
|
130
129
|
};
|
|
131
|
-
const SdocVideo =
|
|
130
|
+
const SdocVideo = Video;
|
|
132
131
|
function renderVideo(props, editor) {
|
|
133
132
|
const {
|
|
134
133
|
element,
|
|
@@ -22,33 +22,37 @@ const CommentEditorToolbar = _ref => {
|
|
|
22
22
|
readonly = false,
|
|
23
23
|
onSubmit,
|
|
24
24
|
submitBtnText,
|
|
25
|
-
onCancel
|
|
25
|
+
onCancel,
|
|
26
|
+
toolMenus
|
|
26
27
|
} = _ref;
|
|
27
28
|
(0, _useSelectionUpdate.default)();
|
|
28
29
|
const eventBus = _eventBus.default.getInstance();
|
|
29
30
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
30
|
-
className: "comment-editor-toolbar"
|
|
31
|
-
|
|
31
|
+
className: "comment-editor-toolbar",
|
|
32
|
+
style: {
|
|
33
|
+
justifyContent: toolMenus.length === 0 ? 'end' : ''
|
|
34
|
+
}
|
|
35
|
+
}, toolMenus.length !== 0 && /*#__PURE__*/_react.default.createElement(_commons.MenuGroup, {
|
|
32
36
|
className: "menu-group comment-editor-menu-group"
|
|
33
|
-
}, /*#__PURE__*/_react.default.createElement(_comemntEditorMenu.default, {
|
|
37
|
+
}, toolMenus.includes('text_style') && /*#__PURE__*/_react.default.createElement(_comemntEditorMenu.default, {
|
|
34
38
|
editor: editor,
|
|
35
39
|
readonly: readonly
|
|
36
|
-
}), /*#__PURE__*/_react.default.createElement(_menu.default, {
|
|
40
|
+
}), toolMenus.includes(_constants.BLOCKQUOTE) && /*#__PURE__*/_react.default.createElement(_menu.default, {
|
|
37
41
|
editor: editor,
|
|
38
42
|
readonly: readonly
|
|
39
|
-
}), /*#__PURE__*/_react.default.createElement(_menu4.default, {
|
|
43
|
+
}), toolMenus.includes(_constants.UNORDERED_LIST) && /*#__PURE__*/_react.default.createElement(_menu4.default, {
|
|
40
44
|
editor: editor,
|
|
41
45
|
type: _constants.UNORDERED_LIST,
|
|
42
46
|
readonly: readonly
|
|
43
|
-
}), /*#__PURE__*/_react.default.createElement(_menu4.default, {
|
|
47
|
+
}), toolMenus.includes(_constants.ORDERED_LIST) && /*#__PURE__*/_react.default.createElement(_menu4.default, {
|
|
44
48
|
editor: editor,
|
|
45
49
|
type: _constants.ORDERED_LIST,
|
|
46
50
|
readonly: readonly
|
|
47
|
-
}), /*#__PURE__*/_react.default.createElement(_menu3.default, {
|
|
51
|
+
}), toolMenus.includes(_constants.LINK) && /*#__PURE__*/_react.default.createElement(_menu3.default, {
|
|
48
52
|
editor: editor,
|
|
49
53
|
readonly: readonly,
|
|
50
54
|
eventBus: eventBus
|
|
51
|
-
}), /*#__PURE__*/_react.default.createElement(_menu2.default, {
|
|
55
|
+
}), toolMenus.includes(_constants.IMAGE) && /*#__PURE__*/_react.default.createElement(_menu2.default, {
|
|
52
56
|
editor: editor,
|
|
53
57
|
readonly: readonly,
|
|
54
58
|
eventBus: eventBus
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
3
4
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.useComment = exports.CommentProvider = void 0;
|
|
8
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
var
|
|
10
|
+
var _context = _interopRequireDefault(require("../context"));
|
|
11
|
+
var _model = require("../model");
|
|
10
12
|
require("../assets/css/layout.css");
|
|
11
13
|
require("../assets/css/default.css");
|
|
12
14
|
require("../assets/css/sdoc-editor-article.css");
|
|
@@ -17,30 +19,36 @@ const CommentContext = /*#__PURE__*/_react.default.createContext(null);
|
|
|
17
19
|
const CommentProvider = _ref => {
|
|
18
20
|
let {
|
|
19
21
|
children,
|
|
20
|
-
|
|
22
|
+
type,
|
|
23
|
+
// comment or replay
|
|
21
24
|
className = '',
|
|
25
|
+
pluginName = '',
|
|
26
|
+
// sdoc or wiki or txt ...
|
|
22
27
|
pluginEventBus,
|
|
23
28
|
pluginEvent,
|
|
24
|
-
|
|
29
|
+
collaborators = [],
|
|
30
|
+
participants = [],
|
|
31
|
+
addParticipants
|
|
25
32
|
} = _ref;
|
|
26
|
-
const {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35
|
-
}, []);
|
|
33
|
+
const getCollaborators = (0, _react.useCallback)(() => {
|
|
34
|
+
const newCollaborators = collaborators.map(user => new _model.User(user));
|
|
35
|
+
return newCollaborators;
|
|
36
|
+
}, [collaborators]);
|
|
37
|
+
const getParticipants = (0, _react.useCallback)(() => {
|
|
38
|
+
const newParticipants = participants.map(user => new _model.User(user));
|
|
39
|
+
return newParticipants;
|
|
40
|
+
}, [participants]);
|
|
36
41
|
return /*#__PURE__*/_react.default.createElement(CommentContext.Provider, {
|
|
37
42
|
value: {
|
|
38
|
-
|
|
43
|
+
type,
|
|
44
|
+
userInfo: _context.default.getUserInfo(),
|
|
39
45
|
className,
|
|
40
|
-
|
|
46
|
+
pluginName,
|
|
41
47
|
pluginEventBus,
|
|
42
48
|
pluginEvent,
|
|
43
|
-
collaborators
|
|
49
|
+
collaborators: getCollaborators(),
|
|
50
|
+
participants: getParticipants(),
|
|
51
|
+
addParticipants
|
|
44
52
|
}
|
|
45
53
|
}, children);
|
|
46
54
|
};
|