@seafile/sdoc-editor 3.0.53 → 3.0.55

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.
@@ -3,29 +3,6 @@
3
3
  min-width: 12rem;
4
4
  }
5
5
 
6
- .sdoc-dropdown-menu .sdoc-seatable-selected-table-list-wrapper {
7
- position: absolute;
8
- background-color: #ffff;
9
- max-height: 370px;
10
- max-width: 200px;
11
- padding: 8px 0px;
12
- left: -8px;
13
- }
14
-
15
- .sdoc-dropdown-menu .sdoc-seatable-selected-table-list-wrapper .sdoc-seatable-list-search-wrapper {
16
- padding: 12px;
17
- }
18
-
19
- .sdoc-dropdown-menu .sdoc-seatable-selected-table-list-wrapper .sdoc-seatable-list-search-wrapper>input {
20
- font-size: 12px;
21
- max-height: 30px;
22
- }
23
-
24
- .sdoc-dropdown-menu .sdoc-seatable-selected-table-list-wrapper .sdoc-seatable-list-wrapper {
25
- max-height: 300px;
26
- overflow-y: auto;
27
- }
28
-
29
6
  .sdoc-dropdown-menu .sdoc-dropdown-menu-divider {
30
7
  width: 100%;
31
8
  height: 0;
@@ -76,11 +76,12 @@
76
76
 
77
77
  .sdoc-editor__article .sdoc-checkbox-container .sdoc-checkbox-input-wrapper {
78
78
  display: flex;
79
- align-items: normal;
79
+ align-items: center;
80
+ display: -webkit-flex;
81
+ -webkit-align-items: center;
80
82
  }
81
83
 
82
84
  .sdoc-editor__article .sdoc-checkbox-container .sdoc-checkbox-input-wrapper .sdoc-checkbox-input {
83
- vertical-align: middle;
84
85
  margin-right: 5px;
85
86
  }
86
87
 
@@ -74,6 +74,7 @@ var INTERNAL_EVENT = exports.INTERNAL_EVENT = {
74
74
  TOGGLE_PRESENTATION_MODE: 'toggle_presentation_mode',
75
75
  CREATE_SDOC_FILE: 'create_sdoc_file',
76
76
  CREATE_WIKI_PAGE: 'create_wiki_page',
77
+ WIKI_PAGE_ID_CREATED: 'wiki_page_id_created',
77
78
  IMAGE_COLUMN_TOGGLE: 'Image_column_toggle',
78
79
  CREATE_WHITEBOARD_FILE: 'create_whiteboard_file',
79
80
  GENERATE_EXDRAW_READ_ONLY_LINK: 'generate_exdraw_read_only_link',
@@ -74,7 +74,11 @@ var WikiFileLinkInsertDialog = function WikiFileLinkInsertDialog(_ref) {
74
74
  height = _fileLinkInsertRef$cu.height;
75
75
  var popoverBottomY = popoverTop + height;
76
76
  var viewportHeight = window.innerHeight;
77
- if (popoverBottomY > viewportHeight) {
77
+
78
+ // Prevent to hidden popover after flipping
79
+ var flipTop = domNodeTop - height - topGap;
80
+ var isFlipSafe = flipTop >= 8;
81
+ if (popoverBottomY > viewportHeight && isFlipSafe) {
78
82
  // 8px for the gap between the popover and the bottom of the viewport
79
83
  var counterTopGap = 8;
80
84
  popoverTop = popoverTop - height - topGap - counterTopGap;
@@ -208,14 +212,25 @@ var WikiFileLinkInsertDialog = function WikiFileLinkInsertDialog(_ref) {
208
212
  setFiles(recentFiles);
209
213
  setHiddenMoreMenu(true);
210
214
  }, []);
215
+ var createWikiLink = function createWikiLink(_ref2) {
216
+ var pageId = _ref2.pageId,
217
+ pageName = _ref2.pageName,
218
+ wikiRepoId = _ref2.wikiRepoId;
219
+ (0, _helpers2.insertWikiPageLink)(editor, pageName, wikiRepoId, pageId);
220
+ };
211
221
  var onCreateFile = (0, _react.useCallback)(function (e) {
212
222
  e.stopPropagation();
213
223
  (0, _helpers.removeTempInput)(editor, element);
214
224
  var eventBus = _eventBus["default"].getInstance();
225
+ var unsubscribe = eventBus.subscribe(_constants.INTERNAL_EVENT.WIKI_PAGE_ID_CREATED, function (payload) {
226
+ createWikiLink(payload);
227
+ unsubscribe();
228
+ });
215
229
  var createName = newFileName.trim() || t('New_page');
216
230
  eventBus.dispatch(_constants.INTERNAL_EVENT.CREATE_WIKI_PAGE, {
217
231
  newFileName: createName
218
232
  });
233
+ // eslint-disable-next-line react-hooks/exhaustive-deps
219
234
  }, [editor, element, newFileName, t]);
220
235
  var createFileTipDefault = (0, _react.useMemo)(function () {
221
236
  return 'New_page';
@@ -372,7 +372,7 @@ var SIDE_INSERT_MENUS_CONFIG = exports.SIDE_INSERT_MENUS_CONFIG = (_SIDE_INSERT_
372
372
  type: _elementType.BLOCKQUOTE,
373
373
  text: 'Quote'
374
374
  }), _elementType.FILE_VIEW, {
375
- id: _elementType.FILE_VIEW,
375
+ id: 'sdoc-side-menu-item-file-view',
376
376
  iconClass: 'sdocfont sdoc-file-view',
377
377
  type: _elementType.FILE_VIEW,
378
378
  text: 'File_view'
@@ -27,7 +27,7 @@ var withSdocLink = function withSdocLink(editor) {
27
27
  };
28
28
  newEditor.isVoid = function (elem) {
29
29
  var type = elem.type;
30
- if (type === _constants.SDOC_LINK) {
30
+ if ([_constants.SDOC_LINK, _elementType.WIKI_LINK].includes(type)) {
31
31
  return true;
32
32
  }
33
33
  return isVoid(elem);
@@ -14,7 +14,9 @@ var _reactI18next = require("react-i18next");
14
14
  var _reactstrap = require("reactstrap");
15
15
  var _slate = require("@seafile/slate");
16
16
  var _slateReact = require("@seafile/slate-react");
17
+ var _toast = _interopRequireDefault(require("../../../components/toast"));
17
18
  var _constants = require("../../../constants");
19
+ var _context = _interopRequireDefault(require("../../../context"));
18
20
  var _commonUtils = require("../../../utils/common-utils");
19
21
  var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
20
22
  var _dropdownMenuItem = _interopRequireDefault(require("../../commons/dropdown-menu-item"));
@@ -23,13 +25,15 @@ var _core = require("../../core");
23
25
  var _helper = require("../../plugins/callout/helper");
24
26
  var _helpers = require("../../plugins/check-list/helpers");
25
27
  var _helpers2 = require("../../plugins/code-block/helpers");
28
+ var _helpers3 = require("../../plugins/file-view/helpers");
26
29
  var _transforms = require("../../plugins/list/transforms");
27
30
  var _helper2 = require("../../plugins/multi-column/helper");
28
- var _helpers3 = require("../../plugins/table/helpers");
31
+ var _helpers4 = require("../../plugins/table/helpers");
29
32
  var _tableSizePopover = _interopRequireDefault(require("../../plugins/table/popover/table-size-popover"));
30
- var _helpers4 = require("../../plugins/video/helpers");
33
+ var _helpers5 = require("../../plugins/video/helpers");
31
34
  var _utils = require("../../utils");
32
- var _helpers5 = require("../side-toolbar/helpers");
35
+ var _linkedRepoPopover = _interopRequireDefault(require("../linked-repo-popover"));
36
+ var _helpers6 = require("../side-toolbar/helpers");
33
37
  var _const = require("./const");
34
38
  require("./style.css");
35
39
  var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
@@ -92,14 +96,14 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
92
96
  var eventBus = _eventBus["default"].getInstance();
93
97
  eventBus.dispatch(_constants.INTERNAL_EVENT.INSERT_ELEMENT, {
94
98
  type: _constants2.ELEMENT_TYPE.VIDEO,
95
- insertVideo: _helpers4.insertVideo
99
+ insertVideo: _helpers5.insertVideo
96
100
  });
97
101
  // eslint-disable-next-line react-hooks/exhaustive-deps
98
102
  }, []);
99
103
  var createTable = (0, _react.useCallback)(function (size) {
100
104
  callback && callback();
101
105
  var newInsertPosition = slateNode.type === _constants2.ELEMENT_TYPE.LIST_ITEM ? _constants2.INSERT_POSITION.AFTER : insertPosition;
102
- (0, _helpers3.insertTable)(editor, size, editor.selection, newInsertPosition);
106
+ (0, _helpers4.insertTable)(editor, size, editor.selection, newInsertPosition);
103
107
  // eslint-disable-next-line react-hooks/exhaustive-deps
104
108
  }, [editor, insertPosition, slateNode]);
105
109
  var openLinkDialog = (0, _react.useCallback)(function () {
@@ -140,7 +144,7 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
140
144
  }, [editor, insertPosition, slateNode]);
141
145
  var onInsert = (0, _react.useCallback)(function (type) {
142
146
  callback && callback();
143
- (0, _helpers5.insertElement)(editor, type, insertPosition);
147
+ (0, _helpers6.insertElement)(editor, type, insertPosition);
144
148
  // eslint-disable-next-line react-hooks/exhaustive-deps
145
149
  }, [editor, insertPosition, slateNode]);
146
150
  var onInsertCallout = (0, _react.useCallback)(function (type) {
@@ -153,7 +157,7 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
153
157
  }
154
158
  });
155
159
  } else if (insertPosition === _constants2.INSERT_POSITION.AFTER) {
156
- (0, _helpers5.insertElement)(editor, type, insertPosition);
160
+ (0, _helpers6.insertElement)(editor, type, insertPosition);
157
161
  (0, _helper.wrapCallout)(editor);
158
162
  }
159
163
  }, [callback, editor, insertPosition]);
@@ -212,6 +216,26 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
212
216
  var newInsertPosition = slateNode.type === _constants2.ELEMENT_TYPE.LIST_ITEM ? _constants2.INSERT_POSITION.AFTER : insertPosition;
213
217
  (0, _helper2.insertMultiColumn)(editor, editor.selection, newInsertPosition, type);
214
218
  }, [callback, editor, insertPosition, slateNode]);
219
+ var onRepoClick = (0, _react.useCallback)(function (item) {
220
+ callback && callback();
221
+ var wikiId = _context["default"].getSetting('wikiId');
222
+ var data = {
223
+ wiki_id: wikiId,
224
+ view_name: t('View_name'),
225
+ view_type: 'table',
226
+ link_repo_id: item.repo_id
227
+ };
228
+ _context["default"].insertWikiView(data).then(function (res) {
229
+ var view = res.data.view;
230
+ var viewData = (0, _objectSpread6["default"])((0, _objectSpread6["default"])({}, data), {}, {
231
+ view_id: view._id
232
+ });
233
+ (0, _helpers3.insertFileView)(viewData, editor, insertPosition, slateNode);
234
+ })["catch"](function (error) {
235
+ var errorMessage = (0, _commonUtils.getErrorMsg)(error);
236
+ _toast["default"].danger(errorMessage);
237
+ });
238
+ }, [callback, editor, insertPosition, slateNode, t]);
215
239
  var dropDownItems = (0, _react.useMemo)(function () {
216
240
  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"], {
217
241
  isHidden: !quickInsertMenuSearchMap[_constants2.PARAGRAPH],
@@ -250,12 +274,19 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
250
274
  key: "sdoc-insert-menu-check-list",
251
275
  menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.CHECK_LIST_ITEM]),
252
276
  onClick: onInsertCheckList
253
- })), editor.editorType === _constants.WIKI_EDITOR && (0, _defineProperty2["default"])({}, _constants2.FILE_VIEW, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
277
+ })), editor.editorType === _constants.WIKI_EDITOR && (0, _defineProperty2["default"])({}, _constants2.FILE_VIEW,
278
+ /*#__PURE__*/
279
+ // eslint-disable-next-line react/jsx-indent
280
+ _react["default"].createElement(_dropdownMenuItem["default"], {
254
281
  isHidden: !quickInsertMenuSearchMap[_constants2.FILE_VIEW],
255
282
  key: "sdoc-insert-menu-file-view",
256
283
  menuConfig: (0, _objectSpread6["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.FILE_VIEW]),
257
- onClick: openFileViewDialog
258
- }))), {}, (0, _defineProperty2["default"])({}, _constants2.IMAGE, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
284
+ className: "pr-2"
285
+ }, /*#__PURE__*/_react["default"].createElement("i", {
286
+ className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
287
+ }), /*#__PURE__*/_react["default"].createElement(_linkedRepoPopover["default"], {
288
+ onRepoClick: onRepoClick
289
+ })))), {}, (0, _defineProperty2["default"])({}, _constants2.IMAGE, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
259
290
  isHidden: !quickInsertMenuSearchMap[_constants2.IMAGE],
260
291
  disabled: isDisableImage,
261
292
  key: "sdoc-insert-menu-image",
@@ -473,7 +504,7 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
473
504
  }, [clearSelectStyle, currentSelectIndex, downDownWrapperRef, onHandleInputFocus]);
474
505
  var onChange = (0, _react.useCallback)(function (e) {
475
506
  if (!downDownWrapperRef.current.isInputtingChinese) {
476
- var newMenuSearchMap = (0, _helpers5.getSearchedOperations)(_constants2.SIDE_QUICK_INSERT_MENUS_SEARCH_MAP, true, e, t, editor);
507
+ var newMenuSearchMap = (0, _helpers6.getSearchedOperations)(_constants2.SIDE_QUICK_INSERT_MENUS_SEARCH_MAP, true, e, t, editor);
477
508
  setQuickInsertMenuSearchMap(newMenuSearchMap);
478
509
  }
479
510
  }, [editor, t]);
@@ -0,0 +1,36 @@
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"] = LinkRepoPopover;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _reactstrap = require("reactstrap");
12
+ var _utils = require("../../utils");
13
+ var _linkRepoList = _interopRequireDefault(require("./link-repo-list"));
14
+ function LinkRepoPopover(_ref) {
15
+ var onRepoClick = _ref.onRepoClick;
16
+ var _useState = (0, _react.useState)('right-start'),
17
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
18
+ placement = _useState2[0],
19
+ setPlacement = _useState2[1];
20
+ (0, _react.useEffect)(function () {
21
+ var element = document.getElementById('sdoc-side-menu-item-file-view');
22
+ if ((0, _utils.isOverflowPortByDirection)(element, 'bottom')) {
23
+ setPlacement('right');
24
+ }
25
+ }, []);
26
+ return /*#__PURE__*/_react["default"].createElement(_reactstrap.UncontrolledPopover, {
27
+ target: "sdoc-side-menu-item-file-view",
28
+ trigger: "hover",
29
+ className: "sdoc-menu-popover sdoc-dropdown-menu sdoc-sub-dropdown-menu sdoc-insert-menu-file-view-popover",
30
+ placement: placement,
31
+ hideArrow: true,
32
+ fade: false
33
+ }, /*#__PURE__*/_react["default"].createElement(_linkRepoList["default"], {
34
+ onRepoClick: onRepoClick
35
+ }));
36
+ }
@@ -0,0 +1,22 @@
1
+ .sdoc-dropdown-menu .sdoc-linked-repo-list-wrapper {
2
+ /* position: absolute; */
3
+ background-color: #ffff;
4
+ max-height: 370px;
5
+ max-width: 200px;
6
+ padding: 8px 0px;
7
+ left: -8px;
8
+ }
9
+
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;
17
+ }
18
+
19
+ .sdoc-dropdown-menu .sdoc-linked-repo-list-wrapper .sdoc-linked-repo-list-content-wrapper {
20
+ max-height: 300px;
21
+ overflow-y: auto;
22
+ }
@@ -0,0 +1,85 @@
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 _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _reactI18next = require("react-i18next");
12
+ var _reactstrap = require("reactstrap");
13
+ var _helpers = require("../../plugins/file-view/helpers");
14
+ 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 LinkedRepoList = function LinkedRepoList(_ref) {
32
+ var onRepoClick = _ref.onRepoClick;
33
+ var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
34
+ t = _useTranslation.t;
35
+ var isComposingRef = (0, _react.useRef)(null);
36
+ var repoRef = (0, _react.useRef)(null);
37
+ var tablesRef = (0, _react.useRef)((0, _helpers.getAccessibleRepos)());
38
+ var _useState = (0, _react.useState)(tablesRef.current || []),
39
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
40
+ tables = _useState2[0],
41
+ setTables = _useState2[1];
42
+ var inputEvents = useStopPropagation();
43
+ var onChange = (0, _react.useCallback)(function (event) {
44
+ if (isComposingRef.current) return;
45
+ var value = event.target.value.trim().toUpperCase();
46
+ if (value) {
47
+ var list = tablesRef.current.filter(function (item) {
48
+ return item.repo_name.toUpperCase().includes(value);
49
+ });
50
+ setTables(list);
51
+ } else {
52
+ setTables(tablesRef.current);
53
+ }
54
+ }, []);
55
+ var onCompositionStart = (0, _react.useCallback)(function () {
56
+ isComposingRef.current = true;
57
+ }, []);
58
+ var onCompositionEnd = (0, _react.useCallback)(function (e) {
59
+ isComposingRef.current = false;
60
+ onChange(e);
61
+ }, [onChange]);
62
+ return /*#__PURE__*/_react["default"].createElement("div", {
63
+ ref: repoRef,
64
+ className: "sdoc-dropdown-menu-container sdoc-linked-repo-list-wrapper"
65
+ }, /*#__PURE__*/_react["default"].createElement("div", {
66
+ className: "sdoc-linked-repo-list-search-wrapper"
67
+ }, /*#__PURE__*/_react["default"].createElement(_reactstrap.Input, Object.assign({
68
+ placeholder: t('Search_1'),
69
+ onChange: onChange,
70
+ autoFocus: true,
71
+ onCompositionStart: onCompositionStart,
72
+ onCompositionEnd: onCompositionEnd
73
+ }, inputEvents))), /*#__PURE__*/_react["default"].createElement("div", {
74
+ className: "sdoc-linked-repo-list-content-wrapper"
75
+ }, tables.map(function (item) {
76
+ return /*#__PURE__*/_react["default"].createElement("div", {
77
+ key: item.repo_id,
78
+ className: "sdoc-dropdown-menu-item text-truncate d-block",
79
+ onClick: function onClick() {
80
+ return onRepoClick(item);
81
+ }
82
+ }, item.repo_name);
83
+ })));
84
+ };
85
+ var _default = exports["default"] = LinkedRepoList;
@@ -13,19 +13,24 @@ var _reactI18next = require("react-i18next");
13
13
  var _reactstrap = require("reactstrap");
14
14
  var _slate = require("@seafile/slate");
15
15
  var _slateReact = require("@seafile/slate-react");
16
+ var _toast = _interopRequireDefault(require("../../../components/toast"));
16
17
  var _constants = require("../../../constants");
18
+ var _context = _interopRequireDefault(require("../../../context"));
19
+ var _commonUtils = require("../../../utils/common-utils");
17
20
  var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
18
21
  var _dropdownMenuItem = _interopRequireDefault(require("../../commons/dropdown-menu-item"));
19
22
  var _constants2 = require("../../constants");
20
23
  var _helper = require("../../plugins/callout/helper");
21
24
  var _helpers = require("../../plugins/check-list/helpers");
22
25
  var _helpers2 = require("../../plugins/code-block/helpers");
26
+ var _helpers3 = require("../../plugins/file-view/helpers");
23
27
  var _transforms = require("../../plugins/list/transforms");
24
28
  var _helper2 = require("../../plugins/multi-column/helper");
25
- var _helpers3 = require("../../plugins/table/helpers");
29
+ var _helpers4 = require("../../plugins/table/helpers");
26
30
  var _tableSizePopover = _interopRequireDefault(require("../../plugins/table/popover/table-size-popover"));
27
- var _helpers4 = require("../../plugins/video/helpers");
28
- var _helpers5 = require("./helpers");
31
+ var _helpers5 = require("../../plugins/video/helpers");
32
+ var _linkedRepoPopover = _interopRequireDefault(require("../linked-repo-popover"));
33
+ var _helpers6 = require("./helpers");
29
34
  var InsertBlockMenu = function InsertBlockMenu(_ref) {
30
35
  var _ref$insertPosition = _ref.insertPosition,
31
36
  insertPosition = _ref$insertPosition === void 0 ? _constants2.INSERT_POSITION.CURRENT : _ref$insertPosition,
@@ -63,7 +68,7 @@ var InsertBlockMenu = function InsertBlockMenu(_ref) {
63
68
  }, [editor, insertPosition]);
64
69
  var addVideoLink = (0, _react.useCallback)(function () {
65
70
  if (insertPosition === _constants2.INSERT_POSITION.AFTER) {
66
- (0, _helpers5.insertElement)(editor, _constants2.PARAGRAPH, insertPosition);
71
+ (0, _helpers6.insertElement)(editor, _constants2.PARAGRAPH, insertPosition);
67
72
  }
68
73
  var eventBus = _eventBus["default"].getInstance();
69
74
  eventBus.dispatch(_constants.INTERNAL_EVENT.INSERT_ELEMENT, {
@@ -75,12 +80,12 @@ var InsertBlockMenu = function InsertBlockMenu(_ref) {
75
80
  }, [insertPosition, editor]);
76
81
  var openSelectVideoFileDialog = (0, _react.useCallback)(function () {
77
82
  if (insertPosition === _constants2.INSERT_POSITION.AFTER) {
78
- (0, _helpers5.insertElement)(editor, _constants2.PARAGRAPH, insertPosition);
83
+ (0, _helpers6.insertElement)(editor, _constants2.PARAGRAPH, insertPosition);
79
84
  }
80
85
  var eventBus = _eventBus["default"].getInstance();
81
86
  eventBus.dispatch(_constants.INTERNAL_EVENT.INSERT_ELEMENT, {
82
87
  type: _constants2.ELEMENT_TYPE.VIDEO,
83
- insertVideo: _helpers4.insertVideo,
88
+ insertVideo: _helpers5.insertVideo,
84
89
  insertPosition: insertPosition,
85
90
  slateNode: slateNode
86
91
  });
@@ -88,7 +93,7 @@ var InsertBlockMenu = function InsertBlockMenu(_ref) {
88
93
  }, [insertPosition, slateNode]);
89
94
  var createTable = (0, _react.useCallback)(function (size) {
90
95
  var newInsertPosition = slateNode.type === _constants2.ELEMENT_TYPE.LIST_ITEM ? _constants2.INSERT_POSITION.AFTER : insertPosition;
91
- (0, _helpers3.insertTable)(editor, size, editor.selection, newInsertPosition);
96
+ (0, _helpers4.insertTable)(editor, size, editor.selection, newInsertPosition);
92
97
 
93
98
  // eslint-disable-next-line react-hooks/exhaustive-deps
94
99
  }, [editor, insertPosition, slateNode]);
@@ -127,14 +132,14 @@ var InsertBlockMenu = function InsertBlockMenu(_ref) {
127
132
  // eslint-disable-next-line react-hooks/exhaustive-deps
128
133
  }, [editor, insertPosition, slateNode]);
129
134
  var onInsert = (0, _react.useCallback)(function (type) {
130
- (0, _helpers5.insertElement)(editor, type, insertPosition);
135
+ (0, _helpers6.insertElement)(editor, type, insertPosition);
131
136
  // eslint-disable-next-line react-hooks/exhaustive-deps
132
137
  }, [editor, insertPosition, slateNode]);
133
138
  var onInsertCallout = (0, _react.useCallback)(function (type) {
134
139
  if (insertPosition === _constants2.INSERT_POSITION.CURRENT) {
135
140
  (0, _helper.wrapCallout)(editor);
136
141
  } else if (insertPosition === _constants2.INSERT_POSITION.AFTER) {
137
- (0, _helpers5.insertElement)(editor, type, insertPosition);
142
+ (0, _helpers6.insertElement)(editor, type, insertPosition);
138
143
  (0, _helper.wrapCallout)(editor);
139
144
  }
140
145
  }, [editor, insertPosition]);
@@ -142,21 +147,26 @@ var InsertBlockMenu = function InsertBlockMenu(_ref) {
142
147
  var newInsertPosition = slateNode.type === _constants2.ELEMENT_TYPE.LIST_ITEM ? _constants2.INSERT_POSITION.AFTER : insertPosition;
143
148
  (0, _helper2.insertMultiColumn)(editor, editor.selection, newInsertPosition, type);
144
149
  }, [editor, insertPosition, slateNode]);
145
- var insertFileView = (0, _react.useCallback)(function () {
146
- var eventBus = _eventBus["default"].getInstance();
147
- eventBus.dispatch(_constants.INTERNAL_EVENT.INSERT_ELEMENT, {
148
- type: _constants2.ELEMENT_TYPE.FILE_VIEW,
149
- insertPosition: insertPosition,
150
- slateNode: slateNode
150
+ var onRepoClick = (0, _react.useCallback)(function (item) {
151
+ var wikiId = _context["default"].getSetting('wikiId');
152
+ var data = {
153
+ wiki_id: wikiId,
154
+ view_name: t('View_name'),
155
+ view_type: 'table',
156
+ link_repo_id: item.repo_id
157
+ };
158
+ _context["default"].insertWikiView(data).then(function (res) {
159
+ var view = res.data.view;
160
+ var viewData = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, data), {}, {
161
+ view_id: view._id
162
+ });
163
+ (0, _helpers3.insertFileView)(viewData, editor, insertPosition, slateNode);
164
+ })["catch"](function (error) {
165
+ var errorMessage = (0, _commonUtils.getErrorMsg)(error);
166
+ _toast["default"].danger(errorMessage);
151
167
  });
152
- // eslint-disable-next-line react-hooks/exhaustive-deps
153
- }, [insertPosition]);
154
- console.log(editor.editorType);
155
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, editor.editorType === _constants.WIKI_EDITOR && /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
156
- isHidden: !insertMenuSearchMap[_constants2.ELEMENT_TYPE.FILE_VIEW],
157
- menuConfig: (0, _objectSpread2["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.FILE_VIEW]),
158
- onClick: insertFileView
159
- }), [_constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.PARAGRAPH]].concat((0, _toConsumableArray2["default"])(_constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.HEADER])).map(function (item) {
168
+ }, [editor, insertPosition, slateNode, t]);
169
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, [_constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.PARAGRAPH]].concat((0, _toConsumableArray2["default"])(_constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.HEADER])).map(function (item) {
160
170
  return /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
161
171
  isHidden: !insertMenuSearchMap[item.type],
162
172
  disabled: isNodeEmpty && item.type === _constants2.PARAGRAPH,
@@ -182,14 +192,23 @@ var InsertBlockMenu = function InsertBlockMenu(_ref) {
182
192
  isHidden: !insertMenuSearchMap[_constants2.ELEMENT_TYPE.CHECK_LIST_ITEM],
183
193
  menuConfig: (0, _objectSpread2["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.CHECK_LIST_ITEM]),
184
194
  onClick: onInsertCheckList
185
- }), /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
195
+ }), editor.editorType === _constants.WIKI_EDITOR && /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
196
+ isHidden: !insertMenuSearchMap[_constants2.ELEMENT_TYPE.FILE_VIEW],
197
+ key: "sdoc-insert-menu-file-view",
198
+ menuConfig: (0, _objectSpread2["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.FILE_VIEW]),
199
+ className: "pr-2"
200
+ }, /*#__PURE__*/_react["default"].createElement("i", {
201
+ className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
202
+ }), /*#__PURE__*/_react["default"].createElement(_linkedRepoPopover["default"], {
203
+ onRepoClick: onRepoClick
204
+ })), /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
186
205
  isHidden: !insertMenuSearchMap[_constants2.ELEMENT_TYPE.IMAGE],
187
206
  menuConfig: (0, _objectSpread2["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.IMAGE]),
188
207
  onClick: onInsertImageToggle
189
208
  }), editor.editorType !== _constants.DOCUMENT_PLUGIN_EDITOR && /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
190
209
  isHidden: !insertMenuSearchMap[_constants2.ELEMENT_TYPE.VIDEO],
191
210
  key: "sdoc-insert-menu-video",
192
- disabled: (0, _helpers5.isInMultiColumnNode)(editor, slateNode),
211
+ disabled: (0, _helpers6.isInMultiColumnNode)(editor, slateNode),
193
212
  menuConfig: (0, _objectSpread2["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.VIDEO]),
194
213
  className: "pr-2"
195
214
  }, /*#__PURE__*/_react["default"].createElement("i", {
@@ -17,19 +17,19 @@ var isImage = exports.isImage = function isImage(url) {
17
17
  var isSameDomain = exports.isSameDomain = function isSameDomain(currentUrl, targetUrl) {
18
18
  return String(currentUrl).split('/')[2] === String(targetUrl).split('/')[2];
19
19
  };
20
- var isOverflowPortByDirection = exports.isOverflowPortByDirection = function isOverflowPortByDirection(element, direction) {
20
+ var isOverflowPortByDirection = exports.isOverflowPortByDirection = function isOverflowPortByDirection(targetDom, direction) {
21
21
  var viewWidth = window.innerWidth || document.documentElement.clientWidth;
22
22
  var viewHeight = window.innerHeight || document.documentElement.clientHeight;
23
- var _element$getBoundingC = element.getBoundingClientRect(),
24
- top = _element$getBoundingC.top,
25
- right = _element$getBoundingC.right,
26
- bottom = _element$getBoundingC.bottom,
27
- left = _element$getBoundingC.left;
23
+ var _targetDom$getBoundin = targetDom.getBoundingClientRect(),
24
+ top = _targetDom$getBoundin.top,
25
+ right = _targetDom$getBoundin.right,
26
+ bottom = _targetDom$getBoundin.bottom,
27
+ left = _targetDom$getBoundin.left;
28
28
  if (direction === 'top') {
29
29
  return top <= 0;
30
30
  }
31
31
  if (direction === 'bottom') {
32
- return bottom >= viewHeight;
32
+ return bottom + 370 >= viewHeight;
33
33
  }
34
34
  if (direction === 'left') {
35
35
  return left <= 0;
@@ -62,9 +62,9 @@ var onHandleOverflowScroll = exports.onHandleOverflowScroll = function onHandleO
62
62
  }
63
63
  };
64
64
  var getMenuPosition = exports.getMenuPosition = function getMenuPosition(element, editor) {
65
- var _element$getBoundingC2 = element.getBoundingClientRect(),
66
- top = _element$getBoundingC2.top,
67
- left = _element$getBoundingC2.left;
65
+ var _element$getBoundingC = element.getBoundingClientRect(),
66
+ top = _element$getBoundingC.top,
67
+ left = _element$getBoundingC.left;
68
68
  var menuTop = top - 42; // top = top distance - menu height
69
69
  var menuPosition = {
70
70
  top: menuTop,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "3.0.53",
3
+ "version": "3.0.55",
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": "6904355d314b760e4c87115534c9613f983ff7ed"
75
+ "gitHead": "beb2ea881f6636565f62cce5e3b58657df523304"
76
76
  }