@seafile/sdoc-editor 3.0.166 → 3.0.168

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.
@@ -340,6 +340,28 @@ var SeafileAPI = /*#__PURE__*/function () {
340
340
 
341
341
  return this.req.post(url, form);
342
342
  }
343
+ }, {
344
+ key: "listLinkedRepoDir",
345
+ value: function listLinkedRepoDir(docUuid, wikiId, linkedRepoId, dirPath) {
346
+ var url = "/api/v2.1/wiki2/".concat(wikiId, "/linked-repos/").concat(linkedRepoId, "/dir/");
347
+ return this.req.get(url, {
348
+ params: {
349
+ p: dirPath,
350
+ file_uuid: docUuid
351
+ }
352
+ });
353
+ }
354
+ }, {
355
+ key: "getLinkedRepoFileId",
356
+ value: function getLinkedRepoFileId(docUuid, wikiId, linkedRepoId, p) {
357
+ var url = "/api/v2.1/wiki2/".concat(wikiId, "/linked-repos/").concat(linkedRepoId, "/file-uuid/");
358
+ return this.req.get(url, {
359
+ params: {
360
+ p: p,
361
+ file_uuid: docUuid
362
+ }
363
+ });
364
+ }
343
365
  }]);
344
366
  }();
345
367
  var _default = exports["default"] = SeafileAPI;
@@ -234,7 +234,7 @@ var CommentList = function CommentList(_ref) {
234
234
  settings: (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, _context2["default"].getSettings()), {}, {
235
235
  mediaUrl: _context2["default"].getSetting('mediaUrl') + 'comment-editor/'
236
236
  }),
237
- placeholder: 'Enter_reply_shift_Enter_for_new_line_Enter_to_send',
237
+ placeholder: 'shift_enter_for_new_line_Enter_to_send',
238
238
  addParticipants: addParticipants,
239
239
  participants: participants,
240
240
  collaborators: collaborators,
@@ -281,7 +281,7 @@ var CommentList = function CommentList(_ref) {
281
281
  settings: (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, _context2["default"].getSettings()), {}, {
282
282
  mediaUrl: _context2["default"].getSetting('mediaUrl') + 'comment-editor/'
283
283
  }),
284
- placeholder: 'Enter_reply_shift_Enter_for_new_line_Enter_to_send',
284
+ placeholder: 'shift_enter_for_new_line_Enter_to_send',
285
285
  addParticipants: addParticipants,
286
286
  participants: participants,
287
287
  collaborators: collaborators,
@@ -172,7 +172,7 @@ var GlobalComment = function GlobalComment(_ref) {
172
172
  setActiveCommentGroup(null);
173
173
  }
174
174
  }, [commentList, deleteUnseenNotifications]);
175
- var commentEditorPlaceholder = !activeCommentGroup ? t('Enter_comment_shift_enter_for_new_line_Enter_to_send') : t('Enter_reply_shift_Enter_for_new_line_Enter_to_send');
175
+ var commentEditorPlaceholder = t('shift_enter_for_new_line_Enter_to_send');
176
176
  (0, _react.useEffect)(function () {
177
177
  if (!contentRef.current) return;
178
178
  if (showEditor) {
package/dist/context.js CHANGED
@@ -54,6 +54,24 @@ var Context = /*#__PURE__*/function () {
54
54
  }
55
55
  return _this.settings['repos'];
56
56
  });
57
+ (0, _defineProperty2["default"])(this, "getLinkedRepos", function () {
58
+ var repos = _this.getWikiRepos() || [];
59
+ var wikiSettings = _this.getWikiSettings() || {};
60
+ var linkedRepos = wikiSettings.linked_repos || [];
61
+ if (!Array.isArray(repos) || !Array.isArray(linkedRepos) || linkedRepos.length === 0) {
62
+ return [];
63
+ }
64
+ var linkedMap = linkedRepos.reduce(function (ret, id) {
65
+ ret[id] = true;
66
+ return ret;
67
+ }, {});
68
+ return repos.filter(function (item) {
69
+ return linkedMap[item.repo_id];
70
+ });
71
+ });
72
+ (0, _defineProperty2["default"])(this, "hasLinkedRepos", function () {
73
+ return _this.getLinkedRepos().length > 0;
74
+ });
57
75
  (0, _defineProperty2["default"])(this, "uploadLocalImage", function (imageFiles) {
58
76
  var docUuid = _this.getSetting('docUuid');
59
77
  return _this.api.uploadSdocImage(docUuid, imageFiles).then(function (res) {
@@ -463,6 +481,20 @@ var Context = /*#__PURE__*/function () {
463
481
  var wikiId = this.getSetting('wikiId');
464
482
  return this.api.modifyView(wikiId, fileViewId, viewData);
465
483
  }
484
+ }, {
485
+ key: "listLinkedRepoDir",
486
+ value: function listLinkedRepoDir(repoID, nodePath) {
487
+ var wikiId = this.getSetting('wikiId');
488
+ var docUuid = this.getSetting('docUuid');
489
+ return this.api.listLinkedRepoDir(docUuid, wikiId, repoID, nodePath);
490
+ }
491
+ }, {
492
+ key: "getLinkedRepoFileId",
493
+ value: function getLinkedRepoFileId(repoID, nodePath) {
494
+ var wikiId = this.getSetting('wikiId');
495
+ var docUuid = this.getSetting('docUuid');
496
+ return this.api.getLinkedRepoFileId(docUuid, wikiId, repoID, nodePath);
497
+ }
466
498
  }]);
467
499
  }();
468
500
  var context = new Context();
@@ -25,7 +25,8 @@ var _index4 = _interopRequireDefault(require("../../plugins/video/dialog/add-vid
25
25
  var _helpers2 = require("../../plugins/video/helpers");
26
26
  var _index5 = _interopRequireDefault(require("../file-insert-dialog/index.js"));
27
27
  var _index6 = _interopRequireDefault(require("../select-file-dialog/index.js"));
28
- var _index7 = _interopRequireDefault(require("../wiki-file-insert-dialog/index.js"));
28
+ var _index7 = _interopRequireDefault(require("../select-lib-file-dialog/index.js"));
29
+ var _index8 = _interopRequireDefault(require("../wiki-file-insert-dialog/index.js"));
29
30
  var InsertElementDialog = function InsertElementDialog(_ref) {
30
31
  var editor = _ref.editor;
31
32
  var _useState = (0, _react.useState)(''),
@@ -258,6 +259,16 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
258
259
  };
259
260
  return /*#__PURE__*/_react["default"].createElement(_index6["default"], fileLinkProps);
260
261
  }
262
+ case _constants2.ELEMENT_TYPE.FILE:
263
+ {
264
+ var _fileLinkProps = {
265
+ editor: validEditor,
266
+ dialogType: dialogType,
267
+ insertLinkCallback: insertLinkCallback,
268
+ closeDialog: closeDialog
269
+ };
270
+ return /*#__PURE__*/_react["default"].createElement(_index7["default"], _fileLinkProps);
271
+ }
261
272
  case _constants2.ELEMENT_TYPE.WHITEBOARD:
262
273
  {
263
274
  var whiteboardProps = {
@@ -324,7 +335,7 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
324
335
  case _constants2.ELEMENT_TYPE.FILE_LINK_INSET_INPUT_TEMP:
325
336
  {
326
337
  if (editor.editorType === _constants.WIKI_EDITOR) {
327
- return /*#__PURE__*/_react["default"].createElement(_index7["default"], {
338
+ return /*#__PURE__*/_react["default"].createElement(_index8["default"], {
328
339
  element: slateNode,
329
340
  editor: editor,
330
341
  closeDialog: closeDialog
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.whiteboardFileIcon = exports.parcelFileTypeIcon = exports.getSdocFileIcon = exports.getFileTypeIcon = exports.addDataToTree = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
9
+ var _context = _interopRequireDefault(require("../../../context"));
10
+ var _constants = require("../../constants");
11
+ var _addDataToTree = exports.addDataToTree = function addDataToTree(treeData, indexId, childrenData, path) {
12
+ for (var i = 0; i < treeData.length; i++) {
13
+ var _treeData$i;
14
+ if (treeData[i].indexId === indexId) {
15
+ treeData[i].children = childrenData;
16
+ treeData[i].children.forEach(function (child) {
17
+ child.path = path + "/".concat(child.name);
18
+ });
19
+ break;
20
+ }
21
+ if ((_treeData$i = treeData[i]) !== null && _treeData$i !== void 0 && _treeData$i.children) {
22
+ var _treeData$i2;
23
+ _addDataToTree((_treeData$i2 = treeData[i]) === null || _treeData$i2 === void 0 ? void 0 : _treeData$i2.children, indexId, childrenData, path);
24
+ }
25
+ }
26
+ return treeData;
27
+ };
28
+ var getSdocFileIcon = exports.getSdocFileIcon = function getSdocFileIcon() {
29
+ var server = _context["default"].getSetting('serviceUrl');
30
+ return "".concat(server, "/media/img/file/256/sdoc.png");
31
+ };
32
+ var whiteboardFileIcon = exports.whiteboardFileIcon = function whiteboardFileIcon() {
33
+ var server = _context["default"].getSetting('serviceUrl');
34
+ return "".concat(server, "/media/img/file/256/draw.png");
35
+ };
36
+ var getFileTypeIcon = exports.getFileTypeIcon = function getFileTypeIcon(fileType) {
37
+ var imgResource = ['css', 'draw', 'excel', 'md', 'music', 'pdf', 'pic', 'ppt', 'psd', 'sdoc', 'txt', 'video', 'zip', 'word'];
38
+ if (imgResource.includes(fileType)) {
39
+ var server = _context["default"].getSetting('serviceUrl');
40
+ return "".concat(server, "/media/img/file/256/").concat(fileType, ".png");
41
+ } else {
42
+ return false;
43
+ }
44
+ };
45
+ var parcelFileTypeIcon = exports.parcelFileTypeIcon = function parcelFileTypeIcon(fileName) {
46
+ var _Object$entries$find;
47
+ if (!fileName) return '';
48
+ var newFileType = fileName.split('.').pop();
49
+ var fileExtType = (_Object$entries$find = Object.entries(_constants.FILEEXT_TYPE).find(function (_ref) {
50
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
51
+ extensions = _ref2[1];
52
+ return extensions.some(function (ext) {
53
+ return ext.toLowerCase() === newFileType.toLowerCase();
54
+ });
55
+ })) === null || _Object$entries$find === void 0 ? void 0 : _Object$entries$find[0];
56
+ var fileTypeResult = fileExtType ? _constants.FILEEXT_TYPE_MAP[fileExtType] : newFileType;
57
+ var fileTypeIcon = getFileTypeIcon(fileTypeResult);
58
+ return fileTypeIcon;
59
+ };
@@ -0,0 +1,127 @@
1
+ .sdoc-file-select-dialog {
2
+ max-width: 700px;
3
+ }
4
+
5
+ .sdoc-file-select-dialog .sdoc-file-select-modal {
6
+ width: 700px;
7
+ }
8
+
9
+ .sdoc-file-select-dialog .highlight-bg-color {
10
+ background-color: #FF8000;
11
+ border-color: #FF8000;
12
+ }
13
+
14
+ .sdoc-file-select-dialog .modal-header-container {
15
+ display: flex;
16
+ position: relative;
17
+ justify-content: space-between;
18
+ align-items: center;
19
+ width: 100%;
20
+ height: 57px;
21
+ padding: 16px;
22
+ border-bottom: 1px solid #e9ecef;
23
+ }
24
+
25
+ .sdoc-file-select-dialog .modal-title-container {
26
+ flex: 0 1 auto;
27
+ white-space: nowrap;
28
+ position: relative;
29
+ display: flex;
30
+ align-items: center;
31
+ justify-content: center;
32
+ margin: auto 0;
33
+ }
34
+
35
+ .sdoc-close-dialog {
36
+ display: flex;
37
+ align-items: center;
38
+ justify-content: center;
39
+ width: 28px;
40
+ cursor: pointer;
41
+ }
42
+
43
+ .sdoc-file-select-dialog .modal-header-container .sdoc-sm-close {
44
+ font-size: 16px;
45
+ color: #666666;
46
+ }
47
+
48
+ .sdoc-file-select-dialog .modal-header-container .sdoc-sm-close:hover {
49
+ background-color: #EFEFEF;
50
+ border-radius: 3px;
51
+ height: 28px;
52
+ width: 28px;
53
+ }
54
+
55
+ .sdoc-file-select-dialog .sdoc-file-select__side-panel {
56
+ padding: 1rem;
57
+ line-height: 24px;
58
+ text-overflow: ellipsis;
59
+ white-space: nowrap;
60
+ }
61
+
62
+ .sdoc-file-select-dialog .sdoc-file-select__repo-item {
63
+ display: flex;
64
+ align-items: center;
65
+ position: relative;
66
+ height: 32px;
67
+ padding: 0 10px 0 14px;
68
+ cursor: default;
69
+ transition: background-color 0.3s ease, font-weight 0.3s ease;
70
+ border: none;
71
+ border-radius: 3px;
72
+ }
73
+
74
+ .sdoc-file-select-dialog .sdoc-file-select__repo-item:hover {
75
+ background-color: var(--bs-nav-hover-bg, #f5f5f5);
76
+ }
77
+
78
+ .sdoc-file-select-dialog .sdoc-file-select__repo-item.active {
79
+ background-color: var(--bs-nav-active-bg, #f3f3f3);
80
+ font-weight: 500;
81
+ }
82
+
83
+ .sdoc-file-select-dialog .sdoc-file-select__repo-item.active::before {
84
+ content: '';
85
+ display: block;
86
+ position: absolute;
87
+ top: 4px;
88
+ left: 0;
89
+ width: 4px;
90
+ height: 24px;
91
+ background-color: #ff9800;
92
+ border-radius: 2px;
93
+ z-index: 0;
94
+ }
95
+
96
+ .sdoc-file-select-dialog .sdoc-file-select__repo-item .lib-icon {
97
+ flex-shrink: 0;
98
+ margin-right: 8px;
99
+ }
100
+
101
+ .sdoc-file-select-dialog .sdoc-file-select__repo-name {
102
+ overflow: hidden;
103
+ text-overflow: ellipsis;
104
+ white-space: nowrap;
105
+ }
106
+
107
+ .sdoc-file-select__main-panel .sdoc-file-select-footer {
108
+ display: flex;
109
+ align-items: center;
110
+ justify-content: flex-end;
111
+ padding: 1rem;
112
+ border-top: 1px solid #e9ecef;
113
+ }
114
+
115
+ @media (max-width: 768px) {
116
+ .sdoc-file-select-dialog .sdoc-file-select__side-panel,
117
+ .sdoc-file-select-dialog .sdoc-file-select__main-panel {
118
+ max-width: 100% !important;
119
+ }
120
+
121
+ .sdoc-file-select-dialog .sdoc-file-select__side-panel {
122
+ border-right: none !important;
123
+ border-bottom: 1px solid #e9ecef;
124
+ overflow-x: auto;
125
+ }
126
+
127
+ }
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _reactI18next = require("react-i18next");
13
+ var _reactstrap = require("reactstrap");
14
+ var _lib = _interopRequireDefault(require("../../../assets/images/lib.png"));
15
+ var _toast = _interopRequireDefault(require("../../../components/toast"));
16
+ var _context = _interopRequireDefault(require("../../../context"));
17
+ var _commonUtils = require("../../../utils/common-utils");
18
+ var _treeView = _interopRequireDefault(require("./tree-view"));
19
+ require("./index.css");
20
+ var SelectLibFileDialog = function SelectLibFileDialog(_ref) {
21
+ var _enableRepos$;
22
+ var editor = _ref.editor,
23
+ dialogType = _ref.dialogType,
24
+ closeDialog = _ref.closeDialog,
25
+ insertLinkCallback = _ref.insertLinkCallback;
26
+ var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
27
+ t = _useTranslation.t;
28
+ var _useState = (0, _react.useState)(null),
29
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
30
+ currentSelectedFile = _useState2[0],
31
+ setCurrentSelectedFile = _useState2[1];
32
+ var enableRepos = (0, _react.useMemo)(function () {
33
+ return _context["default"].getLinkedRepos();
34
+ }, []);
35
+ var _useState3 = (0, _react.useState)(((_enableRepos$ = enableRepos[0]) === null || _enableRepos$ === void 0 ? void 0 : _enableRepos$.repo_id) || ''),
36
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
37
+ currentRepoId = _useState4[0],
38
+ setCurrentRepoId = _useState4[1];
39
+ var onSelectedFile = (0, _react.useCallback)(function (fileInfo) {
40
+ setCurrentSelectedFile(fileInfo);
41
+ }, []);
42
+ var onSelectRepo = (0, _react.useCallback)(function (repoId) {
43
+ if (repoId === currentRepoId) return;
44
+ setCurrentRepoId(repoId);
45
+ setCurrentSelectedFile(null);
46
+ }, [currentRepoId]);
47
+ var insertFile = (0, _react.useCallback)(function (fileInfo) {
48
+ var _ref2 = insertLinkCallback || {},
49
+ insertFileLinkCallback = _ref2.insertFileLinkCallback;
50
+ insertFileLinkCallback && insertFileLinkCallback(editor, fileInfo.name, fileInfo.file_uuid);
51
+ }, [insertLinkCallback, editor]);
52
+ var onSubmit = (0, _react.useCallback)(function () {
53
+ if (!currentSelectedFile) return;
54
+ var file_uuid = currentSelectedFile.file_uuid;
55
+ var fileInfo = (0, _objectSpread2["default"])({}, currentSelectedFile);
56
+
57
+ // File has no id
58
+ if (!file_uuid || file_uuid === '') {
59
+ _context["default"].getLinkedRepoFileId(currentRepoId, currentSelectedFile.path).then(function (res) {
60
+ if (res.status === 200) {
61
+ fileInfo = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, currentSelectedFile), {}, {
62
+ file_uuid: res.data.file_uuid
63
+ });
64
+ }
65
+ insertFile(fileInfo);
66
+ closeDialog();
67
+ })["catch"](function (error) {
68
+ var errorMessage = (0, _commonUtils.getErrorMsg)(error);
69
+ _toast["default"].danger(errorMessage);
70
+ });
71
+ return;
72
+ }
73
+ insertFile(fileInfo);
74
+ closeDialog();
75
+ }, [closeDialog, currentRepoId, currentSelectedFile, insertFile]);
76
+ return /*#__PURE__*/_react["default"].createElement(_reactstrap.Modal, {
77
+ isOpen: true,
78
+ autoFocus: true,
79
+ zIndex: 1071,
80
+ returnFocusAfterClose: false,
81
+ className: "sdoc-file-select-dialog",
82
+ contentClassName: "sdoc-file-select-modal",
83
+ toggle: closeDialog
84
+ }, /*#__PURE__*/_react["default"].createElement("div", {
85
+ className: "modal-header-container"
86
+ }, /*#__PURE__*/_react["default"].createElement("h5", {
87
+ className: "modal-title-container"
88
+ }, t('Select_file')), /*#__PURE__*/_react["default"].createElement("div", {
89
+ className: "modal-operation-container"
90
+ }, /*#__PURE__*/_react["default"].createElement("div", {
91
+ className: "sdocfont sdoc-sm-close sdoc-close-dialog",
92
+ onClick: closeDialog
93
+ }))), /*#__PURE__*/_react["default"].createElement(_reactstrap.ModalBody, {
94
+ className: "p-0"
95
+ }, /*#__PURE__*/_react["default"].createElement("div", {
96
+ className: "sdoc-file-select-container row"
97
+ }, /*#__PURE__*/_react["default"].createElement("div", {
98
+ className: "sdoc-file-select__side-panel border-end col-12 col-md-3"
99
+ }, enableRepos.map(function (repo) {
100
+ var isActive = repo.repo_id === currentRepoId;
101
+ return /*#__PURE__*/_react["default"].createElement("div", {
102
+ key: repo.repo_id,
103
+ className: "sdoc-file-select__repo-item ".concat(isActive ? 'active' : ''),
104
+ title: repo.repo_name,
105
+ role: "button",
106
+ tabIndex: 0,
107
+ onClick: function onClick() {
108
+ return onSelectRepo(repo.repo_id);
109
+ },
110
+ onKeyDown: function onKeyDown(event) {
111
+ if (event.key === 'Enter' || event.key === ' ') {
112
+ event.preventDefault();
113
+ onSelectRepo(repo.repo_id);
114
+ }
115
+ }
116
+ }, /*#__PURE__*/_react["default"].createElement("img", {
117
+ className: "lib-icon",
118
+ src: _lib["default"],
119
+ width: "20",
120
+ alt: ""
121
+ }), /*#__PURE__*/_react["default"].createElement("span", {
122
+ className: "sdoc-file-select__repo-name"
123
+ }, repo.repo_name));
124
+ })), /*#__PURE__*/_react["default"].createElement("div", {
125
+ className: "sdoc-file-select__main-panel col-12 col-md-9"
126
+ }, currentRepoId && /*#__PURE__*/_react["default"].createElement(_treeView["default"], {
127
+ repoID: currentRepoId,
128
+ onSelectedFile: onSelectedFile,
129
+ toggle: closeDialog
130
+ }), /*#__PURE__*/_react["default"].createElement("div", {
131
+ className: "sdoc-file-select-footer"
132
+ }, /*#__PURE__*/_react["default"].createElement(_reactstrap.Button, {
133
+ color: "secondary",
134
+ className: "mr-2",
135
+ onClick: closeDialog
136
+ }, t('Cancel')), /*#__PURE__*/_react["default"].createElement(_reactstrap.Button, {
137
+ color: "primary",
138
+ className: "highlight-bg-color",
139
+ disabled: !currentSelectedFile,
140
+ onClick: onSubmit
141
+ }, t('Submit')))))));
142
+ };
143
+ var _default = exports["default"] = SelectLibFileDialog;
@@ -0,0 +1,129 @@
1
+ .sdoc-files-tree {
2
+ flex: 1;
3
+ padding: 8px 16px;
4
+ width: 100%;
5
+ height: 400px;
6
+ overflow-y: auto;
7
+ display: flex;
8
+ flex-direction: column;
9
+ }
10
+
11
+ .sdoc-files-tree .sdoc-file-info {
12
+ border-radius: 2px;
13
+ height: 32px;
14
+ line-height: 32px;
15
+ overflow: hidden;
16
+ text-overflow: ellipsis;
17
+ white-space: nowrap;
18
+ position: relative;
19
+ padding-left: 2.8rem;
20
+ display: flex;
21
+ flex-direction: column;
22
+ }
23
+
24
+ .sdoc-files-tree .sdoc-file-info:hover {
25
+ cursor: pointer;
26
+ background-color: #f5f5f5;
27
+ }
28
+
29
+ .sdoc-files-tree .sdoc-file-info .sdoc-file-icon-container {
30
+ display: flex;
31
+ align-items: center;
32
+ width: 2.8rem;
33
+ height: 100%;
34
+ padding-left: 1.5rem;
35
+ position: absolute;
36
+ left: 0;
37
+ }
38
+
39
+ .sdoc-file-icon-container .whiteboard-file-img,
40
+ .sdoc-file-icon-container .video-file-img,
41
+ .sdoc-file-icon-container .sdoc-file-img {
42
+ position: absolute;
43
+ width: 21.6px;
44
+ right: 1px;
45
+ }
46
+
47
+ .sdoc-files-tree .sdoc-file-checked {
48
+ position: absolute;
49
+ right: 10px;
50
+ color: #666;
51
+ font-size: 14px;
52
+ font-weight: 400;
53
+ }
54
+
55
+ .sdoc-files-tree .sdoc-file-info .sdoc-file-icon {
56
+ color: #666;
57
+ }
58
+
59
+ .sdoc-files-tree .sdoc-file-info.active {
60
+ background-color: #f5f5f5;
61
+ }
62
+
63
+ .sdoc-files-tree .sdoc-file-icon-toggle {
64
+ height: 1.5rem;
65
+ width: 1.5rem;
66
+ line-height: 1.5rem !important;
67
+ font-size: 12px !important;
68
+ text-align: center;
69
+ position: absolute;
70
+ left: 0;
71
+ }
72
+
73
+ .sdoc-files-tree .sdoc-file-info.expanded .sdoc-file-icon-toggle {
74
+ transform: rotate(90deg);
75
+ }
76
+
77
+ .sdoc-files-tree .sdoc-file-info .sdoc-file-name {
78
+ font-size: 14px;
79
+ white-space: nowrap;
80
+ overflow: hidden;
81
+ text-overflow: ellipsis;
82
+ }
83
+
84
+ .sdoc-files-tree .sdoc-file-info:has(.sdoc-file-checked) .sdoc-file-name {
85
+ padding-right: 32px;
86
+ }
87
+
88
+ .sdoc-files-tree .sdoc-folder-children {
89
+ padding-left: 20px;
90
+ }
91
+
92
+ .sdoc-files-tree .sdoc-folder-children-empty {
93
+ color: #999;
94
+ padding: 4px 20px;
95
+ }
96
+
97
+ .sdoc-files-tree .sdoc-file-info .sdoc-search-folder-name {
98
+ font-size: 14px;
99
+ color: #7d7d7d;
100
+ }
101
+
102
+ .sdoc-folder-container.sdoc-folder-search-results .sdoc-file-info {
103
+ height: 59px;
104
+ padding: 10px 50px;
105
+ flex-direction: column;
106
+ justify-content: center;
107
+ border-radius: 2px;
108
+ overflow: hidden;
109
+ text-overflow: ellipsis;
110
+ white-space: nowrap;
111
+ }
112
+
113
+ .sdoc-folder-container.sdoc-folder-search-results .sdoc-file-info .sdoc-file-icon-container .whiteboard-file-img,
114
+ .sdoc-folder-container.sdoc-folder-search-results .sdoc-file-info .sdoc-file-icon-container .sdoc-file-img {
115
+ width: 36px;
116
+ height: 36px;
117
+ }
118
+
119
+ .sdoc-folder-container.sdoc-folder-search-results .sdoc-file-name,
120
+ .sdoc-search-folder-name {
121
+ height: 19.5px;
122
+ display: flex;
123
+ align-items: center;
124
+ }
125
+
126
+ .sdoc-files-tree .sdoc-file-search-no-result {
127
+ display: flex;
128
+ justify-content: center;
129
+ }
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
10
+ var _regenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/regenerator"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
13
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
14
+ var _react = _interopRequireWildcard(require("react"));
15
+ var _reactI18next = require("react-i18next");
16
+ var _classnames = _interopRequireDefault(require("classnames"));
17
+ var _toast = _interopRequireDefault(require("../../../../components/toast"));
18
+ var _context2 = _interopRequireDefault(require("../../../../context"));
19
+ var _commonUtils = require("../../../../utils/common-utils");
20
+ var _helpers = require("../helpers");
21
+ require("./index.css");
22
+ var TreeView = function TreeView(_ref) {
23
+ var repoID = _ref.repoID,
24
+ onSelectedFile = _ref.onSelectedFile,
25
+ toggle = _ref.toggle,
26
+ t = _ref.t;
27
+ var folderRef = (0, _react.useRef)(null);
28
+ var repoCacheRef = (0, _react.useRef)({});
29
+ var _useState = (0, _react.useState)(new Set([])),
30
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
31
+ expandedFolder = _useState2[0],
32
+ setExpandedFolder = _useState2[1];
33
+ var _useState3 = (0, _react.useState)(null),
34
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
35
+ currentActiveItem = _useState4[0],
36
+ setCurrentActiveItem = _useState4[1];
37
+ var _useState5 = (0, _react.useState)([]),
38
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
39
+ treeData = _useState6[0],
40
+ setTreeData = _useState6[1];
41
+ var updateRepoCache = (0, _react.useCallback)(function (repoID, nextTreeData) {
42
+ var nextExpandedFolder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Set([]);
43
+ repoCacheRef.current[repoID] = {
44
+ treeData: nextTreeData,
45
+ expandedFolder: Array.from(nextExpandedFolder)
46
+ };
47
+ }, []);
48
+ var getTreeData = (0, _react.useCallback)(function (repoID, nodePath, nodeId) {
49
+ var currentTreeData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
50
+ return _context2["default"].listLinkedRepoDir(repoID, nodePath).then(function (res) {
51
+ var dirent_list = res.data.dirent_list;
52
+ var newData = dirent_list.map(function (item) {
53
+ item.path = nodePath === '/' ? "/".concat(item.name) : "".concat(nodePath, "/").concat(item.name);
54
+ item.indexId = item.path;
55
+ return item;
56
+ });
57
+ var nextTreeData = newData;
58
+
59
+ // Open folder
60
+ if (nodeId && currentTreeData.length > 0) {
61
+ var newFileListData = (0, _helpers.addDataToTree)(currentTreeData, nodeId, newData, nodePath);
62
+ nextTreeData = (0, _toConsumableArray2["default"])(newFileListData);
63
+ }
64
+ setTreeData(nextTreeData);
65
+ return nextTreeData;
66
+ })["catch"](function (error) {
67
+ toggle();
68
+ var errorMessage = (0, _commonUtils.getErrorMsg)(error);
69
+ _toast["default"].danger(errorMessage);
70
+ return null;
71
+ });
72
+ }, [toggle]);
73
+ (0, _react.useEffect)(function () {
74
+ setCurrentActiveItem(null);
75
+ onSelectedFile(null);
76
+ var cachedRepoData = repoCacheRef.current[repoID];
77
+ if (cachedRepoData !== null && cachedRepoData !== void 0 && cachedRepoData.treeData) {
78
+ setTreeData(cachedRepoData.treeData);
79
+ setExpandedFolder(new Set(cachedRepoData.expandedFolder));
80
+ return;
81
+ }
82
+ var rootPath = '/';
83
+ setTreeData([]);
84
+ setExpandedFolder(new Set([]));
85
+ getTreeData(repoID, rootPath).then(function (nextTreeData) {
86
+ if (!nextTreeData) return;
87
+ updateRepoCache(repoID, nextTreeData, new Set([]));
88
+ });
89
+ }, [getTreeData, onSelectedFile, repoID, updateRepoCache]);
90
+ var onToggle = (0, _react.useCallback)(/*#__PURE__*/function () {
91
+ var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/(0, _regenerator2["default"])().m(function _callee(e, item) {
92
+ var nextExpandedFolder, nextTreeData, hasLoadedChildren, _t;
93
+ return (0, _regenerator2["default"])().w(function (_context) {
94
+ while (1) switch (_context.n) {
95
+ case 0:
96
+ e && e.stopPropagation();
97
+ nextExpandedFolder = new Set(Array.from(expandedFolder));
98
+ nextTreeData = treeData;
99
+ if (!expandedFolder.has(item.indexId)) {
100
+ _context.n = 1;
101
+ break;
102
+ }
103
+ nextExpandedFolder["delete"](item.indexId);
104
+ _context.n = 5;
105
+ break;
106
+ case 1:
107
+ hasLoadedChildren = Object.prototype.hasOwnProperty.call(item, 'children');
108
+ if (hasLoadedChildren) {
109
+ _context.n = 4;
110
+ break;
111
+ }
112
+ _context.n = 2;
113
+ return getTreeData(repoID, item.path, item.indexId, treeData);
114
+ case 2:
115
+ _t = _context.v;
116
+ if (_t) {
117
+ _context.n = 3;
118
+ break;
119
+ }
120
+ _t = treeData;
121
+ case 3:
122
+ nextTreeData = _t;
123
+ case 4:
124
+ nextExpandedFolder.add(item.indexId);
125
+ case 5:
126
+ onSelectedFile(null);
127
+ setCurrentActiveItem(item);
128
+ setExpandedFolder(nextExpandedFolder);
129
+ updateRepoCache(repoID, nextTreeData, nextExpandedFolder);
130
+ case 6:
131
+ return _context.a(2);
132
+ }
133
+ }, _callee);
134
+ }));
135
+ return function (_x, _x2) {
136
+ return _ref2.apply(this, arguments);
137
+ };
138
+ }(), [expandedFolder, getTreeData, onSelectedFile, repoID, treeData, updateRepoCache]);
139
+ var onSelectFile = (0, _react.useCallback)(function (e, file) {
140
+ e.stopPropagation();
141
+ var newFile = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, file), {}, {
142
+ path: file.path || file.fullpath
143
+ });
144
+ setCurrentActiveItem(newFile);
145
+ onSelectedFile(newFile);
146
+ // eslint-disable-next-line react-hooks/exhaustive-deps
147
+ }, []);
148
+ var renderFileTree = (0, _react.useCallback)(function (data) {
149
+ if (!Array.isArray(data) || data.length === 0) return null;
150
+ return data.map(function (item) {
151
+ var _item$fullpath, _item$children, _item$children2;
152
+ if (!item) return null;
153
+ var type = item.type,
154
+ indexId = item.indexId,
155
+ name = item.name,
156
+ file_uuid = item.file_uuid,
157
+ path = item.path,
158
+ fullpath = item.fullpath;
159
+ var isExpanded = expandedFolder.has(indexId);
160
+ var hasLoadedChildren = Object.prototype.hasOwnProperty.call(item, 'children');
161
+ // Get file type icon
162
+ var fileTypeIcon = (0, _helpers.parcelFileTypeIcon)(name);
163
+ var result = (_item$fullpath = item.fullpath) === null || _item$fullpath === void 0 ? void 0 : _item$fullpath.split('/').filter(Boolean);
164
+ item.fullpath && result.pop();
165
+ var folderPath = item.fullpath && result.join('/');
166
+ var selected = (currentActiveItem === null || currentActiveItem === void 0 ? void 0 : currentActiveItem.path) === (path || fullpath);
167
+ return /*#__PURE__*/_react["default"].createElement("div", {
168
+ key: indexId || file_uuid,
169
+ className: (0, _classnames["default"])('sdoc-folder-container')
170
+ }, type === 'dir' && /*#__PURE__*/_react["default"].createElement("div", {
171
+ ref: folderRef,
172
+ className: "sdoc-folder-wrapper"
173
+ }, /*#__PURE__*/_react["default"].createElement("div", {
174
+ className: (0, _classnames["default"])('sdoc-folder-info sdoc-file-info', {
175
+ 'expanded': isExpanded
176
+ }),
177
+ onClick: function onClick(e) {
178
+ return onToggle(e, item);
179
+ }
180
+ }, /*#__PURE__*/_react["default"].createElement("div", {
181
+ className: "sdoc-file-icon-container"
182
+ }, /*#__PURE__*/_react["default"].createElement("i", {
183
+ className: "sdoc-file-icon sdoc-file-icon-toggle sdocfont sdoc-arrow-right"
184
+ }), /*#__PURE__*/_react["default"].createElement("i", {
185
+ className: "sdoc-file-icon sdocfont sdoc-folder"
186
+ })), /*#__PURE__*/_react["default"].createElement("span", {
187
+ className: "sdoc-folder-name sdoc-file-name"
188
+ }, name)), isExpanded && hasLoadedChildren && /*#__PURE__*/_react["default"].createElement("div", {
189
+ className: "sdoc-folder-children"
190
+ }, ((_item$children = item.children) === null || _item$children === void 0 ? void 0 : _item$children.length) === 0 && /*#__PURE__*/_react["default"].createElement("div", {
191
+ className: "sdoc-folder-children-empty"
192
+ }, "(".concat(t('Empty'), ")")), ((_item$children2 = item.children) === null || _item$children2 === void 0 ? void 0 : _item$children2.length) > 0 && renderFileTree(item.children))), ['file', 'video', 'exdraw'].includes(type) && /*#__PURE__*/_react["default"].createElement("div", {
193
+ className: (0, _classnames["default"])('sdoc-file-info'),
194
+ onClick: function onClick(e) {
195
+ onSelectFile(e, item);
196
+ }
197
+ }, /*#__PURE__*/_react["default"].createElement("div", {
198
+ className: "sdoc-file-icon-container"
199
+ }, /*#__PURE__*/_react["default"].createElement("i", {
200
+ className: (0, _classnames["default"])('sdoc-file-icon', {
201
+ 'sdocfont sdoc-link-file': !fileTypeIcon
202
+ })
203
+ }), fileTypeIcon && /*#__PURE__*/_react["default"].createElement("img", {
204
+ className: "sdoc-file-img",
205
+ src: fileTypeIcon,
206
+ alt: ""
207
+ })), /*#__PURE__*/_react["default"].createElement("span", {
208
+ className: "sdoc-file-name"
209
+ }, name), item.fullpath && folderPath.length !== 0 && /*#__PURE__*/_react["default"].createElement("span", {
210
+ className: "sdoc-search-folder-name"
211
+ }, folderPath), selected && /*#__PURE__*/_react["default"].createElement("i", {
212
+ className: "sdoc-file-checked sdocfont sdoc-check-mark"
213
+ })));
214
+ });
215
+ // eslint-disable-next-line react-hooks/exhaustive-deps
216
+ }, [treeData, currentActiveItem, expandedFolder]);
217
+ return /*#__PURE__*/_react["default"].createElement("div", {
218
+ className: "sdoc-files-tree"
219
+ }, renderFileTree(treeData));
220
+ };
221
+ var _default = exports["default"] = (0, _reactI18next.withTranslation)('sdoc-editor')(TreeView);
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.WIKI_LINK = exports.WHITEBOARD = exports.VIDEO_LINK = exports.VIDEO = exports.UNORDERED_LIST = exports.TWO_COLUMN = exports.TOP_LEVEL_TYPES = exports.TOGGLE_HEADER3 = exports.TOGGLE_HEADER2 = exports.TOGGLE_HEADER1 = exports.TOGGLE_HEADER = exports.TOGGLE_CONTENT = exports.TITLE = exports.THREE_COLUMN = exports.TABLE_ROW = exports.TABLE_CELL = exports.TABLE = exports.SUBTITLE = exports.SDOC_LINK = exports.QUICK_INSERT = exports.PARAGRAPH = exports.ORDERED_LIST = exports.MULTI_COLUMN = exports.MENTION_TEMP = exports.MENTION = exports.LIST_ITEM = exports.LINK = exports.INLINE_LEVEL_TYPES = exports.IMAGE_BLOCK = exports.IMAGE = exports.HEADER6 = exports.HEADER5 = exports.HEADER4 = exports.HEADER3 = exports.HEADER2 = exports.HEADER1 = exports.HEADER = exports.GROUP = exports.FOUR_COLUMN = exports.FORMULA = exports.FONT_SIZE_REDUCE = exports.FONT_SIZE_INCREASE = exports.FONT_SIZE = exports.FIVE_COLUMN = exports.FILE_VIEW = exports.FILE_LINK_INSET_INPUT_TEMP = exports.FILE_LINK = exports.EMBED_LINK = exports.DIVIDER = exports.COLUMN = exports.CODE_LINE = exports.CODE_BLOCK = exports.CHECK_LIST_ITEM = exports.CALL_OUT = exports.BLOCKQUOTE = exports.ASK_AI = void 0;
6
+ exports.WIKI_LINK = exports.WHITEBOARD = exports.VIDEO_LINK = exports.VIDEO = exports.UNORDERED_LIST = exports.TWO_COLUMN = exports.TOP_LEVEL_TYPES = exports.TOGGLE_HEADER3 = exports.TOGGLE_HEADER2 = exports.TOGGLE_HEADER1 = exports.TOGGLE_HEADER = exports.TOGGLE_CONTENT = exports.TITLE = exports.THREE_COLUMN = exports.TABLE_ROW = exports.TABLE_CELL = exports.TABLE = exports.SUBTITLE = exports.SDOC_LINK = exports.QUICK_INSERT = exports.PARAGRAPH = exports.ORDERED_LIST = exports.MULTI_COLUMN = exports.MENTION_TEMP = exports.MENTION = exports.LIST_ITEM = exports.LINK = exports.INLINE_LEVEL_TYPES = exports.IMAGE_BLOCK = exports.IMAGE = exports.HEADER6 = exports.HEADER5 = exports.HEADER4 = exports.HEADER3 = exports.HEADER2 = exports.HEADER1 = exports.HEADER = exports.GROUP = exports.FOUR_COLUMN = exports.FORMULA = exports.FONT_SIZE_REDUCE = exports.FONT_SIZE_INCREASE = exports.FONT_SIZE = exports.FIVE_COLUMN = exports.FILE_VIEW = exports.FILE_LINK_INSET_INPUT_TEMP = exports.FILE_LINK = exports.FILE = exports.EMBED_LINK = exports.DIVIDER = exports.COLUMN = exports.CODE_LINE = exports.CODE_BLOCK = exports.CHECK_LIST_ITEM = exports.CALL_OUT = exports.BLOCKQUOTE = exports.ASK_AI = void 0;
7
7
  var BLOCKQUOTE = exports.BLOCKQUOTE = 'blockquote';
8
8
  var TITLE = exports.TITLE = 'title';
9
9
  var SUBTITLE = exports.SUBTITLE = 'subtitle';
@@ -53,6 +53,7 @@ var TOGGLE_HEADER3 = exports.TOGGLE_HEADER3 = 'toggle_header3';
53
53
  var TOGGLE_CONTENT = exports.TOGGLE_CONTENT = 'toggle_content';
54
54
  var EMBED_LINK = exports.EMBED_LINK = 'embed_link';
55
55
  var DIVIDER = exports.DIVIDER = 'divider';
56
+ var FILE = exports.FILE = 'file';
56
57
  var ASK_AI = exports.ASK_AI = 'ask_ai';
57
58
 
58
59
  // font
@@ -315,6 +315,11 @@ var SIDE_INSERT_MENUS_CONFIG = exports.SIDE_INSERT_MENUS_CONFIG = (_SIDE_INSERT_
315
315
  iconClass: 'sdocfont sdoc-link',
316
316
  type: _elementType.LINK,
317
317
  text: 'Link'
318
+ }), _elementType.FILE, {
319
+ id: 'sdoc-side-menu-item-file-link',
320
+ iconClass: 'sdocfont sdoc-link-file',
321
+ type: _elementType.FILE,
322
+ text: 'File'
318
323
  }), _elementType.EMBED_LINK, {
319
324
  id: '',
320
325
  iconClass: 'sdocfont sdoc-embed-link',
@@ -339,12 +344,12 @@ var SIDE_INSERT_MENUS_CONFIG = exports.SIDE_INSERT_MENUS_CONFIG = (_SIDE_INSERT_
339
344
  iconClass: 'sdocfont sdoc-list-ul',
340
345
  type: _elementType.UNORDERED_LIST,
341
346
  text: 'Unordered_list'
342
- }), _elementType.CHECK_LIST_ITEM, {
347
+ }), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_INSERT_MENUS_CO, _elementType.CHECK_LIST_ITEM, {
343
348
  id: '',
344
349
  iconClass: 'sdocfont sdoc-check-square',
345
350
  type: _elementType.CHECK_LIST_ITEM,
346
351
  text: 'Check_list'
347
- }), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_INSERT_MENUS_CO, _elementType.PARAGRAPH, {
352
+ }), _elementType.PARAGRAPH, {
348
353
  id: _elementType.PARAGRAPH,
349
354
  iconClass: 'sdocfont sdoc-text',
350
355
  type: _elementType.PARAGRAPH,
@@ -411,7 +416,7 @@ var SIDE_INSERT_MENUS_CONFIG = exports.SIDE_INSERT_MENUS_CONFIG = (_SIDE_INSERT_
411
416
  text: 'Formula'
412
417
  }));
413
418
  var SIDE_INSERT_MENUS_SEARCH_MAP = exports.SIDE_INSERT_MENUS_SEARCH_MAP = (_SIDE_INSERT_MENUS_SE = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_INSERT_MENUS_SE, _elementType.IMAGE, 'Image'), _elementType.VIDEO, 'Video'), _elementType.TABLE, 'Table'), _elementType.COLUMN, 'Column'), _elementType.TWO_COLUMN, 'Two_column'), _elementType.THREE_COLUMN, 'Three_column'), _elementType.FOUR_COLUMN, 'Four_column'), _elementType.LINK, 'Link'), _elementType.CODE_BLOCK, 'Code_block'), _elementType.CALL_OUT, 'Callout'), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_INSERT_MENUS_SE, _elementType.UNORDERED_LIST, 'Unordered_list'), _elementType.ORDERED_LIST, 'Ordered_list'), _elementType.CHECK_LIST_ITEM, 'Check_list'), _elementType.PARAGRAPH, 'Paragraph'), _elementType.HEADER1, 'Header_one'), _elementType.HEADER2, 'Header_two'), _elementType.HEADER3, 'Header_three'), _elementType.HEADER4, 'Header_four'), _elementType.TOGGLE_HEADER1, 'Toggle_header_one'), _elementType.TOGGLE_HEADER2, 'Toggle_header_two'), (0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_INSERT_MENUS_SE, _elementType.TOGGLE_HEADER3, 'Toggle_header_three'), _elementType.FILE_VIEW, 'File_view'));
414
- var SIDE_QUICK_INSERT_MENUS_SEARCH_MAP = exports.SIDE_QUICK_INSERT_MENUS_SEARCH_MAP = (_SIDE_QUICK_INSERT_ME = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_QUICK_INSERT_ME, _elementType.IMAGE, 'Image'), _elementType.VIDEO, 'Video'), _elementType.TABLE, 'Table'), _elementType.COLUMN, 'Column'), _elementType.TWO_COLUMN, 'Two_column'), _elementType.THREE_COLUMN, 'Three_column'), _elementType.FOUR_COLUMN, 'Four_column'), _elementType.LINK, 'Link'), _elementType.CODE_BLOCK, 'Code_block'), _elementType.CALL_OUT, 'Callout'), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_QUICK_INSERT_ME, _elementType.UNORDERED_LIST, 'Unordered_list'), _elementType.ORDERED_LIST, 'Ordered_list'), _elementType.CHECK_LIST_ITEM, 'Check_list'), _elementType.PARAGRAPH, 'Paragraph'), _elementType.HEADER1, 'Header_one'), _elementType.HEADER2, 'Header_two'), _elementType.HEADER3, 'Header_three'), _elementType.HEADER4, 'Header_four'), _elementType.FILE_VIEW, 'File_view'), _elementType.FORMULA, 'Formula'), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_QUICK_INSERT_ME, _elementType.TOGGLE_HEADER1, 'Toggle_header_one'), _elementType.TOGGLE_HEADER2, 'Toggle_header_two'), _elementType.TOGGLE_HEADER3, 'Toggle_header_three'), _elementType.EMBED_LINK, 'Embed_link'));
419
+ var SIDE_QUICK_INSERT_MENUS_SEARCH_MAP = exports.SIDE_QUICK_INSERT_MENUS_SEARCH_MAP = (_SIDE_QUICK_INSERT_ME = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_QUICK_INSERT_ME, _elementType.IMAGE, 'Image'), _elementType.VIDEO, 'Video'), _elementType.TABLE, 'Table'), _elementType.COLUMN, 'Column'), _elementType.TWO_COLUMN, 'Two_column'), _elementType.THREE_COLUMN, 'Three_column'), _elementType.FOUR_COLUMN, 'Four_column'), _elementType.LINK, 'Link'), _elementType.FILE, 'File'), _elementType.CODE_BLOCK, 'Code_block'), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_QUICK_INSERT_ME, _elementType.CALL_OUT, 'Callout'), _elementType.UNORDERED_LIST, 'Unordered_list'), _elementType.ORDERED_LIST, 'Ordered_list'), _elementType.CHECK_LIST_ITEM, 'Check_list'), _elementType.PARAGRAPH, 'Paragraph'), _elementType.HEADER1, 'Header_one'), _elementType.HEADER2, 'Header_two'), _elementType.HEADER3, 'Header_three'), _elementType.HEADER4, 'Header_four'), _elementType.FILE_VIEW, 'File_view'), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_SIDE_QUICK_INSERT_ME, _elementType.FORMULA, 'Formula'), _elementType.TOGGLE_HEADER1, 'Toggle_header_one'), _elementType.TOGGLE_HEADER2, 'Toggle_header_two'), _elementType.TOGGLE_HEADER3, 'Toggle_header_three'), _elementType.EMBED_LINK, 'Embed_link'));
415
420
 
416
421
  // Other operations menu config
417
422
  var SIDE_OTHER_OPERATIONS_MENUS_SEARCH_MAP = exports.SIDE_OTHER_OPERATIONS_MENUS_SEARCH_MAP = {
@@ -19,6 +19,7 @@ var _core = require("../../core");
19
19
  var _insertElementToolbar = _interopRequireDefault(require("../../toolbar/insert-element-toolbar"));
20
20
  var _helper = require("./helper");
21
21
  var RenderQuickInsert = function RenderQuickInsert(_ref, editor, readonly) {
22
+ var _aboveBlockNode$;
22
23
  var attributes = _ref.attributes,
23
24
  children = _ref.children,
24
25
  element = _ref.element;
@@ -34,8 +35,12 @@ var RenderQuickInsert = function RenderQuickInsert(_ref, editor, readonly) {
34
35
  var insertElmRef = (0, _react.useRef)(null);
35
36
  var aboveBlockNode = (0, _core.getAboveBlockNode)(editor);
36
37
  var parentBlockNode = _slate.Editor.parent(editor, aboveBlockNode === null || aboveBlockNode === void 0 ? void 0 : aboveBlockNode[1]);
38
+ var blockChildren = (aboveBlockNode === null || aboveBlockNode === void 0 ? void 0 : (_aboveBlockNode$ = aboveBlockNode[0]) === null || _aboveBlockNode$ === void 0 ? void 0 : _aboveBlockNode$.children) || [];
39
+ var isQuickInsertOnlyBlock = blockChildren.length > 0 && blockChildren.every(function (child) {
40
+ return (child === null || child === void 0 ? void 0 : child.type) === _constants.QUICK_INSERT || (child === null || child === void 0 ? void 0 : child.text) === '';
41
+ });
37
42
  // In toggle content's empty paragraph or empty paragraph
38
- var isEmptyNode = parentBlockNode && (parentBlockNode === null || parentBlockNode === void 0 ? void 0 : parentBlockNode[0].type) === _constants.TOGGLE_CONTENT || aboveBlockNode && aboveBlockNode[0].children[1].type === _constants.QUICK_INSERT;
43
+ var isEmptyNode = parentBlockNode && (parentBlockNode === null || parentBlockNode === void 0 ? void 0 : parentBlockNode[0].type) === _constants.TOGGLE_CONTENT || isQuickInsertOnlyBlock;
39
44
  var _useState3 = (0, _react.useState)((0, _helper.isSelectionSameWithInsert)(editor, element)),
40
45
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
41
46
  isShowPopover = _useState4[0],
@@ -14,8 +14,7 @@ var _plugins = require("../plugins");
14
14
  var RenderCommentEditorCustomRenderElement = function RenderCommentEditorCustomRenderElement(props) {
15
15
  var editor = (0, _slateReact.useSlateStatic)();
16
16
  var readonly = (0, _slateReact.useReadOnly)();
17
- var element = props.element,
18
- commentType = props.commentType;
17
+ var element = props.element;
19
18
  switch (element.type) {
20
19
  case _constants.PARAGRAPH:
21
20
  {
@@ -28,7 +27,7 @@ var RenderCommentEditorCustomRenderElement = function RenderCommentEditorCustomR
28
27
  _renderParagraph = _ParagraphPlugin$rend[0];
29
28
  return _renderParagraph(_props);
30
29
  }
31
- var placeholder = commentType === 'comment' ? 'Enter_comment_shift_enter_for_new_line_Enter_to_send' : 'Enter_reply_shift_Enter_for_new_line_Enter_to_send';
30
+ var placeholder = 'shift_enter_for_new_line_Enter_to_send';
32
31
  var _ParagraphPlugin$rend2 = (0, _slicedToArray2["default"])(_plugins.ParagraphPlugin.renderElements, 1),
33
32
  renderParagraph = _ParagraphPlugin$rend2[0];
34
33
  return renderParagraph((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _props), {}, {
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports["default"] = void 0;
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
10
- var _objectSpread6 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
10
+ var _objectSpread7 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
11
11
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
12
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
13
13
  var _react = _interopRequireWildcard(require("react"));
@@ -27,16 +27,17 @@ var _core = require("../../core");
27
27
  var _helper = require("../../plugins/callout/helper");
28
28
  var _helpers = require("../../plugins/check-list/helpers");
29
29
  var _helpers2 = require("../../plugins/code-block/helpers");
30
- var _helpers3 = require("../../plugins/file-view/helpers");
30
+ var _helpers3 = require("../../plugins/file-link/helpers");
31
+ var _helpers4 = require("../../plugins/file-view/helpers");
31
32
  var _transforms = require("../../plugins/list/transforms");
32
33
  var _helper2 = require("../../plugins/multi-column/helper");
33
- var _helpers4 = require("../../plugins/table/helpers");
34
+ var _helpers5 = require("../../plugins/table/helpers");
34
35
  var _tableSizePopover = _interopRequireDefault(require("../../plugins/table/popover/table-size-popover"));
35
36
  var _helper3 = require("../../plugins/toggle-header/helper");
36
- var _helpers5 = require("../../plugins/video/helpers");
37
+ var _helpers6 = require("../../plugins/video/helpers");
37
38
  var _utils = require("../../utils");
38
39
  var _linkedRepoPopover = _interopRequireDefault(require("../linked-repo-popover"));
39
- var _helpers6 = require("../side-toolbar/helpers");
40
+ var _helpers7 = require("../side-toolbar/helpers");
40
41
  var _const = require("./const");
41
42
  require("./style.css");
42
43
  var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
@@ -61,6 +62,7 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
61
62
  quickInsertMenuSearchMap = _useState4[0],
62
63
  setQuickInsertMenuSearchMap = _useState4[1];
63
64
  var enableMetadataManagement = _context["default"].getSetting('enableMetadataManagement');
65
+ var hasLinkedRepos = _context["default"].hasLinkedRepos();
64
66
  var onInsertImageToggle = (0, _react.useCallback)(function () {
65
67
  callback && callback();
66
68
  var eventBus = _eventBus["default"].getInstance();
@@ -113,14 +115,14 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
113
115
  var eventBus = _eventBus["default"].getInstance();
114
116
  eventBus.dispatch(_constants.INTERNAL_EVENT.INSERT_ELEMENT, {
115
117
  type: _constants2.ELEMENT_TYPE.VIDEO,
116
- insertVideo: _helpers5.insertVideo
118
+ insertVideo: _helpers6.insertVideo
117
119
  });
118
120
  // eslint-disable-next-line react-hooks/exhaustive-deps
119
121
  }, []);
120
122
  var createTable = (0, _react.useCallback)(function (size) {
121
123
  callback && callback();
122
124
  var newInsertPosition = slateNode.type === _constants2.ELEMENT_TYPE.LIST_ITEM ? _constants2.INSERT_POSITION.AFTER : insertPosition;
123
- (0, _helpers4.insertTable)(editor, size, editor.selection, newInsertPosition);
125
+ (0, _helpers5.insertTable)(editor, size, editor.selection, newInsertPosition);
124
126
  // eslint-disable-next-line react-hooks/exhaustive-deps
125
127
  }, [editor, insertPosition, slateNode]);
126
128
  var openLinkDialog = (0, _react.useCallback)(function () {
@@ -133,6 +135,18 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
133
135
  });
134
136
  // eslint-disable-next-line react-hooks/exhaustive-deps
135
137
  }, [insertPosition]);
138
+ var openSelectFileDialog = (0, _react.useCallback)(function () {
139
+ callback && callback();
140
+ if (insertPosition === _constants2.INSERT_POSITION.AFTER) {
141
+ (0, _helpers7.insertElement)(editor, _constants2.PARAGRAPH, insertPosition);
142
+ }
143
+ var eventBus = _eventBus["default"].getInstance();
144
+ eventBus.dispatch(_constants.INTERNAL_EVENT.INSERT_ELEMENT, {
145
+ type: _constants2.ELEMENT_TYPE.FILE,
146
+ insertFileLinkCallback: _helpers3.insertFileLink
147
+ });
148
+ // eslint-disable-next-line react-hooks/exhaustive-deps
149
+ }, [editor, insertPosition]);
136
150
  var addEmbedLinkDialog = (0, _react.useCallback)(function () {
137
151
  callback && callback();
138
152
  var eventBus = _eventBus["default"].getInstance();
@@ -171,7 +185,7 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
171
185
  }, [editor, insertPosition, slateNode]);
172
186
  var onInsert = (0, _react.useCallback)(function (type) {
173
187
  callback && callback();
174
- (0, _helpers6.insertElement)(editor, type, insertPosition);
188
+ (0, _helpers7.insertElement)(editor, type, insertPosition);
175
189
  // eslint-disable-next-line react-hooks/exhaustive-deps
176
190
  }, [editor, insertPosition, slateNode]);
177
191
  var onInsertToggleHeader = (0, _react.useCallback)(function (type) {
@@ -189,7 +203,7 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
189
203
  }
190
204
  });
191
205
  } else if (insertPosition === _constants2.INSERT_POSITION.AFTER) {
192
- (0, _helpers6.insertElement)(editor, type, insertPosition);
206
+ (0, _helpers7.insertElement)(editor, type, insertPosition);
193
207
  (0, _helper.wrapCallout)(editor);
194
208
  }
195
209
  }, [callback, editor, insertPosition]);
@@ -289,18 +303,18 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
289
303
  wiki_id: wikiId,
290
304
  file_view_id: fileView.id
291
305
  };
292
- (0, _helpers3.insertFileView)(viewData, editor, insertPosition, slateNode);
306
+ (0, _helpers4.insertFileView)(viewData, editor, insertPosition, slateNode);
293
307
  })["catch"](function (error) {
294
308
  var errorMessage = (0, _commonUtils.getErrorMsg)(error);
295
309
  _toast["default"].danger(errorMessage);
296
310
  });
297
311
  }, [callback, editor, insertPosition, slateNode]);
298
312
  var dropDownItems = (0, _react.useMemo)(function () {
299
- var items = (0, _objectSpread6["default"])((0, _objectSpread6["default"])((0, _objectSpread6["default"])((0, _objectSpread6["default"])((0, _objectSpread6["default"])((0, _defineProperty2["default"])({}, _constants2.PARAGRAPH, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
313
+ var items = (0, _objectSpread7["default"])((0, _objectSpread7["default"])((0, _objectSpread7["default"])((0, _objectSpread7["default"])((0, _objectSpread7["default"])((0, _objectSpread7["default"])((0, _defineProperty2["default"])({}, _constants2.PARAGRAPH, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
300
314
  isHidden: !quickInsertMenuSearchMap[_constants2.PARAGRAPH],
301
315
  disabled: isEmptyNode,
302
316
  key: "sdoc-insert-menu-paragraph",
303
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.PARAGRAPH]),
317
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.PARAGRAPH]),
304
318
  onClick: function onClick() {
305
319
  return onInsert(_constants2.ELEMENT_TYPE.PARAGRAPH);
306
320
  }
@@ -329,21 +343,21 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
329
343
  }, {})), {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _constants2.UNORDERED_LIST, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
330
344
  isHidden: !quickInsertMenuSearchMap[_constants2.UNORDERED_LIST],
331
345
  key: "sdoc-insert-menu-unorder-list",
332
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.UNORDERED_LIST]),
346
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.UNORDERED_LIST]),
333
347
  onClick: function onClick() {
334
348
  onInsertList(_constants2.ELEMENT_TYPE.UNORDERED_LIST);
335
349
  }
336
350
  })), _constants2.ORDERED_LIST, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
337
351
  isHidden: !quickInsertMenuSearchMap[_constants2.ORDERED_LIST],
338
352
  key: "sdoc-insert-menu-order-list",
339
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.ORDERED_LIST]),
353
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.ORDERED_LIST]),
340
354
  onClick: function onClick() {
341
355
  onInsertList(_constants2.ELEMENT_TYPE.ORDERED_LIST);
342
356
  }
343
357
  })), _constants2.CHECK_LIST_ITEM, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
344
358
  isHidden: !quickInsertMenuSearchMap[_constants2.CHECK_LIST_ITEM],
345
359
  key: "sdoc-insert-menu-check-list",
346
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.CHECK_LIST_ITEM]),
360
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.CHECK_LIST_ITEM]),
347
361
  onClick: onInsertCheckList
348
362
  })), editor.editorType === _constants.WIKI_EDITOR && enableMetadataManagement && (0, _defineProperty2["default"])({}, _constants2.FILE_VIEW,
349
363
  /*#__PURE__*/
@@ -351,7 +365,7 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
351
365
  _react["default"].createElement(_dropdownMenuItem["default"], {
352
366
  isHidden: !quickInsertMenuSearchMap[_constants2.FILE_VIEW],
353
367
  key: "sdoc-insert-menu-file-view",
354
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.FILE_VIEW]),
368
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.FILE_VIEW]),
355
369
  className: "pr-2"
356
370
  }, /*#__PURE__*/_react["default"].createElement("i", {
357
371
  className: "sdocfont sdoc-arrow-right sdoc-dropdown-item-right-icon"
@@ -361,7 +375,7 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
361
375
  isHidden: !quickInsertMenuSearchMap[_constants2.IMAGE],
362
376
  disabled: isDisableImage,
363
377
  key: "sdoc-insert-menu-image",
364
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.IMAGE]),
378
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.IMAGE]),
365
379
  onClick: onInsertImageToggle
366
380
  })), editor.editorType !== _constants.DOCUMENT_PLUGIN_EDITOR && (0, _defineProperty2["default"])({}, _constants2.VIDEO,
367
381
  /*#__PURE__*/
@@ -370,7 +384,7 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
370
384
  isHidden: !quickInsertMenuSearchMap[_constants2.VIDEO],
371
385
  disabled: isDisableVideo,
372
386
  key: "sdoc-insert-menu-video",
373
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.VIDEO]),
387
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.VIDEO]),
374
388
  className: "pr-2"
375
389
  }, /*#__PURE__*/_react["default"].createElement("i", {
376
390
  className: "sdocfont sdoc-arrow-right sdoc-dropdown-item-right-icon"
@@ -392,14 +406,14 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
392
406
  }, t('Add_video_link')), editor.editorType !== _constants.WIKI_EDITOR && /*#__PURE__*/_react["default"].createElement("div", {
393
407
  className: "sdoc-dropdown-menu-item",
394
408
  onClick: openSelectVideoFileDialog
395
- }, t('Link_video_file'))))))), {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _constants2.TABLE,
409
+ }, t('Link_video_file'))))))), {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _constants2.TABLE,
396
410
  /*#__PURE__*/
397
411
  // eslint-disable-next-line react/jsx-indent
398
412
  _react["default"].createElement(_dropdownMenuItem["default"], {
399
413
  isHidden: !quickInsertMenuSearchMap[_constants2.TABLE],
400
414
  disabled: isDisableTable,
401
415
  key: "sdoc-insert-menu-table",
402
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.TABLE]),
416
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.TABLE]),
403
417
  className: "pr-2"
404
418
  }, /*#__PURE__*/_react["default"].createElement("i", {
405
419
  className: "sdocfont sdoc-arrow-right sdoc-dropdown-item-right-icon"
@@ -416,24 +430,29 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
416
430
  }))), _constants2.LINK, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
417
431
  isHidden: !quickInsertMenuSearchMap[_constants2.LINK],
418
432
  key: "sdoc-insert-menu-link",
419
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.LINK]),
433
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.LINK]),
420
434
  onClick: openLinkDialog
421
- })), _elementType.EMBED_LINK, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
435
+ })), editor.editorType === _constants.WIKI_EDITOR && hasLinkedRepos && (0, _defineProperty2["default"])({}, _constants2.ELEMENT_TYPE.FILE, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
436
+ isHidden: !quickInsertMenuSearchMap[_constants2.ELEMENT_TYPE.FILE],
437
+ key: "sdoc-insert-menu-file-link",
438
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.FILE]),
439
+ onClick: openSelectFileDialog
440
+ }))), {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _elementType.EMBED_LINK, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
422
441
  isHidden: !quickInsertMenuSearchMap[_elementType.EMBED_LINK],
423
442
  key: "sdoc-insert-menu-embed-link",
424
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.EMBED_LINK]),
443
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.EMBED_LINK]),
425
444
  onClick: addEmbedLinkDialog
426
445
  })), _constants2.CODE_BLOCK, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
427
446
  isHidden: !quickInsertMenuSearchMap[_constants2.CODE_BLOCK],
428
447
  disabled: isDisableCodeBlock,
429
448
  key: "sdoc-insert-menu-code-block",
430
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.CODE_BLOCK]),
449
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.CODE_BLOCK]),
431
450
  onClick: onInsertCodeBlock
432
451
  })), _constants2.CALL_OUT, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
433
452
  isHidden: !quickInsertMenuSearchMap[_constants2.CALL_OUT],
434
453
  disabled: isDisableCallout,
435
454
  key: "sdoc-insert-menu-callout",
436
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.CALL_OUT]),
455
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.CALL_OUT]),
437
456
  onClick: function onClick() {
438
457
  return onInsertCallout(_constants2.PARAGRAPH);
439
458
  }
@@ -441,7 +460,7 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
441
460
  isHidden: !quickInsertMenuSearchMap[_constants2.FORMULA],
442
461
  disabled: isDisableFormula,
443
462
  key: "sdoc-insert-menu-formula",
444
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.FORMULA]),
463
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.FORMULA]),
445
464
  onClick: onInsertFormula
446
465
  })));
447
466
  if (_commonUtils.isMobile) {
@@ -449,28 +468,28 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
449
468
  isHidden: !quickInsertMenuSearchMap[_constants2.PARAGRAPH],
450
469
  disabled: isEmptyNode,
451
470
  key: "sdoc-insert-menu-paragraph",
452
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.PARAGRAPH]),
471
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.PARAGRAPH]),
453
472
  onClick: function onClick() {
454
473
  return onInsert(_constants2.ELEMENT_TYPE.PARAGRAPH);
455
474
  }
456
475
  })), _constants2.UNORDERED_LIST, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
457
476
  isHidden: !quickInsertMenuSearchMap[_constants2.UNORDERED_LIST],
458
477
  key: "sdoc-insert-menu-unorder-list",
459
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.UNORDERED_LIST]),
478
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.UNORDERED_LIST]),
460
479
  onClick: function onClick() {
461
480
  onInsertList(_constants2.ELEMENT_TYPE.UNORDERED_LIST);
462
481
  }
463
482
  })), _constants2.ORDERED_LIST, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
464
483
  isHidden: !quickInsertMenuSearchMap[_constants2.ORDERED_LIST],
465
484
  key: "sdoc-insert-menu-order-list",
466
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.ORDERED_LIST]),
485
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.ORDERED_LIST]),
467
486
  onClick: function onClick() {
468
487
  onInsertList(_constants2.ELEMENT_TYPE.ORDERED_LIST);
469
488
  }
470
489
  })), _constants2.CHECK_LIST_ITEM, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
471
490
  isHidden: !quickInsertMenuSearchMap[_constants2.CHECK_LIST_ITEM],
472
491
  key: "sdoc-insert-menu-check-list",
473
- menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.CHECK_LIST_ITEM]),
492
+ menuConfig: (0, _objectSpread7["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.CHECK_LIST_ITEM]),
474
493
  onClick: onInsertCheckList
475
494
  }));
476
495
  }
@@ -488,7 +507,7 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
488
507
  });
489
508
  return items;
490
509
  // eslint-disable-next-line react-hooks/exhaustive-deps
491
- }, [quickInsertMenuSearchMap, isDisableImage, onInsertImageToggle, isDisableVideo, isDisableMultiColumn, onInsertVideoToggle, isDisableTable, editor, createTable, callback, handleClosePopover, openLinkDialog, addEmbedLinkDialog, onInsertCodeBlock, isDisableCallout, isDisableToggleHeader, onInsertCheckList, isEmptyNode, onInsertCallout, onInsertList, onInsert, createMultiColumn, isDisableHeader]);
510
+ }, [quickInsertMenuSearchMap, isDisableImage, onInsertImageToggle, isDisableVideo, isDisableMultiColumn, onInsertVideoToggle, isDisableTable, editor, createTable, callback, handleClosePopover, openLinkDialog, openSelectFileDialog, addEmbedLinkDialog, onInsertCodeBlock, isDisableCallout, isDisableToggleHeader, onInsertCheckList, isEmptyNode, onInsertCallout, onInsertList, onInsert, createMultiColumn, isDisableHeader, hasLinkedRepos]);
492
511
  var getSelectItemDom = function getSelectItemDom(selectIndex) {
493
512
  var dropDownItemWrapper = downDownWrapperRef.current;
494
513
  var searchedDropDownItemWrapper = [];
@@ -586,7 +605,7 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
586
605
  }, [clearSelectStyle, currentSelectIndex, downDownWrapperRef, onHandleInputFocus]);
587
606
  var onChange = (0, _react.useCallback)(function (e) {
588
607
  if (!downDownWrapperRef.current.isInputtingChinese) {
589
- var newMenuSearchMap = (0, _helpers6.getSearchedOperations)(_constants2.SIDE_QUICK_INSERT_MENUS_SEARCH_MAP, true, e, t, editor);
608
+ var newMenuSearchMap = (0, _helpers7.getSearchedOperations)(_constants2.SIDE_QUICK_INSERT_MENUS_SEARCH_MAP, true, e, t, editor);
590
609
  setQuickInsertMenuSearchMap(newMenuSearchMap);
591
610
  }
592
611
  }, [editor, t]);
@@ -19,16 +19,7 @@ var LinkedRepoList = function LinkedRepoList(_ref) {
19
19
  t = _useTranslation.t;
20
20
  var repoRef = (0, _react.useRef)(null);
21
21
  var enableRepos = (0, _react.useMemo)(function () {
22
- var repos = _context["default"].getWikiRepos();
23
- var wikiSettings = _context["default"].getWikiSettings();
24
- var linked_repos = wikiSettings.linked_repos;
25
- var linkedMap = linked_repos.reduce(function (ret, id) {
26
- ret[id] = true;
27
- return ret;
28
- }, {});
29
- return repos.filter(function (item) {
30
- return linkedMap[item.repo_id];
31
- });
22
+ return _context["default"].getLinkedRepos();
32
23
  }, []);
33
24
  var onAddLibraryClick = (0, _react.useCallback)(function () {
34
25
  var eventBus = _eventBus["default"].getInstance();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "3.0.166",
3
+ "version": "3.0.168",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -72,5 +72,5 @@
72
72
  "publishConfig": {
73
73
  "access": "public"
74
74
  },
75
- "gitHead": "3cba2e939b32f8a92c6548dd37db533996f8b968"
75
+ "gitHead": "b7391715a9e98b8178352f2370d2c39a8614d3f7"
76
76
  }