@seafile/sdoc-editor 3.0.165 → 3.0.167

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.
@@ -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 = {
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports["default"] = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _constants = require("../../../../constants");
11
+ var _context = _interopRequireDefault(require("../../../../context"));
11
12
  var _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
12
13
  var _constants2 = require("../../../constants");
13
14
  var _helpers = require("../helpers");
@@ -18,6 +19,7 @@ var FileLinkMenu = function FileLinkMenu(_ref) {
18
19
  eventBus = _ref.eventBus;
19
20
  var disabled = (0, _helpers.isMenuDisabled)(editor, readonly);
20
21
  var menuConfig = _constants2.MENUS_CONFIG_MAP[_constants2.FILE_LINK];
22
+ var shouldShow = (editor === null || editor === void 0 ? void 0 : editor.editorType) === _constants.WIKI_EDITOR && _context["default"].hasLinkedRepos();
21
23
  var openSelectFileDialog = (0, _react.useCallback)(function () {
22
24
  eventBus.dispatch(_constants.INTERNAL_EVENT.INSERT_ELEMENT, {
23
25
  type: _constants2.ELEMENT_TYPE.FILE_LINK,
@@ -27,6 +29,7 @@ var FileLinkMenu = function FileLinkMenu(_ref) {
27
29
 
28
30
  // eslint-disable-next-line react-hooks/exhaustive-deps
29
31
  }, [toggle, eventBus]);
32
+ if (!shouldShow) return null;
30
33
  return /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
31
34
  disabled: disabled,
32
35
  menuConfig: menuConfig,
@@ -106,7 +106,8 @@ var ImagePreviewer = /*#__PURE__*/function (_React$Component) {
106
106
  shouldReturnFocusAfterClose: false
107
107
  },
108
108
  zoomInTip: this.props.t('Zoom_in'),
109
- zoomOutTip: this.props.t('Zoom_out')
109
+ zoomOutTip: this.props.t('Zoom_out'),
110
+ closeTip: this.props.t('Close')
110
111
  });
111
112
  }
112
113
  }]);
@@ -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), {}, {