@seafile/sdoc-editor 3.0.84 → 3.0.85
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/api/seafile-api.js +21 -20
- package/dist/assets/css/sdoc-editor-plugins.css +38 -0
- package/dist/constants/index.js +1 -2
- package/dist/context.js +9 -23
- package/dist/extension/commons/insert-element-dialog/index.js +26 -13
- package/dist/extension/plugins/code-block/render-elem.js +25 -3
- package/dist/extension/plugins/file-view/helpers.js +14 -2
- package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/constants.js +16 -0
- package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/index.css +96 -0
- package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/index.js +156 -0
- package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/lib.png +0 -0
- package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/option.css +49 -0
- package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/option.js +53 -0
- package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/select-option-group.css +37 -0
- package/dist/extension/plugins/file-view/insert-view-dialog/dropdown-select/select-option-group.js +241 -0
- package/dist/extension/plugins/file-view/insert-view-dialog/index.js +232 -0
- package/dist/extension/plugins/file-view/insert-view-dialog/modal-portal.js +41 -0
- package/dist/extension/plugins/file-view/render-elem/index.js +12 -5
- package/dist/extension/toolbar/insert-element-toolbar/index.js +7 -8
- package/dist/extension/toolbar/linked-repo-popover/link-repo-list.css +6 -8
- package/dist/extension/toolbar/linked-repo-popover/link-repo-list.js +67 -26
- package/dist/extension/toolbar/side-toolbar/insert-block-menu.js +8 -9
- package/package.json +3 -3
package/dist/api/seafile-api.js
CHANGED
|
@@ -312,34 +312,35 @@ var SeafileAPI = /*#__PURE__*/function () {
|
|
|
312
312
|
return this.req.get(url);
|
|
313
313
|
}
|
|
314
314
|
}, {
|
|
315
|
-
key: "
|
|
316
|
-
value: function
|
|
317
|
-
var url = "/api/v2.1/wiki2/".concat(wikiId, "/
|
|
315
|
+
key: "insertWikiView",
|
|
316
|
+
value: function insertWikiView(wikiId, docUuid, data) {
|
|
317
|
+
var url = "/api/v2.1/wiki2/".concat(wikiId, "/views/");
|
|
318
318
|
var form = new FormData();
|
|
319
|
-
form.append('file_uuid', docUuid);
|
|
320
|
-
form.append('name', data.
|
|
321
|
-
form.append('
|
|
322
|
-
form.append('
|
|
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);
|
|
323
332
|
return this.req.post(url, form);
|
|
324
333
|
}
|
|
325
334
|
}, {
|
|
326
|
-
key: "
|
|
327
|
-
value: function
|
|
328
|
-
var url = '/api/v2.1/wiki2/' + wikiId + '/
|
|
335
|
+
key: "modifyView",
|
|
336
|
+
value: function modifyView(wikiId, viewId, viewData) {
|
|
337
|
+
var url = '/api/v2.1/wiki2/' + wikiId + '/views/';
|
|
329
338
|
var data = {
|
|
330
|
-
|
|
339
|
+
view_id: viewId,
|
|
340
|
+
view_data: viewData
|
|
331
341
|
};
|
|
332
342
|
return this.req.put(url, data);
|
|
333
343
|
}
|
|
334
|
-
}, {
|
|
335
|
-
key: "duplicateFileRepo",
|
|
336
|
-
value: function duplicateFileRepo(docUuid, wikiId, fileRepoId) {
|
|
337
|
-
var url = "/api/v2.1/wiki2/".concat(wikiId, "/file-repos/").concat(fileRepoId, "/duplicate/");
|
|
338
|
-
var form = new FormData();
|
|
339
|
-
form.append('file_uuid', docUuid); // used for valid permission
|
|
340
|
-
|
|
341
|
-
return this.req.post(url);
|
|
342
|
-
}
|
|
343
344
|
}]);
|
|
344
345
|
}();
|
|
345
346
|
var _default = exports["default"] = SeafileAPI;
|
|
@@ -275,6 +275,12 @@
|
|
|
275
275
|
.sdoc-code-block-pre {
|
|
276
276
|
background: #FAFAFA;
|
|
277
277
|
border: 1px solid #f0f0f0;
|
|
278
|
+
position: relative;
|
|
279
|
+
overflow-y: hidden !important;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
.sdoc-code-block-pre.hidden {
|
|
283
|
+
padding-bottom: 48px !important;
|
|
278
284
|
}
|
|
279
285
|
|
|
280
286
|
.sdoc-code-block-pre .sdoc-code-no-wrap {
|
|
@@ -285,6 +291,38 @@
|
|
|
285
291
|
white-space: pre;
|
|
286
292
|
}
|
|
287
293
|
|
|
294
|
+
.sdoc-code-block-container .sdoc-code-block-hidden-icon {
|
|
295
|
+
height: 32px;
|
|
296
|
+
display: flex;
|
|
297
|
+
justify-content: center;
|
|
298
|
+
align-items: center;
|
|
299
|
+
position: absolute;
|
|
300
|
+
left: 48%;
|
|
301
|
+
bottom: 8px;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
.sdoc-code-block-container .sdoc-code-block-hidden-icon .icon-container {
|
|
305
|
+
width: 32px;
|
|
306
|
+
height: 20px;
|
|
307
|
+
background-color: #999;
|
|
308
|
+
border-radius: 30px;
|
|
309
|
+
display: flex;
|
|
310
|
+
align-items: center;
|
|
311
|
+
justify-content: center;
|
|
312
|
+
cursor: pointer;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
.sdoc-code-block-container .sdoc-code-block-hidden-icon .icon-container .sdocfont {
|
|
316
|
+
color: #fff;
|
|
317
|
+
font-size: 12px;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.sdoc-code-block-code.hide-code {
|
|
321
|
+
max-height: 580.2px;
|
|
322
|
+
display: block;
|
|
323
|
+
overflow: hidden;
|
|
324
|
+
}
|
|
325
|
+
|
|
288
326
|
.sdoc-code-block-code .sdoc-code-line {
|
|
289
327
|
position: relative;
|
|
290
328
|
counter-increment: number;
|
package/dist/constants/index.js
CHANGED
|
@@ -79,8 +79,7 @@ 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'
|
|
83
|
-
ADD_WIKI_LIBRARY_TOGGLE: 'add_wiki_library_click'
|
|
82
|
+
FILE_METADATA_COMPONENT: 'file_metadata_component'
|
|
84
83
|
};
|
|
85
84
|
var PAGE_EDIT_AREA_WIDTH = exports.PAGE_EDIT_AREA_WIDTH = 672; // 672 = 794 - 2[borderLeft + borderRight] - 120[paddingLeft + paddingRight]
|
|
86
85
|
var COMMENT_EDITOR_EDIT_AREA_WIDTH = exports.COMMENT_EDITOR_EDIT_AREA_WIDTH = 364;
|
package/dist/context.js
CHANGED
|
@@ -35,20 +35,6 @@ var Context = /*#__PURE__*/function () {
|
|
|
35
35
|
_this.settings['originFileURL'] = originFileURL;
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
|
-
(0, _defineProperty2["default"])(this, "getWikiSettings", function () {
|
|
39
|
-
if (window.wiki && window.wiki.config) {
|
|
40
|
-
var wikiSettings = window.wiki.config.wikiSettings;
|
|
41
|
-
return wikiSettings;
|
|
42
|
-
}
|
|
43
|
-
return _this.settings['wikiSettings'];
|
|
44
|
-
});
|
|
45
|
-
(0, _defineProperty2["default"])(this, "getWikiRepos", function () {
|
|
46
|
-
if (window.wiki && window.wiki.config) {
|
|
47
|
-
var repos = window.wiki.config.repos;
|
|
48
|
-
return repos;
|
|
49
|
-
}
|
|
50
|
-
return _this.settings['repos'];
|
|
51
|
-
});
|
|
52
38
|
(0, _defineProperty2["default"])(this, "uploadLocalImage", function (imageFiles) {
|
|
53
39
|
var docUuid = _this.getSetting('docUuid');
|
|
54
40
|
return _this.api.uploadSdocImage(docUuid, imageFiles).then(function (res) {
|
|
@@ -433,24 +419,24 @@ var Context = /*#__PURE__*/function () {
|
|
|
433
419
|
return this.api.getFileMetadataInfo(docUuid, fileType);
|
|
434
420
|
}
|
|
435
421
|
}, {
|
|
436
|
-
key: "
|
|
437
|
-
value: function
|
|
422
|
+
key: "insertWikiView",
|
|
423
|
+
value: function insertWikiView(data) {
|
|
438
424
|
var wikiId = this.getSetting('wikiId');
|
|
439
425
|
var docUuid = this.getSetting('docUuid');
|
|
440
|
-
return this.api.
|
|
426
|
+
return this.api.insertWikiView(wikiId, docUuid, data);
|
|
441
427
|
}
|
|
442
428
|
}, {
|
|
443
|
-
key: "
|
|
444
|
-
value: function
|
|
429
|
+
key: "duplicateWikiView",
|
|
430
|
+
value: function duplicateWikiView(viewId) {
|
|
445
431
|
var wikiId = this.getSetting('wikiId');
|
|
446
432
|
var docUuid = this.getSetting('docUuid');
|
|
447
|
-
return this.api.duplicateWikiView(
|
|
433
|
+
return this.api.duplicateWikiView(wikiId, docUuid, viewId);
|
|
448
434
|
}
|
|
449
435
|
}, {
|
|
450
|
-
key: "
|
|
451
|
-
value: function
|
|
436
|
+
key: "modifyView",
|
|
437
|
+
value: function modifyView(viewId, viewData) {
|
|
452
438
|
var wikiId = this.getSetting('wikiId');
|
|
453
|
-
return this.api.modifyView(wikiId,
|
|
439
|
+
return this.api.modifyView(wikiId, viewId, viewData);
|
|
454
440
|
}
|
|
455
441
|
}]);
|
|
456
442
|
}();
|
|
@@ -15,16 +15,17 @@ 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"));
|
|
18
19
|
var _formulaModal = _interopRequireDefault(require("../../plugins/formula/menu/formula-modal.js"));
|
|
19
20
|
var _helpers = require("../../plugins/image/helpers");
|
|
20
21
|
var _addLinkDialog = _interopRequireDefault(require("../../plugins/link/dialog/add-link-dialog"));
|
|
21
22
|
var _dialogs = require("../../plugins/table/dialogs");
|
|
22
|
-
var
|
|
23
|
-
var
|
|
23
|
+
var _index3 = require("../../plugins/video/constants/index.js");
|
|
24
|
+
var _index4 = _interopRequireDefault(require("../../plugins/video/dialog/add-video-link-dialog/index.js"));
|
|
24
25
|
var _helpers2 = require("../../plugins/video/helpers");
|
|
25
|
-
var
|
|
26
|
-
var
|
|
27
|
-
var
|
|
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"));
|
|
28
29
|
var InsertElementDialog = function InsertElementDialog(_ref) {
|
|
29
30
|
var editor = _ref.editor;
|
|
30
31
|
var _useState = (0, _react.useState)(''),
|
|
@@ -100,7 +101,7 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
|
|
|
100
101
|
var onVideoFileChanged = (0, _react.useCallback)(function (event) {
|
|
101
102
|
var files = event.target.files;
|
|
102
103
|
// Show warning for 3s and no further insertion if video file is more than 5MB
|
|
103
|
-
if (files[0].size >
|
|
104
|
+
if (files[0].size > _index3.VIDEO_MAX_SIZE_5MB) {
|
|
104
105
|
handleDisplayAlert();
|
|
105
106
|
event.target.value = null;
|
|
106
107
|
return;
|
|
@@ -222,7 +223,7 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
|
|
|
222
223
|
insertLinkCallback: insertLinkCallback,
|
|
223
224
|
closeDialog: closeDialog
|
|
224
225
|
};
|
|
225
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
226
|
+
return /*#__PURE__*/_react["default"].createElement(_index6["default"], sdocLinkProps);
|
|
226
227
|
}
|
|
227
228
|
case _constants2.ELEMENT_TYPE.FILE_LINK:
|
|
228
229
|
{
|
|
@@ -232,7 +233,7 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
|
|
|
232
233
|
insertLinkCallback: insertLinkCallback,
|
|
233
234
|
closeDialog: closeDialog
|
|
234
235
|
};
|
|
235
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
236
|
+
return /*#__PURE__*/_react["default"].createElement(_index6["default"], fileLinkProps);
|
|
236
237
|
}
|
|
237
238
|
case _constants2.ELEMENT_TYPE.WHITEBOARD:
|
|
238
239
|
{
|
|
@@ -242,7 +243,7 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
|
|
|
242
243
|
insertWhiteboardFile: insertWhiteboardFile,
|
|
243
244
|
closeDialog: closeDialog
|
|
244
245
|
};
|
|
245
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
246
|
+
return /*#__PURE__*/_react["default"].createElement(_index6["default"], whiteboardProps);
|
|
246
247
|
}
|
|
247
248
|
case _constants2.ELEMENT_TYPE.VIDEO:
|
|
248
249
|
{
|
|
@@ -252,11 +253,23 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
|
|
|
252
253
|
insertVideoCallback: insertVideoCallback,
|
|
253
254
|
closeDialog: closeDialog
|
|
254
255
|
};
|
|
255
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
256
|
+
return /*#__PURE__*/_react["default"].createElement(_index6["default"], videoProps);
|
|
256
257
|
}
|
|
257
258
|
case _constants2.ELEMENT_TYPE.VIDEO_LINK:
|
|
258
259
|
{
|
|
259
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
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);
|
|
260
273
|
}
|
|
261
274
|
case _constants2.ELEMENT_TYPE.FORMULA:
|
|
262
275
|
{
|
|
@@ -300,13 +313,13 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
|
|
|
300
313
|
case _constants2.ELEMENT_TYPE.FILE_LINK_INSET_INPUT_TEMP:
|
|
301
314
|
{
|
|
302
315
|
if (editor.editorType === _constants.WIKI_EDITOR) {
|
|
303
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
316
|
+
return /*#__PURE__*/_react["default"].createElement(_index7["default"], {
|
|
304
317
|
element: slateNode,
|
|
305
318
|
editor: editor,
|
|
306
319
|
closeDialog: closeDialog
|
|
307
320
|
});
|
|
308
321
|
}
|
|
309
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
322
|
+
return /*#__PURE__*/_react["default"].createElement(_index5["default"], {
|
|
310
323
|
element: slateNode,
|
|
311
324
|
editor: editor,
|
|
312
325
|
closeDialog: closeDialog
|
|
@@ -11,6 +11,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm
|
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _slate = require("@seafile/slate");
|
|
13
13
|
var _slateReact = require("@seafile/slate-react");
|
|
14
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
14
15
|
var _constants = require("../../../constants");
|
|
15
16
|
var _useScrollContext = require("../../../hooks/use-scroll-context");
|
|
16
17
|
var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
|
|
@@ -41,6 +42,10 @@ var CodeBlock = function CodeBlock(_ref) {
|
|
|
41
42
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
42
43
|
showHoverMenu = _useState4[0],
|
|
43
44
|
setShowHoverMenu = _useState4[1];
|
|
45
|
+
var _useState5 = (0, _react.useState)(false),
|
|
46
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
47
|
+
showAllCode = _useState6[0],
|
|
48
|
+
setShowAllCode = _useState6[1];
|
|
44
49
|
var onChangeLanguage = (0, _react.useCallback)(function (lang) {
|
|
45
50
|
var language = lang.value;
|
|
46
51
|
var path = _slateReact.ReactEditor.findPath(editor, element);
|
|
@@ -133,6 +138,10 @@ var CodeBlock = function CodeBlock(_ref) {
|
|
|
133
138
|
var handleScroll = function handleScroll() {
|
|
134
139
|
_eventBus["default"].getInstance().dispatch(_constants.INTERNAL_EVENT.UPDATE_SEARCH_REPLACE_HIGHLIGHT);
|
|
135
140
|
};
|
|
141
|
+
var isHiddenCodeBlockParts = children.length > 30;
|
|
142
|
+
var toggleHidden = function toggleHidden() {
|
|
143
|
+
setShowAllCode(!showAllCode);
|
|
144
|
+
};
|
|
136
145
|
return /*#__PURE__*/_react["default"].createElement("div", Object.assign({
|
|
137
146
|
"data-id": element.id
|
|
138
147
|
}, attributes, {
|
|
@@ -141,11 +150,24 @@ var CodeBlock = function CodeBlock(_ref) {
|
|
|
141
150
|
onMouseLeave: onMouseLeave
|
|
142
151
|
}), /*#__PURE__*/_react["default"].createElement("pre", {
|
|
143
152
|
onScroll: handleScroll,
|
|
144
|
-
className: 'sdoc-code-block-pre',
|
|
153
|
+
className: (0, _classnames["default"])('sdoc-code-block-pre', {
|
|
154
|
+
'hidden': isHiddenCodeBlockParts
|
|
155
|
+
}),
|
|
145
156
|
ref: codeBlockRef
|
|
146
157
|
}, /*#__PURE__*/_react["default"].createElement("code", {
|
|
147
|
-
className: "sdoc-code-block-code ".concat(white_space === 'nowrap' ? 'sdoc-code-no-wrap' : '')
|
|
148
|
-
}, children)),
|
|
158
|
+
className: "sdoc-code-block-code ".concat(white_space === 'nowrap' ? 'sdoc-code-no-wrap' : '', " ").concat(!showAllCode ? 'hide-code' : '')
|
|
159
|
+
}, children)), children.length > 30 && /*#__PURE__*/_react["default"].createElement("span", {
|
|
160
|
+
className: "sdoc-code-block-hidden-icon",
|
|
161
|
+
onClick: toggleHidden,
|
|
162
|
+
contentEditable: false,
|
|
163
|
+
suppressContentEditableWarning: true
|
|
164
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
165
|
+
className: "icon-container"
|
|
166
|
+
}, !showAllCode ? /*#__PURE__*/_react["default"].createElement("i", {
|
|
167
|
+
className: "sdocfont sdoc-arrow-down arrow"
|
|
168
|
+
}) : /*#__PURE__*/_react["default"].createElement("i", {
|
|
169
|
+
className: "sdocfont sdoc-arrow-up arrow"
|
|
170
|
+
}))), showHoverMenu && /*#__PURE__*/_react["default"].createElement(_hoverMenu["default"], {
|
|
149
171
|
menuPosition: menuPosition,
|
|
150
172
|
onChangeLanguage: onChangeLanguage,
|
|
151
173
|
language: element.language,
|
|
@@ -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.getFileUrl = exports.genFileViewNode = exports.calculateSize = void 0;
|
|
7
|
+
exports.updateFileView = exports.insertFileView = exports.getWikiSettings = exports.getFileUrl = exports.getAccessibleRepos = 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,6 +18,18 @@ 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
|
+
};
|
|
21
33
|
var genFileViewNode = exports.genFileViewNode = function genFileViewNode(data) {
|
|
22
34
|
return {
|
|
23
35
|
id: _slugid["default"].nice(),
|
|
@@ -31,7 +43,7 @@ var genFileViewNode = exports.genFileViewNode = function genFileViewNode(data) {
|
|
|
31
43
|
};
|
|
32
44
|
var insertFileView = exports.insertFileView = function insertFileView(data, editor, position, slateNode) {
|
|
33
45
|
if (!data) return;
|
|
34
|
-
if (!data.
|
|
46
|
+
if (!data.view_name || !data.view_type || !data.link_repo_id) return;
|
|
35
47
|
var fileViewNode = genFileViewNode(data);
|
|
36
48
|
if (position === _constants.INSERT_POSITION.AFTER) {
|
|
37
49
|
var path = _slate.Editor.path(editor, editor.selection);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var KeyCodes = {
|
|
8
|
+
Tab: 9,
|
|
9
|
+
Escape: 27,
|
|
10
|
+
Esc: 27,
|
|
11
|
+
LeftArrow: 37,
|
|
12
|
+
UpArrow: 38,
|
|
13
|
+
RightArrow: 39,
|
|
14
|
+
DownArrow: 40
|
|
15
|
+
};
|
|
16
|
+
var _default = exports["default"] = KeyCodes;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
.sdoc-select.group-select {
|
|
2
|
+
position: relative;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.sdoc-select.group-select.custom-select {
|
|
6
|
+
display: flex;
|
|
7
|
+
padding: 5px 10px;
|
|
8
|
+
border-radius: 3px;
|
|
9
|
+
align-items: center;
|
|
10
|
+
justify-content: space-between;
|
|
11
|
+
max-width: 900px;
|
|
12
|
+
user-select: none;
|
|
13
|
+
text-align: left;
|
|
14
|
+
border-color: 1px solid rgba(0, 40, 100, 0.12);
|
|
15
|
+
height: auto;
|
|
16
|
+
min-height: 38px;
|
|
17
|
+
cursor: pointer;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.sdoc-select.group-select.custom-select:focus,
|
|
21
|
+
.sdoc-select.group-select.custom-select.focus {
|
|
22
|
+
border-color: #1991eb !important;
|
|
23
|
+
box-shadow: 0 0 0 2px rgba(70, 127, 207, 0.25);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.sdoc-select.group-select.custom-select.disabled:focus,
|
|
27
|
+
.sdoc-select.group-select.custom-select.focus.disabled,
|
|
28
|
+
.sdoc-select.group-select.custom-select.disabled:hover {
|
|
29
|
+
border-color: rgba(0, 40, 100, 0.12) !important;
|
|
30
|
+
box-shadow: unset;
|
|
31
|
+
cursor: default;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.sdoc-select.group-select .sdoc-font-down {
|
|
35
|
+
display: inline-block;
|
|
36
|
+
color: #999;
|
|
37
|
+
transform: translateY(2px);
|
|
38
|
+
transition: all 0.1s;
|
|
39
|
+
font-size: 14px !important;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.sdoc-select.group-select .sdoc-font-down:hover {
|
|
43
|
+
color: #666;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.sdoc-select.group-select .selected-option {
|
|
47
|
+
display: flex;
|
|
48
|
+
flex: 1;
|
|
49
|
+
overflow: hidden;
|
|
50
|
+
flex-wrap: nowrap;
|
|
51
|
+
align-items: center;
|
|
52
|
+
justify-content: space-between;
|
|
53
|
+
background: #fff;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.sdoc-select.group-select.selector-collaborator .option-group .option-group-content {
|
|
57
|
+
padding: 10px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.sdoc-select.group-select.custom-select.selector-collaborator .option-group .option-group-content {
|
|
61
|
+
padding: 10px 0;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.sdoc-select.group-select.custom-select.selector-collaborator .option {
|
|
65
|
+
padding: 5px 0 5px 10px !important;
|
|
66
|
+
line-height: 20px;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.sdoc-select.group-select .select-placeholder {
|
|
70
|
+
line-height: 1;
|
|
71
|
+
font-size: 14px;
|
|
72
|
+
white-space: nowrap;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.sdoc-select.group-select .selected-option-show {
|
|
76
|
+
display: flex;
|
|
77
|
+
flex-wrap: wrap;
|
|
78
|
+
gap: 4px;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.sdoc-select.group-select .selected-option-show .selected-option-item {
|
|
82
|
+
display: flex;
|
|
83
|
+
align-items: center;
|
|
84
|
+
background-color: #fff;
|
|
85
|
+
border-radius: 0px;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.sdoc-select.group-select .selected-option-show .selected-option-item .selected-option-item-name {
|
|
89
|
+
font-size: 13px;
|
|
90
|
+
color: #212529;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.sdoc-select.group-select .selected-option-show .selected-option-item .sf2-icon-close {
|
|
94
|
+
cursor: pointer;
|
|
95
|
+
color: rgb(103, 103, 103);
|
|
96
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createClass"));
|
|
11
|
+
var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/callSuper"));
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/inherits"));
|
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
16
|
+
var _modalPortal = _interopRequireDefault(require("../modal-portal.js"));
|
|
17
|
+
var _lib = _interopRequireDefault(require("./lib.png"));
|
|
18
|
+
var _selectOptionGroup = _interopRequireDefault(require("./select-option-group.js"));
|
|
19
|
+
require("./index.css");
|
|
20
|
+
var DropdownSelect = /*#__PURE__*/function (_Component) {
|
|
21
|
+
function DropdownSelect(props) {
|
|
22
|
+
var _this;
|
|
23
|
+
(0, _classCallCheck2["default"])(this, DropdownSelect);
|
|
24
|
+
_this = (0, _callSuper2["default"])(this, DropdownSelect, [props]);
|
|
25
|
+
(0, _defineProperty2["default"])(_this, "onSelectToggle", function (event) {
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
if (_this.state.isShowSelectOptions) event.stopPropagation();
|
|
28
|
+
var eventClassName = event.target.className;
|
|
29
|
+
if (eventClassName.indexOf('sf2-icon-close') > -1 || eventClassName === 'option-group-search') return;
|
|
30
|
+
if (event.target.value === '') return;
|
|
31
|
+
_this.setState({
|
|
32
|
+
isShowSelectOptions: !_this.state.isShowSelectOptions
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
(0, _defineProperty2["default"])(_this, "onClickOutside", function (event) {
|
|
36
|
+
if (_this.props.isShowSelected && event.target.className.includes('icon-fork-number')) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (!_this.selector.contains(event.target)) {
|
|
40
|
+
_this.closeSelect();
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
(0, _defineProperty2["default"])(_this, "closeSelect", function () {
|
|
44
|
+
_this.setState({
|
|
45
|
+
isShowSelectOptions: false
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
(0, _defineProperty2["default"])(_this, "getSelectedOptionTop", function () {
|
|
49
|
+
if (!_this.selector) return 38;
|
|
50
|
+
var _this$selector$getBou = _this.selector.getBoundingClientRect(),
|
|
51
|
+
height = _this$selector$getBou.height;
|
|
52
|
+
return height;
|
|
53
|
+
});
|
|
54
|
+
(0, _defineProperty2["default"])(_this, "getFilterOptions", function (searchValue) {
|
|
55
|
+
var options = _this.props.options;
|
|
56
|
+
var validSearchVal = searchValue.trim().toLowerCase();
|
|
57
|
+
if (!validSearchVal) return options || [];
|
|
58
|
+
return options.filter(function (option) {
|
|
59
|
+
return option.name.toLowerCase().includes(validSearchVal);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
(0, _defineProperty2["default"])(_this, "onSelectOption", function (option) {
|
|
63
|
+
_this.props.onSelectOption(option);
|
|
64
|
+
_this.setState({
|
|
65
|
+
isShowSelectOptions: false
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
_this.state = {
|
|
69
|
+
isShowSelectOptions: false
|
|
70
|
+
};
|
|
71
|
+
return _this;
|
|
72
|
+
}
|
|
73
|
+
(0, _inherits2["default"])(DropdownSelect, _Component);
|
|
74
|
+
return (0, _createClass2["default"])(DropdownSelect, [{
|
|
75
|
+
key: "UNSAFE_componentWillReceiveProps",
|
|
76
|
+
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
77
|
+
var _nextProps$selectedOp,
|
|
78
|
+
_this$props$selectedO,
|
|
79
|
+
_this2 = this;
|
|
80
|
+
if (((_nextProps$selectedOp = nextProps.selectedOption) === null || _nextProps$selectedOp === void 0 ? void 0 : _nextProps$selectedOp.id) !== ((_this$props$selectedO = this.props.selectedOption) === null || _this$props$selectedO === void 0 ? void 0 : _this$props$selectedO.id)) {
|
|
81
|
+
// when selectedOption change and dom rendered, calculate top
|
|
82
|
+
setTimeout(function () {
|
|
83
|
+
_this2.forceUpdate();
|
|
84
|
+
}, 1);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}, {
|
|
88
|
+
key: "render",
|
|
89
|
+
value: function render() {
|
|
90
|
+
var _this3 = this;
|
|
91
|
+
var _this$props = this.props,
|
|
92
|
+
className = _this$props.className,
|
|
93
|
+
selectedOption = _this$props.selectedOption,
|
|
94
|
+
options = _this$props.options,
|
|
95
|
+
placeholder = _this$props.placeholder,
|
|
96
|
+
searchPlaceholder = _this$props.searchPlaceholder,
|
|
97
|
+
noOptionsPlaceholder = _this$props.noOptionsPlaceholder,
|
|
98
|
+
isInModal = _this$props.isInModal,
|
|
99
|
+
_this$props$hasIcon = _this$props.hasIcon,
|
|
100
|
+
hasIcon = _this$props$hasIcon === void 0 ? false : _this$props$hasIcon;
|
|
101
|
+
var isShowSelectOptions = this.state.isShowSelectOptions;
|
|
102
|
+
var clazzName = (0, _classnames["default"])('sdoc-select group-select custom-select', {
|
|
103
|
+
'focus': isShowSelectOptions
|
|
104
|
+
}, className);
|
|
105
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
106
|
+
ref: function ref(node) {
|
|
107
|
+
return _this3.selector = node;
|
|
108
|
+
},
|
|
109
|
+
className: clazzName,
|
|
110
|
+
onClick: this.onSelectToggle
|
|
111
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
112
|
+
className: "selected-option"
|
|
113
|
+
}, selectedOption && /*#__PURE__*/_react["default"].createElement("span", {
|
|
114
|
+
className: "selected-option-show"
|
|
115
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
116
|
+
className: "selected-option-item mr-1 px-1"
|
|
117
|
+
}, hasIcon && /*#__PURE__*/_react["default"].createElement("img", {
|
|
118
|
+
src: _lib["default"],
|
|
119
|
+
width: '24px',
|
|
120
|
+
alt: "",
|
|
121
|
+
className: "mr-2"
|
|
122
|
+
}), /*#__PURE__*/_react["default"].createElement("span", {
|
|
123
|
+
className: "selected-option-item-name"
|
|
124
|
+
}, selectedOption.name))), !selectedOption && /*#__PURE__*/_react["default"].createElement("span", {
|
|
125
|
+
className: "select-placeholder"
|
|
126
|
+
}, placeholder), /*#__PURE__*/_react["default"].createElement("i", {
|
|
127
|
+
className: "sdocfont sdoc-font-down"
|
|
128
|
+
})), this.state.isShowSelectOptions && !isInModal && /*#__PURE__*/_react["default"].createElement(_selectOptionGroup["default"], {
|
|
129
|
+
selectedOption: selectedOption,
|
|
130
|
+
top: this.getSelectedOptionTop(),
|
|
131
|
+
options: options,
|
|
132
|
+
onSelectOption: this.onSelectOption,
|
|
133
|
+
searchPlaceholder: searchPlaceholder,
|
|
134
|
+
noOptionsPlaceholder: noOptionsPlaceholder,
|
|
135
|
+
onClickOutside: this.onClickOutside,
|
|
136
|
+
closeSelect: this.closeSelect,
|
|
137
|
+
getFilterOptions: this.getFilterOptions
|
|
138
|
+
}), this.state.isShowSelectOptions && isInModal && /*#__PURE__*/_react["default"].createElement(_modalPortal["default"], null, /*#__PURE__*/_react["default"].createElement(_selectOptionGroup["default"], {
|
|
139
|
+
hasIcon: hasIcon,
|
|
140
|
+
className: className,
|
|
141
|
+
selectedOption: selectedOption,
|
|
142
|
+
position: this.selector.getBoundingClientRect(),
|
|
143
|
+
isInModal: isInModal,
|
|
144
|
+
top: this.getSelectedOptionTop(),
|
|
145
|
+
options: options,
|
|
146
|
+
onSelectOption: this.onSelectOption,
|
|
147
|
+
searchPlaceholder: searchPlaceholder,
|
|
148
|
+
noOptionsPlaceholder: noOptionsPlaceholder,
|
|
149
|
+
onClickOutside: this.onClickOutside,
|
|
150
|
+
closeSelect: this.closeSelect,
|
|
151
|
+
getFilterOptions: this.getFilterOptions
|
|
152
|
+
})));
|
|
153
|
+
}
|
|
154
|
+
}]);
|
|
155
|
+
}(_react.Component);
|
|
156
|
+
var _default = exports["default"] = DropdownSelect;
|