@seafile/sdoc-editor 3.0.86 → 3.0.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/dist/api/seafile-api.js +20 -21
  2. package/dist/constants/index.js +2 -1
  3. package/dist/context.js +25 -9
  4. package/dist/editor/sdoc-editor.js +3 -0
  5. package/dist/editor/wiki-editor.js +7 -2
  6. package/dist/extension/commons/insert-element-dialog/index.js +13 -26
  7. package/dist/extension/plugins/file-view/helpers.js +2 -14
  8. package/dist/extension/plugins/file-view/render-elem/index.js +15 -30
  9. package/dist/extension/toolbar/insert-element-toolbar/index.js +10 -9
  10. package/dist/extension/toolbar/linked-repo-popover/link-repo-list.css +40 -9
  11. package/dist/extension/toolbar/linked-repo-popover/link-repo-list.js +35 -68
  12. package/dist/extension/toolbar/side-toolbar/insert-block-menu.js +11 -10
  13. package/package.json +3 -3
  14. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/constants.js +0 -16
  15. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/index.css +0 -96
  16. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/index.js +0 -156
  17. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/option.css +0 -49
  18. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/option.js +0 -53
  19. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/select-option-group.css +0 -37
  20. package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/select-option-group.js +0 -241
  21. package/dist/extension/plugins/file-view/insert-view-dialog/index.js +0 -232
  22. package/dist/extension/plugins/file-view/insert-view-dialog/modal-portal.js +0 -41
  23. /package/dist/{extension/plugins/file-view/insert-view-dialog/dropdown-select → assets/images}/lib.png +0 -0
@@ -312,35 +312,34 @@ var SeafileAPI = /*#__PURE__*/function () {
312
312
  return this.req.get(url);
313
313
  }
314
314
  }, {
315
- key: "insertWikiView",
316
- value: function insertWikiView(wikiId, docUuid, data) {
317
- var url = "/api/v2.1/wiki2/".concat(wikiId, "/views/");
315
+ key: "insertFileView",
316
+ value: function insertFileView(docUuid, wikiId, data) {
317
+ var url = "/api/v2.1/wiki2/".concat(wikiId, "/file-views/");
318
318
  var form = new FormData();
319
- form.append('file_uuid', docUuid);
320
- form.append('name', data.view_name);
321
- form.append('type', data.view_type);
322
- form.append('link_repo_id', data.link_repo_id);
323
- return this.req.post(url, form);
324
- }
325
- }, {
326
- key: "duplicateWikiView",
327
- value: function duplicateWikiView(wikiId, docUuid, viewId) {
328
- var url = "/api/v2.1/wiki2/".concat(wikiId, "/duplicate-view/");
329
- var form = new FormData();
330
- form.append('file_uuid', docUuid);
331
- form.append('view_id', viewId);
319
+ form.append('file_uuid', docUuid); // used for valid permission
320
+ form.append('name', data.name);
321
+ form.append('linked_repo_id', data.linked_repo_id);
322
+ form.append('type', data.type || 'table');
332
323
  return this.req.post(url, form);
333
324
  }
334
325
  }, {
335
- key: "modifyView",
336
- value: function modifyView(wikiId, viewId, viewData) {
337
- var url = '/api/v2.1/wiki2/' + wikiId + '/views/';
326
+ key: "modifyFileView",
327
+ value: function modifyFileView(wikiId, fileViewId, viewData) {
328
+ var url = '/api/v2.1/wiki2/' + wikiId + '/file-views/' + fileViewId + '/';
338
329
  var data = {
339
- view_id: viewId,
340
- view_data: viewData
330
+ viewData: viewData
341
331
  };
342
332
  return this.req.put(url, data);
343
333
  }
334
+ }, {
335
+ key: "duplicateFileView",
336
+ value: function duplicateFileView(docUuid, wikiId, fileViewId) {
337
+ var url = "/api/v2.1/wiki2/".concat(wikiId, "/file-views/").concat(fileViewId, "/duplicate/");
338
+ var form = new FormData();
339
+ form.append('file_uuid', docUuid); // used for valid permission
340
+
341
+ return this.req.post(url, form);
342
+ }
344
343
  }]);
345
344
  }();
346
345
  var _default = exports["default"] = SeafileAPI;
@@ -79,7 +79,8 @@ var INTERNAL_EVENT = exports.INTERNAL_EVENT = {
79
79
  CREATE_WHITEBOARD_FILE: 'create_whiteboard_file',
80
80
  GENERATE_EXDRAW_READ_ONLY_LINK: 'generate_exdraw_read_only_link',
81
81
  TRANSFER_PREVIEW_FILE_ID: 'transfer_preview_file_id',
82
- FILE_METADATA_COMPONENT: 'file_metadata_component'
82
+ FILE_METADATA_COMPONENT: 'file_metadata_component',
83
+ ADD_WIKI_LIBRARY_TOGGLE: 'add_wiki_library_click'
83
84
  };
84
85
  var PAGE_EDIT_AREA_WIDTH = exports.PAGE_EDIT_AREA_WIDTH = 672; // 672 = 794 - 2[borderLeft + borderRight] - 120[paddingLeft + paddingRight]
85
86
  var COMMENT_EDITOR_EDIT_AREA_WIDTH = exports.COMMENT_EDITOR_EDIT_AREA_WIDTH = 364;
package/dist/context.js CHANGED
@@ -35,6 +35,22 @@ var Context = /*#__PURE__*/function () {
35
35
  _this.settings['originFileURL'] = originFileURL;
36
36
  }
37
37
  });
38
+ (0, _defineProperty2["default"])(this, "getWikiSettings", function () {
39
+ // patch: Resolving the issue of repos wikiSettings consuming too much localstorage.
40
+ if (window.wiki && window.wiki.config) {
41
+ var wikiSettings = window.wiki.config.wikiSettings;
42
+ return wikiSettings;
43
+ }
44
+ return _this.settings['wikiSettings'];
45
+ });
46
+ (0, _defineProperty2["default"])(this, "getWikiRepos", function () {
47
+ // patch: Resolving the issue of repos wikiSettings consuming too much localstorage.
48
+ if (window.wiki && window.wiki.config) {
49
+ var repos = window.wiki.config.repos;
50
+ return repos;
51
+ }
52
+ return _this.settings['repos'];
53
+ });
38
54
  (0, _defineProperty2["default"])(this, "uploadLocalImage", function (imageFiles) {
39
55
  var docUuid = _this.getSetting('docUuid');
40
56
  return _this.api.uploadSdocImage(docUuid, imageFiles).then(function (res) {
@@ -419,24 +435,24 @@ var Context = /*#__PURE__*/function () {
419
435
  return this.api.getFileMetadataInfo(docUuid, fileType);
420
436
  }
421
437
  }, {
422
- key: "insertWikiView",
423
- value: function insertWikiView(data) {
438
+ key: "insertFileView",
439
+ value: function insertFileView(data) {
424
440
  var wikiId = this.getSetting('wikiId');
425
441
  var docUuid = this.getSetting('docUuid');
426
- return this.api.insertWikiView(wikiId, docUuid, data);
442
+ return this.api.insertFileView(docUuid, wikiId, data);
427
443
  }
428
444
  }, {
429
- key: "duplicateWikiView",
430
- value: function duplicateWikiView(viewId) {
445
+ key: "duplicateFileView",
446
+ value: function duplicateFileView(fileViewId) {
431
447
  var wikiId = this.getSetting('wikiId');
432
448
  var docUuid = this.getSetting('docUuid');
433
- return this.api.duplicateWikiView(wikiId, docUuid, viewId);
449
+ return this.api.duplicateFileView(docUuid, wikiId, fileViewId);
434
450
  }
435
451
  }, {
436
- key: "modifyView",
437
- value: function modifyView(viewId, viewData) {
452
+ key: "modifyFileView",
453
+ value: function modifyFileView(viewId, fileViewId, viewData) {
438
454
  var wikiId = this.getSetting('wikiId');
439
- return this.api.modifyView(wikiId, viewId, viewData);
455
+ return this.api.modifyView(wikiId, fileViewId, viewData);
440
456
  }
441
457
  }]);
442
458
  }();
@@ -93,6 +93,9 @@ var SdocEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
93
93
 
94
94
  // eslint-disable-next-line react-hooks/exhaustive-deps
95
95
  }, []);
96
+ (0, _react.useEffect)(function () {
97
+ _localStorageUtils["default"].removeItem(_constants2.RECENT_COPY_CONTENT);
98
+ }, []);
96
99
 
97
100
  // useMount: init socket connection
98
101
  (0, _react.useEffect)(function () {
@@ -20,6 +20,7 @@ var _extension = require("../extension");
20
20
  var _insertElementDialog = _interopRequireDefault(require("../extension/commons/insert-element-dialog"));
21
21
  var _constants2 = require("../extension/constants");
22
22
  var _helpers = require("../extension/plugins/ai/ai-module/helpers");
23
+ var _linkRepoList = _interopRequireDefault(require("../extension/toolbar/linked-repo-popover/link-repo-list"));
23
24
  var _useColorContext = require("../hooks/use-color-context");
24
25
  var _useMathjax = _interopRequireDefault(require("../hooks/use-mathjax"));
25
26
  var _useScrollContext = require("../hooks/use-scroll-context");
@@ -73,10 +74,12 @@ var WikiEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
73
74
  validEditor.readonly = false;
74
75
  return function () {
75
76
  validEditor.selection = null;
76
- _localStorageUtils["default"].removeItem(_constants2.RECENT_COPY_CONTENT);
77
77
  };
78
78
  // eslint-disable-next-line react-hooks/exhaustive-deps
79
79
  }, []);
80
+ (0, _react.useEffect)(function () {
81
+ _localStorageUtils["default"].removeItem(_constants2.RECENT_COPY_CONTENT);
82
+ }, []);
80
83
 
81
84
  // useMount: init socket connection
82
85
  (0, _react.useEffect)(function () {
@@ -187,7 +190,9 @@ var WikiEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
187
190
  showComment: showComment
188
191
  })), /*#__PURE__*/_react["default"].createElement(_wikiOutline["default"], {
189
192
  doc: slateValue
190
- }))))), /*#__PURE__*/_react["default"].createElement(_insertElementDialog["default"], {
193
+ }), /*#__PURE__*/_react["default"].createElement("div", {
194
+ className: "sdoc-menu-popover sdoc-dropdown-menu sdoc-sub-dropdown-menu sdoc-insert-menu-file-view-popover"
195
+ }, /*#__PURE__*/_react["default"].createElement(_linkRepoList["default"], null)))))), /*#__PURE__*/_react["default"].createElement(_insertElementDialog["default"], {
191
196
  editor: validEditor
192
197
  }));
193
198
  });
@@ -15,17 +15,16 @@ var _context = _interopRequireDefault(require("../../../context"));
15
15
  var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
16
16
  var _constants2 = require("../../constants");
17
17
  var _index = _interopRequireDefault(require("../../plugins/ai/ai-module/index.js"));
18
- var _index2 = _interopRequireDefault(require("../../plugins/file-view/insert-view-dialog/index.js"));
19
18
  var _formulaModal = _interopRequireDefault(require("../../plugins/formula/menu/formula-modal.js"));
20
19
  var _helpers = require("../../plugins/image/helpers");
21
20
  var _addLinkDialog = _interopRequireDefault(require("../../plugins/link/dialog/add-link-dialog"));
22
21
  var _dialogs = require("../../plugins/table/dialogs");
23
- var _index3 = require("../../plugins/video/constants/index.js");
24
- var _index4 = _interopRequireDefault(require("../../plugins/video/dialog/add-video-link-dialog/index.js"));
22
+ var _index2 = require("../../plugins/video/constants/index.js");
23
+ var _index3 = _interopRequireDefault(require("../../plugins/video/dialog/add-video-link-dialog/index.js"));
25
24
  var _helpers2 = require("../../plugins/video/helpers");
26
- var _index5 = _interopRequireDefault(require("../file-insert-dialog/index.js"));
27
- var _index6 = _interopRequireDefault(require("../select-file-dialog/index.js"));
28
- var _index7 = _interopRequireDefault(require("../wiki-file-insert-dialog/index.js"));
25
+ var _index4 = _interopRequireDefault(require("../file-insert-dialog/index.js"));
26
+ var _index5 = _interopRequireDefault(require("../select-file-dialog/index.js"));
27
+ var _index6 = _interopRequireDefault(require("../wiki-file-insert-dialog/index.js"));
29
28
  var InsertElementDialog = function InsertElementDialog(_ref) {
30
29
  var editor = _ref.editor;
31
30
  var _useState = (0, _react.useState)(''),
@@ -101,7 +100,7 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
101
100
  var onVideoFileChanged = (0, _react.useCallback)(function (event) {
102
101
  var files = event.target.files;
103
102
  // Show warning for 3s and no further insertion if video file is more than 5MB
104
- if (files[0].size > _index3.VIDEO_MAX_SIZE_5MB) {
103
+ if (files[0].size > _index2.VIDEO_MAX_SIZE_5MB) {
105
104
  handleDisplayAlert();
106
105
  event.target.value = null;
107
106
  return;
@@ -223,7 +222,7 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
223
222
  insertLinkCallback: insertLinkCallback,
224
223
  closeDialog: closeDialog
225
224
  };
226
- return /*#__PURE__*/_react["default"].createElement(_index6["default"], sdocLinkProps);
225
+ return /*#__PURE__*/_react["default"].createElement(_index5["default"], sdocLinkProps);
227
226
  }
228
227
  case _constants2.ELEMENT_TYPE.FILE_LINK:
229
228
  {
@@ -233,7 +232,7 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
233
232
  insertLinkCallback: insertLinkCallback,
234
233
  closeDialog: closeDialog
235
234
  };
236
- return /*#__PURE__*/_react["default"].createElement(_index6["default"], fileLinkProps);
235
+ return /*#__PURE__*/_react["default"].createElement(_index5["default"], fileLinkProps);
237
236
  }
238
237
  case _constants2.ELEMENT_TYPE.WHITEBOARD:
239
238
  {
@@ -243,7 +242,7 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
243
242
  insertWhiteboardFile: insertWhiteboardFile,
244
243
  closeDialog: closeDialog
245
244
  };
246
- return /*#__PURE__*/_react["default"].createElement(_index6["default"], whiteboardProps);
245
+ return /*#__PURE__*/_react["default"].createElement(_index5["default"], whiteboardProps);
247
246
  }
248
247
  case _constants2.ELEMENT_TYPE.VIDEO:
249
248
  {
@@ -253,23 +252,11 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
253
252
  insertVideoCallback: insertVideoCallback,
254
253
  closeDialog: closeDialog
255
254
  };
256
- return /*#__PURE__*/_react["default"].createElement(_index6["default"], videoProps);
255
+ return /*#__PURE__*/_react["default"].createElement(_index5["default"], videoProps);
257
256
  }
258
257
  case _constants2.ELEMENT_TYPE.VIDEO_LINK:
259
258
  {
260
- return /*#__PURE__*/_react["default"].createElement(_index4["default"], props);
261
- }
262
- case _constants2.ELEMENT_TYPE.FILE_VIEW:
263
- {
264
- var _props = {
265
- editor: validEditor,
266
- element: element,
267
- slateNode: slateNode,
268
- insertPosition: insertPosition,
269
- dialogType: dialogType,
270
- closeDialog: closeDialog
271
- };
272
- return /*#__PURE__*/_react["default"].createElement(_index2["default"], _props);
259
+ return /*#__PURE__*/_react["default"].createElement(_index3["default"], props);
273
260
  }
274
261
  case _constants2.ELEMENT_TYPE.FORMULA:
275
262
  {
@@ -313,13 +300,13 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
313
300
  case _constants2.ELEMENT_TYPE.FILE_LINK_INSET_INPUT_TEMP:
314
301
  {
315
302
  if (editor.editorType === _constants.WIKI_EDITOR) {
316
- return /*#__PURE__*/_react["default"].createElement(_index7["default"], {
303
+ return /*#__PURE__*/_react["default"].createElement(_index6["default"], {
317
304
  element: slateNode,
318
305
  editor: editor,
319
306
  closeDialog: closeDialog
320
307
  });
321
308
  }
322
- return /*#__PURE__*/_react["default"].createElement(_index5["default"], {
309
+ return /*#__PURE__*/_react["default"].createElement(_index4["default"], {
323
310
  element: slateNode,
324
311
  editor: editor,
325
312
  closeDialog: closeDialog
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.updateFileView = exports.insertFileView = exports.getWikiSettings = exports.getFileUrl = exports.getAccessibleRepos = exports.genFileViewNode = exports.calculateSize = void 0;
7
+ exports.updateFileView = exports.insertFileView = exports.getFileUrl = exports.genFileViewNode = exports.calculateSize = void 0;
8
8
  var _slate = require("@seafile/slate");
9
9
  var _slateReact = require("@seafile/slate-react");
10
10
  var _slugid = _interopRequireDefault(require("slugid"));
@@ -18,18 +18,6 @@ var getFileUrl = exports.getFileUrl = function getFileUrl(element) {
18
18
  view_id = data.view_id;
19
19
  return "".concat(serviceUrl, "/wiki/").concat(wiki_id, "/repo-views/").concat(view_id, "/");
20
20
  };
21
- var getWikiSettings = exports.getWikiSettings = function getWikiSettings() {
22
- var wikiId = _context["default"].getSetting('wikiId');
23
- var WIKI_SETTING_INTO_KEY = "seafile_wiki_".concat(wikiId, "_settings_info");
24
- var settings = window.localStorage.getItem(WIKI_SETTING_INTO_KEY);
25
- return JSON.parse(settings);
26
- };
27
- var getAccessibleRepos = exports.getAccessibleRepos = function getAccessibleRepos() {
28
- var wikiId = _context["default"].getSetting('wikiId');
29
- var WIKI_REPO_INFO_KEY = "seafile_wiki_".concat(wikiId, "_repos_info");
30
- var repos = window.localStorage.getItem(WIKI_REPO_INFO_KEY);
31
- return JSON.parse(repos);
32
- };
33
21
  var genFileViewNode = exports.genFileViewNode = function genFileViewNode(data) {
34
22
  return {
35
23
  id: _slugid["default"].nice(),
@@ -43,7 +31,7 @@ var genFileViewNode = exports.genFileViewNode = function genFileViewNode(data) {
43
31
  };
44
32
  var insertFileView = exports.insertFileView = function insertFileView(data, editor, position, slateNode) {
45
33
  if (!data) return;
46
- if (!data.view_name || !data.view_type || !data.link_repo_id) return;
34
+ if (!data.wiki_id || !data.file_view_id) return;
47
35
  var fileViewNode = genFileViewNode(data);
48
36
  if (position === _constants.INSERT_POSITION.AFTER) {
49
37
  var path = _slate.Editor.path(editor, editor.selection);
@@ -15,17 +15,18 @@ var _slateReact = require("@seafile/slate-react");
15
15
  var _classnames = _interopRequireDefault(require("classnames"));
16
16
  var _toast = _interopRequireDefault(require("../../../../components/toast"));
17
17
  var _context = _interopRequireDefault(require("../../../../context"));
18
+ var _useScrollContext = require("../../../../hooks/use-scroll-context");
18
19
  var _commonUtils = require("../../../../utils/common-utils");
19
20
  var _localStorageUtils = _interopRequireDefault(require("../../../../utils/local-storage-utils"));
20
21
  var _constants = require("../../../constants");
21
22
  var _helpers = require("../helpers");
22
- var _rename = _interopRequireDefault(require("../rename"));
23
23
  require("./index.css");
24
- var FileView = function FileView(_ref) {
24
+ var FileViewPlugin = function FileViewPlugin(_ref) {
25
25
  var element = _ref.element,
26
26
  children = _ref.children,
27
27
  attributes = _ref.attributes;
28
28
  var data = element.data;
29
+ var scrollRef = (0, _useScrollContext.useScrollContext)();
29
30
  var editor = (0, _slateReact.useSlateStatic)();
30
31
  var isSelected = (0, _slateReact.useSelected)();
31
32
  var _useReadOnly = (0, _slateReact.useReadOnly)(),
@@ -46,28 +47,26 @@ var FileView = function FileView(_ref) {
46
47
  var viewSettings = (0, _react.useMemo)(function () {
47
48
  var settings = _context["default"].getFileViewSetting();
48
49
  var viewSettings = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, settings), {}, {
49
- repoID: data.link_repo_id,
50
50
  view_data: {
51
- view_id: data.view_id,
52
51
  wiki_id: data.wiki_id,
52
+ file_view_id: data.file_view_id,
53
53
  height: data.height,
54
54
  width: data.width
55
55
  }
56
56
  });
57
57
  return viewSettings;
58
- }, [data.height, data.link_repo_id, data.view_id, data.width, data.wiki_id]);
58
+ }, [data.file_view_id, data.height, data.width, data.wiki_id]);
59
59
  (0, _react.useEffect)(function () {
60
60
  var copyContent = _localStorageUtils["default"].getItem(_constants.RECENT_COPY_CONTENT);
61
61
  var wikiId = _context["default"].getSetting('wikiId');
62
62
  if (wikiId !== data.wiki_id) return;
63
63
  if (!copyContent) return;
64
64
  var stringContent = JSON.stringify(copyContent);
65
- if (stringContent.indexOf(data.wiki_id) > -1 && stringContent.indexOf(data.view_id) > -1) {
66
- _context["default"].duplicateWikiView(data.view_id).then(function (res) {
67
- var view = res.data.view;
65
+ if (stringContent.indexOf(data.wiki_id) > -1 && stringContent.indexOf(data.file_view_id) > -1) {
66
+ _context["default"].duplicateFileView(data.file_view_id).then(function (res) {
67
+ var fileView = res.data.file_view;
68
68
  var newData = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, data), {}, {
69
- view_id: view._id,
70
- view_name: view.name
69
+ file_view_id: fileView.id
71
70
  });
72
71
  (0, _helpers.updateFileView)(newData, editor, element);
73
72
  })["catch"](function (error) {
@@ -105,7 +104,8 @@ var FileView = function FileView(_ref) {
105
104
  var style = wrapperElement.style;
106
105
  style.width = size.width + 'px';
107
106
  style.height = size.height + 'px';
108
- var databaseStyle = databaseRef.current.style;
107
+ var _databaseRef$current$ = databaseRef.current.getFileBaseElement(),
108
+ databaseStyle = _databaseRef$current$.style;
109
109
  databaseStyle.width = size.width - 4 + 'px';
110
110
  databaseStyle.height = size.height - 4 + 'px';
111
111
  setMovingSize(size);
@@ -155,16 +155,6 @@ var FileView = function FileView(_ref) {
155
155
  }
156
156
  return null;
157
157
  }, [data]);
158
- var onNameCancel = (0, _react.useCallback)(function () {}, []);
159
- var onRename = (0, _react.useCallback)(function (newName) {
160
- var newData = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, element.data), {}, {
161
- view_name: newName
162
- });
163
- (0, _helpers.updateFileView)(newData, editor, element);
164
-
165
- // TODO:
166
- // context.modifyView(data.view_id, { view_name: newName });
167
- }, [editor, element]);
168
158
  return /*#__PURE__*/_react["default"].createElement("div", Object.assign({
169
159
  "data-id": element.id
170
160
  }, attributes, {
@@ -172,20 +162,15 @@ var FileView = function FileView(_ref) {
172
162
  contentEditable: "false",
173
163
  suppressContentEditableWarning: true
174
164
  }), /*#__PURE__*/_react["default"].createElement("div", {
175
- className: "sdoc-file-view-title"
176
- }, /*#__PURE__*/_react["default"].createElement(_rename["default"], {
177
- name: data.view_name,
178
- onRenameConfirm: onRename,
179
- onRenameCancel: onNameCancel
180
- })), /*#__PURE__*/_react["default"].createElement("div", {
181
165
  className: (0, _classnames["default"])('sdoc-file-view-content', {
182
166
  'is-selected': isSelected
183
167
  }),
184
168
  ref: wrapperRef,
185
169
  style: style
186
- }, /*#__PURE__*/_react["default"].createElement(_seafileDatabase.Database, {
170
+ }, /*#__PURE__*/_react["default"].createElement(_seafileDatabase.FileView, {
187
171
  settings: viewSettings,
188
- ref: databaseRef
172
+ ref: databaseRef,
173
+ scrollRef: scrollRef
189
174
  }), !readOnly && isSelected && /*#__PURE__*/_react["default"].createElement("span", {
190
175
  className: "file-view-resizer",
191
176
  ref: resizerRef,
@@ -195,5 +180,5 @@ var FileView = function FileView(_ref) {
195
180
  }, /*#__PURE__*/_react["default"].createElement("span", null, t('Width'), ':', parseInt(movingSize.width)), /*#__PURE__*/_react["default"].createElement("span", null, "\xA0\xA0"), /*#__PURE__*/_react["default"].createElement("span", null, t('Height'), ':', parseInt(movingSize.height)))), children);
196
181
  };
197
182
  var renderFileView = exports.renderFileView = function renderFileView(props) {
198
- return /*#__PURE__*/_react["default"].createElement(FileView, props);
183
+ return /*#__PURE__*/_react["default"].createElement(FileViewPlugin, props);
199
184
  };
@@ -244,21 +244,22 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
244
244
  var wikiId = _context["default"].getSetting('wikiId');
245
245
  var data = {
246
246
  wiki_id: wikiId,
247
- view_name: t('View_name'),
248
- view_type: 'table',
249
- link_repo_id: item.repo_id
247
+ name: item.repo_name,
248
+ linked_repo_id: item.repo_id,
249
+ type: 'table'
250
250
  };
251
- _context["default"].insertWikiView(data).then(function (res) {
252
- var view = res.data.view;
253
- var viewData = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, data), {}, {
254
- view_id: view._id
255
- });
251
+ _context["default"].insertFileView(data).then(function (res) {
252
+ var fileView = res.data;
253
+ var viewData = {
254
+ wiki_id: wikiId,
255
+ file_view_id: fileView.id
256
+ };
256
257
  (0, _helpers3.insertFileView)(viewData, editor, insertPosition, slateNode);
257
258
  })["catch"](function (error) {
258
259
  var errorMessage = (0, _commonUtils.getErrorMsg)(error);
259
260
  _toast["default"].danger(errorMessage);
260
261
  });
261
- }, [callback, editor, insertPosition, slateNode, t]);
262
+ }, [callback, editor, insertPosition, slateNode]);
262
263
  var dropDownItems = (0, _react.useMemo)(function () {
263
264
  var items = (0, _objectSpread6["default"])((0, _objectSpread6["default"])((0, _objectSpread6["default"])((0, _objectSpread6["default"])((0, _defineProperty2["default"])({}, _constants2.PARAGRAPH, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
264
265
  isHidden: !quickInsertMenuSearchMap[_constants2.PARAGRAPH],
@@ -1,22 +1,53 @@
1
+ .sdoc-insert-menu-file-view-popover .popover {
2
+ max-width: 300px;
3
+ }
4
+
1
5
  .sdoc-dropdown-menu .sdoc-linked-repo-list-wrapper {
2
6
  /* position: absolute; */
3
7
  background-color: #ffff;
4
8
  max-height: 370px;
5
- max-width: 200px;
6
- padding: 8px 0px;
9
+ padding: 0px !important;
10
+ width: 298px;
11
+ padding: 0px;
7
12
  left: -8px;
8
13
  }
9
14
 
10
- .sdoc-dropdown-menu .sdoc-linked-repo-list-wrapper .sdoc-linked-repo-list-search-wrapper {
11
- padding: 12px;
12
- }
13
-
14
- .sdoc-dropdown-menu .sdoc-linked-repo-list-wrapper .sdoc-linked-repo-list-search-wrapper>input {
15
- font-size: 12px;
16
- max-height: 30px;
15
+ .sdoc-dropdown-menu .sdoc-linked-repo-list-wrapper .sdoc-linked-repo-list-tip {
16
+ margin-top: 8px;
17
+ min-height: 32px;
18
+ padding: 3px 12px;
19
+ color: #666;
17
20
  }
18
21
 
19
22
  .sdoc-dropdown-menu .sdoc-linked-repo-list-wrapper .sdoc-linked-repo-list-content-wrapper {
20
23
  max-height: 300px;
21
24
  overflow-y: auto;
25
+ padding-bottom: 8px;
26
+ border-bottom: 1px solid #e9ecef;
27
+ }
28
+
29
+ .sdoc-dropdown-menu .sdoc-linked-repo-list-wrapper .sdoc-dropdown-menu-item {
30
+ min-height: 32px;
31
+ padding: 3px 12px;
32
+ display: flex;
33
+ align-items: center;
34
+ }
35
+
36
+ .sdoc-dropdown-menu .sdoc-linked-repo-list-wrapper .sdoc-dropdown-menu-item .lib-icon {
37
+ margin-right: 10px;
38
+ }
39
+
40
+ .sdoc-dropdown-menu .sdoc-linked-repo-list-wrapper .sdoc-linked-repo-list-add-toolbar {
41
+ min-height: 32px;
42
+ padding: 3px 12px;
43
+ }
44
+
45
+ .sdoc-dropdown-menu .sdoc-linked-repo-list-wrapper .sdoc-linked-repo-list-add-toolbar .sdocfont {
46
+ color: #666;
47
+ margin-right: 10px;
48
+ }
49
+
50
+ .sdoc-dropdown-menu .sdoc-linked-repo-list-wrapper .sdoc-linked-repo-list-add-toolbar:hover {
51
+ background: #f5f5f5;
52
+ cursor: pointer;
22
53
  }
@@ -1,97 +1,64 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
4
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports["default"] = void 0;
9
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
10
9
  var _react = _interopRequireWildcard(require("react"));
11
10
  var _reactI18next = require("react-i18next");
12
- var _reactstrap = require("reactstrap");
13
- var _helpers = require("../../plugins/file-view/helpers");
11
+ var _lib = _interopRequireDefault(require("../../../assets/images/lib.png"));
12
+ var _constants = require("../../../constants");
13
+ var _context = _interopRequireDefault(require("../../../context"));
14
+ var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
14
15
  require("./link-repo-list.css");
15
- var useStopPropagation = function useStopPropagation() {
16
- var stopPropagation = function stopPropagation(e) {
17
- var _e$nativeEvent$stopIm, _e$nativeEvent;
18
- e.stopPropagation();
19
- (_e$nativeEvent$stopIm = (_e$nativeEvent = e.nativeEvent).stopImmediatePropagation) === null || _e$nativeEvent$stopIm === void 0 ? void 0 : _e$nativeEvent$stopIm.call(_e$nativeEvent);
20
- };
21
- return {
22
- onClick: stopPropagation,
23
- onFocus: stopPropagation,
24
- onKeyDown: stopPropagation,
25
- onKeyUp: stopPropagation,
26
- onKeyPress: stopPropagation,
27
- onMouseDown: stopPropagation,
28
- onTouchStart: stopPropagation
29
- };
30
- };
31
- var useRepos = function useRepos() {
32
- var wikiSettings = (0, _helpers.getWikiSettings)();
33
- var accessibleRepos = (0, _helpers.getAccessibleRepos)();
34
- var linkedRepoIds = wikiSettings.linked_repos;
35
- var optionsMap = accessibleRepos.reduce(function (result, item) {
36
- result[item.repo_id] = item;
37
- return result;
38
- }, {});
39
- return linkedRepoIds.map(function (id) {
40
- return optionsMap[id];
41
- });
42
- };
43
16
  var LinkedRepoList = function LinkedRepoList(_ref) {
44
17
  var onRepoClick = _ref.onRepoClick;
45
18
  var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
46
19
  t = _useTranslation.t;
47
- var isComposingRef = (0, _react.useRef)(null);
48
20
  var repoRef = (0, _react.useRef)(null);
49
- var repos = useRepos();
50
- var _useState = (0, _react.useState)(repos || []),
51
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
52
- tables = _useState2[0],
53
- setTables = _useState2[1];
54
- var inputEvents = useStopPropagation();
55
- var onChange = (0, _react.useCallback)(function (event) {
56
- if (isComposingRef.current) return;
57
- var value = event.target.value.trim().toUpperCase();
58
- if (value) {
59
- var list = repos.filter(function (item) {
60
- return item.repo_name.toUpperCase().includes(value);
61
- });
62
- setTables(list);
63
- } else {
64
- setTables(repos);
65
- }
66
- }, [repos]);
67
- var onCompositionStart = (0, _react.useCallback)(function () {
68
- isComposingRef.current = true;
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
+ });
32
+ }, []);
33
+ var onAddLibraryClick = (0, _react.useCallback)(function () {
34
+ var eventBus = _eventBus["default"].getInstance();
35
+ eventBus.dispatch(_constants.INTERNAL_EVENT.ADD_WIKI_LIBRARY_TOGGLE);
69
36
  }, []);
70
- var onCompositionEnd = (0, _react.useCallback)(function (e) {
71
- isComposingRef.current = false;
72
- onChange(e);
73
- }, [onChange]);
74
37
  return /*#__PURE__*/_react["default"].createElement("div", {
75
38
  ref: repoRef,
76
39
  className: "sdoc-dropdown-menu-container sdoc-linked-repo-list-wrapper"
77
40
  }, /*#__PURE__*/_react["default"].createElement("div", {
78
- className: "sdoc-linked-repo-list-search-wrapper"
79
- }, /*#__PURE__*/_react["default"].createElement(_reactstrap.Input, Object.assign({
80
- placeholder: t('Search_1'),
81
- onChange: onChange,
82
- autoFocus: true,
83
- onCompositionStart: onCompositionStart,
84
- onCompositionEnd: onCompositionEnd
85
- }, inputEvents))), /*#__PURE__*/_react["default"].createElement("div", {
41
+ className: "sdoc-linked-repo-list-tip"
42
+ }, t('Show_files_from_a_linked_library')), /*#__PURE__*/_react["default"].createElement("div", {
86
43
  className: "sdoc-linked-repo-list-content-wrapper"
87
- }, tables.map(function (item) {
44
+ }, enableRepos.map(function (item) {
88
45
  return /*#__PURE__*/_react["default"].createElement("div", {
89
46
  key: item.repo_id,
90
47
  className: "sdoc-dropdown-menu-item text-truncate d-block",
91
48
  onClick: function onClick() {
92
49
  return onRepoClick(item);
93
50
  }
94
- }, item.repo_name);
95
- })));
51
+ }, /*#__PURE__*/_react["default"].createElement("img", {
52
+ className: "lib-icon",
53
+ src: _lib["default"],
54
+ width: "20",
55
+ alt: ""
56
+ }), item.repo_name);
57
+ })), /*#__PURE__*/_react["default"].createElement("div", {
58
+ className: "sdoc-linked-repo-list-add-toolbar",
59
+ onClick: onAddLibraryClick
60
+ }, /*#__PURE__*/_react["default"].createElement("i", {
61
+ className: "sdocfont sdoc-append"
62
+ }), t('Add library')));
96
63
  };
97
64
  var _default = exports["default"] = LinkedRepoList;