@seafile/sdoc-editor 1.0.197 → 1.0.198-test0.2
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/basic-sdk/assets/css/sdoc-editor-plugins.css +4 -0
- package/dist/basic-sdk/extension/commons/insert-element-dialog/index.js +14 -0
- package/dist/basic-sdk/extension/commons/select-file-dialog/index.js +30 -3
- package/dist/basic-sdk/extension/commons/select-file-dialog/local-files/index.js +2 -1
- package/dist/basic-sdk/extension/constants/element-type.js +2 -1
- package/dist/basic-sdk/extension/constants/index.js +10 -3
- package/dist/basic-sdk/extension/constants/menus-config.js +5 -0
- package/dist/basic-sdk/extension/plugins/video/menu/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/whiteboard/helpers.js +60 -0
- package/dist/basic-sdk/extension/plugins/whiteboard/index.css +5 -0
- package/dist/basic-sdk/extension/plugins/whiteboard/index.js +20 -0
- package/dist/basic-sdk/extension/plugins/whiteboard/menu/index.js +63 -0
- package/dist/basic-sdk/extension/plugins/whiteboard/plugin.js +28 -0
- package/dist/basic-sdk/extension/plugins/whiteboard/render-elem.js +39 -0
- package/dist/basic-sdk/extension/render/custom-element.js +7 -0
- package/dist/basic-sdk/extension/render/render-comment-editor-element.js +9 -0
- package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +2 -1
- package/dist/basic-sdk/extension/toolbar/insert-element-toolbar/index.js +1 -1
- package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +1 -1
- package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +3 -2
- package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.css +5 -0
- package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.js +4 -2
- package/dist/constants/index.js +2 -0
- package/package.json +1 -1
|
@@ -34,6 +34,7 @@ const InsertElementDialog = _ref => {
|
|
|
34
34
|
const [insertLinkCallback, setInsertLinkCallback] = (0, _react.useState)(null);
|
|
35
35
|
const [validEditor, setValidEditor] = (0, _react.useState)(editor);
|
|
36
36
|
const [linkTitle, setLinkTitle] = (0, _react.useState)('');
|
|
37
|
+
const [insertWhiteboardFile, setInsertWhiteboardFile] = (0, _react.useState)(null);
|
|
37
38
|
const [handleSubmit, setHandleSubmit] = (0, _react.useState)(() => void 0);
|
|
38
39
|
const {
|
|
39
40
|
t
|
|
@@ -90,6 +91,7 @@ const InsertElementDialog = _ref => {
|
|
|
90
91
|
slateNode,
|
|
91
92
|
insertFileLinkCallback,
|
|
92
93
|
insertSdocFileLinkCallback,
|
|
94
|
+
insertWhiteboard,
|
|
93
95
|
editor: paramEditor,
|
|
94
96
|
linkTitle,
|
|
95
97
|
// link shortcut wrapping link
|
|
@@ -103,6 +105,7 @@ const InsertElementDialog = _ref => {
|
|
|
103
105
|
insertSdocFileLinkCallback,
|
|
104
106
|
insertFileLinkCallback
|
|
105
107
|
});
|
|
108
|
+
setInsertWhiteboardFile(insertWhiteboard);
|
|
106
109
|
setLinkTitle(linkTitle);
|
|
107
110
|
setHandleSubmit(handleSubmit);
|
|
108
111
|
// Apply for comment editor, as it has a different editor instance
|
|
@@ -124,6 +127,7 @@ const InsertElementDialog = _ref => {
|
|
|
124
127
|
setElement('');
|
|
125
128
|
setDialogType('');
|
|
126
129
|
setInsertLinkCallback(null);
|
|
130
|
+
setInsertWhiteboardFile(null);
|
|
127
131
|
setValidEditor(null);
|
|
128
132
|
setLinkTitle('');
|
|
129
133
|
}, []);
|
|
@@ -169,6 +173,16 @@ const InsertElementDialog = _ref => {
|
|
|
169
173
|
};
|
|
170
174
|
return /*#__PURE__*/_react.default.createElement(_index.default, fileLinkProps);
|
|
171
175
|
}
|
|
176
|
+
case _constants2.ELEMENT_TYPE.WHITEBOARD:
|
|
177
|
+
{
|
|
178
|
+
const whiteboardProps = {
|
|
179
|
+
editor: validEditor,
|
|
180
|
+
dialogType,
|
|
181
|
+
insertWhiteboardFile,
|
|
182
|
+
closeDialog
|
|
183
|
+
};
|
|
184
|
+
return /*#__PURE__*/_react.default.createElement(_index.default, whiteboardProps);
|
|
185
|
+
}
|
|
172
186
|
case _constants2.LOCAL_IMAGE:
|
|
173
187
|
{
|
|
174
188
|
return /*#__PURE__*/_react.default.createElement("input", {
|
|
@@ -21,9 +21,9 @@ const SelectSdocFileDialog = _ref => {
|
|
|
21
21
|
editor,
|
|
22
22
|
dialogType,
|
|
23
23
|
closeDialog,
|
|
24
|
-
insertLinkCallback
|
|
24
|
+
insertLinkCallback,
|
|
25
|
+
insertWhiteboardFile
|
|
25
26
|
} = _ref;
|
|
26
|
-
const modalTitle = dialogType === _constants.ELEMENT_TYPE.FILE_LINK ? 'Select_file' : 'Select_sdoc_document';
|
|
27
27
|
const {
|
|
28
28
|
t
|
|
29
29
|
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
@@ -31,6 +31,20 @@ const SelectSdocFileDialog = _ref => {
|
|
|
31
31
|
const [temSearchContent, setTemSearchContent] = (0, _react.useState)('');
|
|
32
32
|
const [searchContent, setSearchContent] = (0, _react.useState)('');
|
|
33
33
|
const [isOpenSearch, setIsOpenSearch] = (0, _react.useState)(false);
|
|
34
|
+
let modalTitle;
|
|
35
|
+
switch (dialogType) {
|
|
36
|
+
case _constants.ELEMENT_TYPE.FILE_LINK:
|
|
37
|
+
modalTitle = 'Select_file';
|
|
38
|
+
break;
|
|
39
|
+
case _constants.ELEMENT_TYPE.SDOC_LINK:
|
|
40
|
+
modalTitle = 'Select_sdoc_document';
|
|
41
|
+
break;
|
|
42
|
+
case _constants.ELEMENT_TYPE.WHITEBOARD:
|
|
43
|
+
modalTitle = 'Select_whiteboard_document';
|
|
44
|
+
break;
|
|
45
|
+
default:
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
34
48
|
const onSelectedFile = (0, _react.useCallback)(fileInfo => {
|
|
35
49
|
setCurrentSelectedFile(fileInfo);
|
|
36
50
|
}, []);
|
|
@@ -44,7 +58,20 @@ const SelectSdocFileDialog = _ref => {
|
|
|
44
58
|
} else {
|
|
45
59
|
insertSdocFileLinkCallback && insertSdocFileLinkCallback(editor, fileInfo.name, fileInfo.file_uuid);
|
|
46
60
|
}
|
|
47
|
-
|
|
61
|
+
switch (dialogType) {
|
|
62
|
+
case _constants.ELEMENT_TYPE.FILE_LINK:
|
|
63
|
+
insertFileLinkCallback && insertFileLinkCallback(editor, fileInfo.name, fileInfo.file_uuid);
|
|
64
|
+
break;
|
|
65
|
+
case _constants.ELEMENT_TYPE.SDOC_LINK:
|
|
66
|
+
insertSdocFileLinkCallback && insertSdocFileLinkCallback(editor, fileInfo.name, fileInfo.file_uuid);
|
|
67
|
+
break;
|
|
68
|
+
case _constants.ELEMENT_TYPE.WHITEBOARD:
|
|
69
|
+
insertWhiteboardFile && insertWhiteboardFile(editor, fileInfo.name, fileInfo.file_uuid);
|
|
70
|
+
break;
|
|
71
|
+
default:
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}, [insertLinkCallback, insertWhiteboardFile, dialogType, editor]);
|
|
48
75
|
const onSubmit = (0, _react.useCallback)(() => {
|
|
49
76
|
if (!currentSelectedFile) return;
|
|
50
77
|
const {
|
|
@@ -46,6 +46,7 @@ const LocalFiles = _ref => {
|
|
|
46
46
|
}, []);
|
|
47
47
|
const getTreeData = (0, _react.useCallback)((p, indexId, treeData) => {
|
|
48
48
|
return _context.default.getSdocLocalFiles(p, fileType).then(res => {
|
|
49
|
+
console.log(9, res);
|
|
49
50
|
res.data.forEach(item => {
|
|
50
51
|
item.indexId = _slugid.default.nice();
|
|
51
52
|
});
|
|
@@ -155,7 +156,7 @@ const LocalFiles = _ref => {
|
|
|
155
156
|
className: "sdoc-folder-children"
|
|
156
157
|
}, ((_item$children = item.children) === null || _item$children === void 0 ? void 0 : _item$children.length) === 0 && /*#__PURE__*/_react.default.createElement("div", {
|
|
157
158
|
className: "sdoc-folder-children-empty"
|
|
158
|
-
}, `(${t('Empty')})`), ((_item$children2 = item.children) === null || _item$children2 === void 0 ? void 0 : _item$children2.length) > 0 && renderFileTree(item.children))),
|
|
159
|
+
}, `(${t('Empty')})`), ((_item$children2 = item.children) === null || _item$children2 === void 0 ? void 0 : _item$children2.length) > 0 && renderFileTree(item.children))), ['file', 'draw'].includes(type) && /*#__PURE__*/_react.default.createElement("div", {
|
|
159
160
|
className: (0, _classnames.default)('sdoc-file-info', {
|
|
160
161
|
'active': selected
|
|
161
162
|
}),
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.WIKI_LINK = exports.VIDEO = exports.UNORDERED_LIST = exports.TWO_COLUMN = exports.TOP_LEVEL_TYPES = exports.TITLE = exports.THREE_COLUMN = exports.TABLE_ROW = exports.TABLE_CELL = exports.TABLE = exports.SUBTITLE = exports.SEATABLE_TABLE = exports.SEATABLE_COLUMN = exports.SDOC_LINK = exports.QUICK_INSERT = exports.PARAGRAPH = exports.ORDERED_LIST = exports.MULTI_COLUMN = exports.MENTION_TEMP = exports.MENTION = exports.LIST_ITEM = exports.LINK = exports.INLINE_LEVEL_TYPES = exports.IMAGE_BLOCK = exports.IMAGE = exports.HEADER6 = exports.HEADER5 = exports.HEADER4 = exports.HEADER3 = exports.HEADER2 = exports.HEADER1 = exports.HEADER = exports.FOUR_COLUMN = exports.FONT_SIZE_REDUCE = exports.FONT_SIZE_INCREASE = exports.FONT_SIZE = exports.FIVE_COLUMN = exports.FILE_LINK_INSET_INPUT_TEMP = exports.FILE_LINK = exports.COLUMN = exports.CODE_LINE = exports.CODE_BLOCK = exports.CHECK_LIST_ITEM = exports.CALL_OUT = exports.BLOCKQUOTE = exports.ASK_AI = void 0;
|
|
6
|
+
exports.WIKI_LINK = exports.WHITEBOARD = exports.VIDEO = exports.UNORDERED_LIST = exports.TWO_COLUMN = exports.TOP_LEVEL_TYPES = exports.TITLE = exports.THREE_COLUMN = exports.TABLE_ROW = exports.TABLE_CELL = exports.TABLE = exports.SUBTITLE = exports.SEATABLE_TABLE = exports.SEATABLE_COLUMN = exports.SDOC_LINK = exports.QUICK_INSERT = exports.PARAGRAPH = exports.ORDERED_LIST = exports.MULTI_COLUMN = exports.MENTION_TEMP = exports.MENTION = exports.LIST_ITEM = exports.LINK = exports.INLINE_LEVEL_TYPES = exports.IMAGE_BLOCK = exports.IMAGE = exports.HEADER6 = exports.HEADER5 = exports.HEADER4 = exports.HEADER3 = exports.HEADER2 = exports.HEADER1 = exports.HEADER = exports.FOUR_COLUMN = exports.FONT_SIZE_REDUCE = exports.FONT_SIZE_INCREASE = exports.FONT_SIZE = exports.FIVE_COLUMN = exports.FILE_LINK_INSET_INPUT_TEMP = exports.FILE_LINK = exports.COLUMN = exports.CODE_LINE = exports.CODE_BLOCK = exports.CHECK_LIST_ITEM = exports.CALL_OUT = exports.BLOCKQUOTE = exports.ASK_AI = void 0;
|
|
7
7
|
const BLOCKQUOTE = exports.BLOCKQUOTE = 'blockquote';
|
|
8
8
|
const TITLE = exports.TITLE = 'title';
|
|
9
9
|
const SUBTITLE = exports.SUBTITLE = 'subtitle';
|
|
@@ -42,6 +42,7 @@ const MENTION = exports.MENTION = 'mention';
|
|
|
42
42
|
const MENTION_TEMP = exports.MENTION_TEMP = 'mention_temp';
|
|
43
43
|
const FILE_LINK_INSET_INPUT_TEMP = exports.FILE_LINK_INSET_INPUT_TEMP = 'file_link_insert_input_temp';
|
|
44
44
|
const QUICK_INSERT = exports.QUICK_INSERT = 'quick_insert';
|
|
45
|
+
const WHITEBOARD = exports.WHITEBOARD = 'whiteboard';
|
|
45
46
|
const SEATABLE_COLUMN = exports.SEATABLE_COLUMN = 'seatable_column';
|
|
46
47
|
const SEATABLE_TABLE = exports.SEATABLE_TABLE = 'seatable_table';
|
|
47
48
|
const ASK_AI = exports.ASK_AI = 'ask_ai';
|
|
@@ -484,6 +484,12 @@ Object.defineProperty(exports, "VIDEO", {
|
|
|
484
484
|
return _elementType.VIDEO;
|
|
485
485
|
}
|
|
486
486
|
});
|
|
487
|
+
Object.defineProperty(exports, "WHITEBOARD", {
|
|
488
|
+
enumerable: true,
|
|
489
|
+
get: function () {
|
|
490
|
+
return _elementType.WHITEBOARD;
|
|
491
|
+
}
|
|
492
|
+
});
|
|
487
493
|
Object.defineProperty(exports, "WIN_HOTKEYS", {
|
|
488
494
|
enumerable: true,
|
|
489
495
|
get: function () {
|
|
@@ -532,9 +538,10 @@ const LIST_ITEM_SUPPORTED_TRANSFORMATION = exports.LIST_ITEM_SUPPORTED_TRANSFORM
|
|
|
532
538
|
const ADD_POSITION_OFFSET_TYPE = exports.ADD_POSITION_OFFSET_TYPE = [_elementType.PARAGRAPH, _elementType.SUBTITLE, _elementType.HEADER1, _elementType.HEADER2, _elementType.HEADER3, _elementType.HEADER4, _elementType.HEADER5, _elementType.HEADER6, _elementType.CHECK_LIST_ITEM, _elementType.IMAGE_BLOCK];
|
|
533
539
|
const FILE_TYPE = exports.FILE_TYPE = {
|
|
534
540
|
[_elementType.FILE_LINK]: 'file',
|
|
535
|
-
[_elementType.SDOC_LINK]: 'sdoc'
|
|
541
|
+
[_elementType.SDOC_LINK]: 'sdoc',
|
|
542
|
+
[_elementType.WHITEBOARD]: 'draw'
|
|
536
543
|
};
|
|
537
|
-
const SUPPORTED_SIDE_OPERATION_TYPE = exports.SUPPORTED_SIDE_OPERATION_TYPE = [_elementType.PARAGRAPH, _elementType.SUBTITLE, _elementType.HEADER1, _elementType.HEADER2, _elementType.HEADER3, _elementType.HEADER4, _elementType.HEADER5, _elementType.HEADER6, _elementType.CHECK_LIST_ITEM, _elementType.CODE_BLOCK, _elementType.TABLE, _elementType.BLOCKQUOTE, _elementType.CALL_OUT, _elementType.IMAGE_BLOCK, _elementType.VIDEO, _elementType.SEATABLE_TABLE, _elementType.MULTI_COLUMN];
|
|
544
|
+
const SUPPORTED_SIDE_OPERATION_TYPE = exports.SUPPORTED_SIDE_OPERATION_TYPE = [_elementType.PARAGRAPH, _elementType.SUBTITLE, _elementType.HEADER1, _elementType.HEADER2, _elementType.HEADER3, _elementType.HEADER4, _elementType.HEADER5, _elementType.HEADER6, _elementType.CHECK_LIST_ITEM, _elementType.CODE_BLOCK, _elementType.TABLE, _elementType.BLOCKQUOTE, _elementType.CALL_OUT, _elementType.IMAGE_BLOCK, _elementType.VIDEO, _elementType.WHITEBOARD, _elementType.SEATABLE_TABLE, _elementType.MULTI_COLUMN];
|
|
538
545
|
const MOUSE_ENTER_EVENT_DISABLED_MAP = exports.MOUSE_ENTER_EVENT_DISABLED_MAP = {
|
|
539
546
|
[_elementType.PARAGRAPH]: [_elementType.CALL_OUT],
|
|
540
547
|
[_elementType.TITLE]: [_elementType.CALL_OUT],
|
|
@@ -552,4 +559,4 @@ const MOUSE_ENTER_EVENT_DISABLED_MAP = exports.MOUSE_ENTER_EVENT_DISABLED_MAP =
|
|
|
552
559
|
[_elementType.HEADER6]: [_elementType.CALL_OUT],
|
|
553
560
|
[_elementType.CALL_OUT]: [_elementType.CALL_OUT]
|
|
554
561
|
};
|
|
555
|
-
const ROOT_ELEMENT_TYPES = exports.ROOT_ELEMENT_TYPES = [_elementType.PARAGRAPH, _elementType.TITLE, _elementType.SUBTITLE, _elementType.CHECK_LIST_ITEM, _elementType.ORDERED_LIST, _elementType.UNORDERED_LIST, _elementType.BLOCKQUOTE, _elementType.HEADER1, _elementType.HEADER2, _elementType.HEADER3, _elementType.HEADER4, _elementType.HEADER5, _elementType.HEADER6, _elementType.CALL_OUT, _elementType.TABLE, _elementType.CODE_BLOCK, _elementType.IMAGE_BLOCK, _elementType.VIDEO, _elementType.SEATABLE_TABLE];
|
|
562
|
+
const ROOT_ELEMENT_TYPES = exports.ROOT_ELEMENT_TYPES = [_elementType.PARAGRAPH, _elementType.TITLE, _elementType.SUBTITLE, _elementType.CHECK_LIST_ITEM, _elementType.ORDERED_LIST, _elementType.UNORDERED_LIST, _elementType.BLOCKQUOTE, _elementType.HEADER1, _elementType.HEADER2, _elementType.HEADER3, _elementType.HEADER4, _elementType.HEADER5, _elementType.HEADER6, _elementType.CALL_OUT, _elementType.TABLE, _elementType.CODE_BLOCK, _elementType.IMAGE_BLOCK, _elementType.VIDEO, _elementType.SEATABLE_TABLE, _elementType.WHITEBOARD];
|
|
@@ -233,6 +233,11 @@ const MENUS_CONFIG_MAP = exports.MENUS_CONFIG_MAP = {
|
|
|
233
233
|
iconClass: 'sdocfont sdoc-seatable-table',
|
|
234
234
|
type: _elementType.SEATABLE_TABLE,
|
|
235
235
|
text: 'SeaTable_table'
|
|
236
|
+
},
|
|
237
|
+
[_elementType.WHITEBOARD]: {
|
|
238
|
+
id: `sdoc_${_elementType.WHITEBOARD}`,
|
|
239
|
+
iconClass: 'sdocfont sdoc-document',
|
|
240
|
+
text: 'Whiteboard'
|
|
236
241
|
}
|
|
237
242
|
};
|
|
238
243
|
|
|
@@ -44,7 +44,7 @@ const VideoMenu = _ref => {
|
|
|
44
44
|
hideArrow: true,
|
|
45
45
|
fade: false
|
|
46
46
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
47
|
-
className: "sdoc-insert-video-menu-popover-container sdoc-dropdown-menu-container
|
|
47
|
+
className: "sdoc-insert-video-menu-popover-container sdoc-dropdown-menu-container"
|
|
48
48
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
49
49
|
className: "sdoc-dropdown-menu-item",
|
|
50
50
|
onClick: openLocalVideoDialog
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.onCreateWhiteboardFile = exports.isInsertWhiteboardMenuDisabled = exports.insertWhiteboard = void 0;
|
|
8
|
+
var _slate = require("@seafile/slate");
|
|
9
|
+
var _core = require("../../core");
|
|
10
|
+
var _constants = require("../../constants");
|
|
11
|
+
var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
|
|
12
|
+
var _constants2 = require("../../../../constants");
|
|
13
|
+
const isInsertWhiteboardMenuDisabled = (editor, readonly) => {
|
|
14
|
+
if (readonly) return true;
|
|
15
|
+
const {
|
|
16
|
+
selection
|
|
17
|
+
} = editor;
|
|
18
|
+
if (selection === null) return true;
|
|
19
|
+
if (!_slate.Range.isCollapsed(selection)) return true;
|
|
20
|
+
const [match] = _slate.Editor.nodes(editor, {
|
|
21
|
+
match: n => {
|
|
22
|
+
let type = (0, _core.getNodeType)(n);
|
|
23
|
+
if (!type && (0, _core.isTextNode)(n) && n.id) {
|
|
24
|
+
const parentNode = (0, _core.getParentNode)(editor.children, n.id);
|
|
25
|
+
type = (0, _core.getNodeType)(parentNode);
|
|
26
|
+
}
|
|
27
|
+
if (type === _constants.CODE_BLOCK) return true;
|
|
28
|
+
if (type.startsWith('header')) return true;
|
|
29
|
+
if (type === _constants.TITLE) return true;
|
|
30
|
+
if (type === _constants.SUBTITLE) return true;
|
|
31
|
+
if (type === _constants.LIST_ITEM) return true;
|
|
32
|
+
if (type === _constants.CHECK_LIST_ITEM) return true;
|
|
33
|
+
if (type === _constants.MULTI_COLUMN) return true;
|
|
34
|
+
if (type === _constants.BLOCKQUOTE) return true;
|
|
35
|
+
if (type === _constants.CALL_OUT) return true;
|
|
36
|
+
if (_slate.Editor.isVoid(editor, n)) return true;
|
|
37
|
+
return false;
|
|
38
|
+
},
|
|
39
|
+
universal: true
|
|
40
|
+
});
|
|
41
|
+
if (match) return true;
|
|
42
|
+
return false;
|
|
43
|
+
};
|
|
44
|
+
exports.isInsertWhiteboardMenuDisabled = isInsertWhiteboardMenuDisabled;
|
|
45
|
+
const insertWhiteboard = () => {};
|
|
46
|
+
exports.insertWhiteboard = insertWhiteboard;
|
|
47
|
+
const onCreateWhiteboardFile = editor => {
|
|
48
|
+
// e.stopPropagation();
|
|
49
|
+
const eventBus = _eventBus.default.getInstance();
|
|
50
|
+
const external_props = {
|
|
51
|
+
insertWhiteboard,
|
|
52
|
+
fileType: 'draw',
|
|
53
|
+
editor
|
|
54
|
+
};
|
|
55
|
+
console.log(2, external_props.insertWhiteboard);
|
|
56
|
+
eventBus.dispatch(_constants2.EXTERNAL_EVENT.CREATE_WHITEBOARD_FILE, {
|
|
57
|
+
...external_props
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
exports.onCreateWhiteboardFile = onCreateWhiteboardFile;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _constants = require("../../constants");
|
|
9
|
+
var _plugin = _interopRequireDefault(require("./plugin"));
|
|
10
|
+
var _menu = _interopRequireDefault(require("./menu"));
|
|
11
|
+
var _renderElem = require("./render-elem");
|
|
12
|
+
require("./index.css");
|
|
13
|
+
const WhiteboardPlugin = {
|
|
14
|
+
type: _constants.WHITEBOARD,
|
|
15
|
+
nodeType: 'element',
|
|
16
|
+
editorMenus: [_menu.default],
|
|
17
|
+
editorPlugin: _plugin.default,
|
|
18
|
+
renderElements: [_renderElem.renderWhiteboard]
|
|
19
|
+
};
|
|
20
|
+
var _default = exports.default = WhiteboardPlugin;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _reactI18next = require("react-i18next");
|
|
11
|
+
var _reactstrap = require("reactstrap");
|
|
12
|
+
var _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
|
|
13
|
+
var _helpers = require("../helpers");
|
|
14
|
+
var _constants = require("../../../constants");
|
|
15
|
+
var _constants2 = require("../../../../constants");
|
|
16
|
+
const WhiteboardMenu = _ref => {
|
|
17
|
+
let {
|
|
18
|
+
editor,
|
|
19
|
+
readonly,
|
|
20
|
+
eventBus,
|
|
21
|
+
toggle
|
|
22
|
+
} = _ref;
|
|
23
|
+
const disabled = (0, _helpers.isInsertWhiteboardMenuDisabled)(editor, readonly);
|
|
24
|
+
const menuConfig = _constants.MENUS_CONFIG_MAP[_constants.WHITEBOARD];
|
|
25
|
+
const {
|
|
26
|
+
t
|
|
27
|
+
} = (0, _reactI18next.useTranslation)();
|
|
28
|
+
const onCreateFile = () => {
|
|
29
|
+
(0, _helpers.onCreateWhiteboardFile)(editor);
|
|
30
|
+
};
|
|
31
|
+
const openSelectSdocFileDialog = (0, _react.useCallback)(() => {
|
|
32
|
+
eventBus.dispatch(_constants2.INTERNAL_EVENT.INSERT_ELEMENT, {
|
|
33
|
+
type: _constants.ELEMENT_TYPE.WHITEBOARD,
|
|
34
|
+
insertWhiteboard: _helpers.insertWhiteboard
|
|
35
|
+
});
|
|
36
|
+
toggle && toggle();
|
|
37
|
+
|
|
38
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
39
|
+
}, [toggle, eventBus]);
|
|
40
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
41
|
+
disabled: disabled,
|
|
42
|
+
menuConfig: menuConfig,
|
|
43
|
+
className: "pr-2"
|
|
44
|
+
}, !disabled && /*#__PURE__*/_react.default.createElement("i", {
|
|
45
|
+
className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
|
|
46
|
+
})), !disabled && /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
|
|
47
|
+
target: menuConfig.id,
|
|
48
|
+
trigger: "hover",
|
|
49
|
+
className: "sdoc-menu-popover sdoc-dropdown-menu sdoc-sub-dropdown-menu sdoc-insert-whiteboard-menu-popover",
|
|
50
|
+
placement: "right-start",
|
|
51
|
+
hideArrow: true,
|
|
52
|
+
fade: false
|
|
53
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
54
|
+
className: "sdoc-insert-whiteboard-menu-popover-container sdoc-dropdown-menu-container"
|
|
55
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
56
|
+
className: "sdoc-dropdown-menu-item",
|
|
57
|
+
onClick: openSelectSdocFileDialog
|
|
58
|
+
}, t('Upload_local_whiteboard')), /*#__PURE__*/_react.default.createElement("div", {
|
|
59
|
+
className: "sdoc-dropdown-menu-item",
|
|
60
|
+
onClick: onCreateFile
|
|
61
|
+
}, t('Create_new_whiteboard')))));
|
|
62
|
+
};
|
|
63
|
+
var _default = exports.default = WhiteboardMenu;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _constants = require("../../constants");
|
|
10
|
+
const withWhiteboard = editor => {
|
|
11
|
+
const {
|
|
12
|
+
isVoid
|
|
13
|
+
} = editor;
|
|
14
|
+
const newEditor = editor;
|
|
15
|
+
|
|
16
|
+
// Make whiteboard as void node
|
|
17
|
+
newEditor.isVoid = elem => {
|
|
18
|
+
const {
|
|
19
|
+
type
|
|
20
|
+
} = elem;
|
|
21
|
+
if (type === _constants.WHITEBOARD) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
return isVoid(elem);
|
|
25
|
+
};
|
|
26
|
+
return newEditor;
|
|
27
|
+
};
|
|
28
|
+
var _default = exports.default = withWhiteboard;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.renderWhiteboard = renderWhiteboard;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
|
|
11
|
+
var _constants = require("../../../../constants");
|
|
12
|
+
require("./index.css");
|
|
13
|
+
const Whiteboard = _ref => {
|
|
14
|
+
let {
|
|
15
|
+
editor
|
|
16
|
+
} = _ref;
|
|
17
|
+
// const whiteboardContainer = document.getElementById('sdoc-whiteboard-container');
|
|
18
|
+
const [tldraw, setTldraw] = (0, _react.useState)(null);
|
|
19
|
+
const renderWhiteboardEditor = Tldraw => {
|
|
20
|
+
console.log(4, Tldraw);
|
|
21
|
+
setTldraw( /*#__PURE__*/_react.default.createElement(Tldraw, null));
|
|
22
|
+
};
|
|
23
|
+
(0, _react.useEffect)(() => {
|
|
24
|
+
const eventBus = _eventBus.default.getInstance();
|
|
25
|
+
const unsubscribeWhiteboardEditor = eventBus.subscribe(_constants.EXTERNAL_EVENT.TLDRAW_EDITOR, renderWhiteboardEditor);
|
|
26
|
+
console.log(3, renderWhiteboardEditor);
|
|
27
|
+
return () => {
|
|
28
|
+
unsubscribeWhiteboardEditor();
|
|
29
|
+
};
|
|
30
|
+
}, []);
|
|
31
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
32
|
+
id: "sdoc-whiteboard-container"
|
|
33
|
+
}, tldraw);
|
|
34
|
+
};
|
|
35
|
+
function renderWhiteboard(props, editor) {
|
|
36
|
+
return /*#__PURE__*/_react.default.createElement(Whiteboard, Object.assign({}, props, {
|
|
37
|
+
editor: editor
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
@@ -12,6 +13,7 @@ var _core = require("../core");
|
|
|
12
13
|
var _helper = require("./helper");
|
|
13
14
|
var _elementType = require("../constants/element-type");
|
|
14
15
|
var _constants2 = require("../../constants");
|
|
16
|
+
var _whiteboard = _interopRequireDefault(require("../plugins/whiteboard"));
|
|
15
17
|
const CustomRenderElement = props => {
|
|
16
18
|
const editor = (0, _slateReact.useSlateStatic)();
|
|
17
19
|
const readonly = (0, _slateReact.useReadOnly)();
|
|
@@ -210,6 +212,11 @@ const CustomRenderElement = props => {
|
|
|
210
212
|
const [renderSeaTableTable] = _plugins.SeaTableViewsPlugin.renderElements;
|
|
211
213
|
return renderSeaTableTable(props, editor);
|
|
212
214
|
}
|
|
215
|
+
case _elementType.WHITEBOARD:
|
|
216
|
+
{
|
|
217
|
+
const [renderWhiteboard] = _whiteboard.default.renderElements;
|
|
218
|
+
return renderWhiteboard(props, editor);
|
|
219
|
+
}
|
|
213
220
|
default:
|
|
214
221
|
{
|
|
215
222
|
const [renderParagraph] = _plugins.ParagraphPlugin.renderElements;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
@@ -8,6 +9,7 @@ var _slateReact = require("@seafile/slate-react");
|
|
|
8
9
|
var _constants = require("../constants");
|
|
9
10
|
var _plugins = require("../plugins");
|
|
10
11
|
var _core = require("../core");
|
|
12
|
+
var _whiteboard = _interopRequireDefault(require("../plugins/whiteboard"));
|
|
11
13
|
const RenderCommentEditorCustomRenderElement = props => {
|
|
12
14
|
const editor = (0, _slateReact.useSlateStatic)();
|
|
13
15
|
const readonly = (0, _slateReact.useReadOnly)();
|
|
@@ -95,6 +97,13 @@ const RenderCommentEditorCustomRenderElement = props => {
|
|
|
95
97
|
const [renderBlockquote] = _plugins.BlockquotePlugin.renderElements;
|
|
96
98
|
return renderBlockquote(props, editor);
|
|
97
99
|
}
|
|
100
|
+
case _constants.WHITEBOARD:
|
|
101
|
+
{
|
|
102
|
+
const [renderWhiteboard] = _whiteboard.default.renderElements;
|
|
103
|
+
return renderWhiteboard({
|
|
104
|
+
...props
|
|
105
|
+
}, editor);
|
|
106
|
+
}
|
|
98
107
|
default:
|
|
99
108
|
{
|
|
100
109
|
const [renderParagraph] = _plugins.ParagraphPlugin.renderElements;
|
|
@@ -19,6 +19,7 @@ var _menu5 = _interopRequireDefault(require("../../../plugins/sdoc-link/menu"));
|
|
|
19
19
|
var _menu6 = _interopRequireDefault(require("../../../plugins/file-link/menu"));
|
|
20
20
|
var _menu7 = _interopRequireDefault(require("../../../plugins/seatable-column/menu"));
|
|
21
21
|
var _menu8 = _interopRequireDefault(require("../../../plugins/seatable-tables/menu"));
|
|
22
|
+
var _menu9 = _interopRequireDefault(require("../../../plugins/whiteboard/menu"));
|
|
22
23
|
var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
|
|
23
24
|
var _constants = require("../../../../constants");
|
|
24
25
|
require("./index.css");
|
|
@@ -95,7 +96,7 @@ const InsertToolbar = _ref => {
|
|
|
95
96
|
style: {
|
|
96
97
|
maxHeight: window.innerHeight - bottom - 100
|
|
97
98
|
}
|
|
98
|
-
}, /*#__PURE__*/_react.default.createElement(_menu.default, props), /*#__PURE__*/_react.default.createElement(_tableMenu.default, props), (editor === null || editor === void 0 ? void 0 : editor.editorType) !== _constants.DOCUMENT_PLUGIN_EDITOR && /*#__PURE__*/_react.default.createElement(_menu2.default, props), /*#__PURE__*/_react.default.createElement(_menu3.default, props), /*#__PURE__*/_react.default.createElement(_menu4.default, props), /*#__PURE__*/_react.default.createElement("div", {
|
|
99
|
+
}, /*#__PURE__*/_react.default.createElement(_menu.default, props), /*#__PURE__*/_react.default.createElement(_tableMenu.default, props), (editor === null || editor === void 0 ? void 0 : editor.editorType) !== _constants.DOCUMENT_PLUGIN_EDITOR && /*#__PURE__*/_react.default.createElement(_menu2.default, props), /*#__PURE__*/_react.default.createElement(_menu9.default, props), /*#__PURE__*/_react.default.createElement(_menu3.default, props), /*#__PURE__*/_react.default.createElement(_menu4.default, props), /*#__PURE__*/_react.default.createElement("div", {
|
|
99
100
|
className: "sdoc-dropdown-menu-divider"
|
|
100
101
|
}), editor.columns && /*#__PURE__*/_react.default.createElement(_menu7.default, props), editor.tables && /*#__PURE__*/_react.default.createElement(_menu8.default, props), !editor.tables && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_menu5.default, props), /*#__PURE__*/_react.default.createElement(_menu6.default, props)))));
|
|
101
102
|
};
|
|
@@ -168,7 +168,7 @@ const QuickInsertBlockMenu = _ref => {
|
|
|
168
168
|
// eslint-disable-next-line react/jsx-indent
|
|
169
169
|
_react.default.createElement(_dropdownMenuItem.default, {
|
|
170
170
|
isHidden: !quickInsertMenuSearchMap[_constants.TABLE],
|
|
171
|
-
key: "sdoc-insert-menu-
|
|
171
|
+
key: "sdoc-insert-menu-table",
|
|
172
172
|
menuConfig: {
|
|
173
173
|
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.TABLE]
|
|
174
174
|
},
|
|
@@ -138,7 +138,7 @@ const isVoidNode = node => {
|
|
|
138
138
|
};
|
|
139
139
|
exports.isVoidNode = isVoidNode;
|
|
140
140
|
const isNotSupportTransform = node => {
|
|
141
|
-
if (node.type && [_constants.CODE_BLOCK, _constants.TABLE, _constants.CALL_OUT, _constants.VIDEO, _constants.SEATABLE_TABLE].includes(node.type)) {
|
|
141
|
+
if (node.type && [_constants.CODE_BLOCK, _constants.TABLE, _constants.CALL_OUT, _constants.VIDEO, _constants.SEATABLE_TABLE, _constants.WHITEBOARD].includes(node.type)) {
|
|
142
142
|
return true;
|
|
143
143
|
}
|
|
144
144
|
return false;
|
|
@@ -150,6 +150,7 @@ const InsertBlockMenu = _ref => {
|
|
|
150
150
|
onClick: onInsertVideoToggle
|
|
151
151
|
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
152
152
|
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.TABLE],
|
|
153
|
+
key: "sdoc-insert-menu-table",
|
|
153
154
|
menuConfig: {
|
|
154
155
|
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.TABLE]
|
|
155
156
|
},
|
|
@@ -160,8 +161,8 @@ const InsertBlockMenu = _ref => {
|
|
|
160
161
|
editor: editor,
|
|
161
162
|
target: "sdoc-side-menu-item-table",
|
|
162
163
|
trigger: "hover",
|
|
163
|
-
placement: "
|
|
164
|
-
popperClassName: "sdoc-side-menu-table-size",
|
|
164
|
+
placement: "left-start",
|
|
165
|
+
popperClassName: "sdoc-side-menu-table-size sdoc-insert-element-table-size-wrapper",
|
|
165
166
|
createTable: createTable
|
|
166
167
|
})), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
167
168
|
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.LINK],
|
|
@@ -150,11 +150,13 @@ const SideMenu = (_ref, ref) => {
|
|
|
150
150
|
onChange: onChange,
|
|
151
151
|
onCompositionStart: onCompositionStart,
|
|
152
152
|
onCompositionEnd: onCompositionEnd
|
|
153
|
-
})), isNodeEmpty && /*#__PURE__*/_react.default.createElement(
|
|
153
|
+
})), isNodeEmpty && /*#__PURE__*/_react.default.createElement("div", {
|
|
154
|
+
className: "sdoc-side-menu-insert-wrapper"
|
|
155
|
+
}, /*#__PURE__*/_react.default.createElement(_insertBlockMenu.default, {
|
|
154
156
|
isNodeEmpty: isNodeEmpty,
|
|
155
157
|
slateNode: slateNode,
|
|
156
158
|
insertMenuSearchMap: insertMenuSearchMap
|
|
157
|
-
}), !isNodeEmpty && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, transformMenuSearchMap['searching'] && isDisplayCategoryTitle(transformMenuSearchMap, insertBelowMenuSearchMap) && /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
159
|
+
})), !isNodeEmpty && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, transformMenuSearchMap['searching'] && isDisplayCategoryTitle(transformMenuSearchMap, insertBelowMenuSearchMap) && /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
158
160
|
menuConfig: {
|
|
159
161
|
text: 'Transform_to'
|
|
160
162
|
},
|
package/dist/constants/index.js
CHANGED
|
@@ -36,6 +36,8 @@ const EXTERNAL_EVENT = exports.EXTERNAL_EVENT = {
|
|
|
36
36
|
PARTICIPANT_REMOVED: 'participant-removed',
|
|
37
37
|
CREATE_SDOC_FILE: 'create_sdoc_file',
|
|
38
38
|
CREATE_WIKI_PAGE: 'create_wiki_page',
|
|
39
|
+
CREATE_WHITEBOARD_FILE: 'create_whiteboard_file',
|
|
40
|
+
TLDRAW_EDITOR: 'tldraw_editor',
|
|
39
41
|
// wiki
|
|
40
42
|
INSERT_LINK: 'insert_link',
|
|
41
43
|
// document
|