@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.
- package/dist/assets/css/dropdown-menu.css +0 -23
- package/dist/assets/css/sdoc-editor-plugins.css +3 -2
- package/dist/constants/index.js +1 -0
- package/dist/extension/commons/wiki-file-insert-dialog/index.js +16 -1
- package/dist/extension/constants/menus-config.js +1 -1
- package/dist/extension/plugins/sdoc-link/plugin.js +1 -1
- package/dist/extension/toolbar/insert-element-toolbar/index.js +42 -11
- package/dist/extension/toolbar/linked-repo-popover/index.js +36 -0
- package/dist/extension/toolbar/linked-repo-popover/link-repo-list.css +22 -0
- package/dist/extension/toolbar/linked-repo-popover/link-repo-list.js +85 -0
- package/dist/extension/toolbar/side-toolbar/insert-block-menu.js +44 -25
- package/dist/extension/utils/index.js +10 -10
- package/package.json +2 -2
|
@@ -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:
|
|
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
|
|
package/dist/constants/index.js
CHANGED
|
@@ -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
|
-
|
|
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:
|
|
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 (
|
|
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
|
|
31
|
+
var _helpers4 = require("../../plugins/table/helpers");
|
|
29
32
|
var _tableSizePopover = _interopRequireDefault(require("../../plugins/table/popover/table-size-popover"));
|
|
30
|
-
var
|
|
33
|
+
var _helpers5 = require("../../plugins/video/helpers");
|
|
31
34
|
var _utils = require("../../utils");
|
|
32
|
-
var
|
|
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:
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
|
|
258
|
-
}
|
|
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,
|
|
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
|
|
29
|
+
var _helpers4 = require("../../plugins/table/helpers");
|
|
26
30
|
var _tableSizePopover = _interopRequireDefault(require("../../plugins/table/popover/table-size-popover"));
|
|
27
|
-
var
|
|
28
|
-
var
|
|
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,
|
|
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,
|
|
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:
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
146
|
-
var
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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
|
-
|
|
153
|
-
|
|
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,
|
|
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(
|
|
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
|
|
24
|
-
top =
|
|
25
|
-
right =
|
|
26
|
-
bottom =
|
|
27
|
-
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$
|
|
66
|
-
top = _element$
|
|
67
|
-
left = _element$
|
|
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.
|
|
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": "
|
|
75
|
+
"gitHead": "beb2ea881f6636565f62cce5e3b58657df523304"
|
|
76
76
|
}
|