@seafile/sdoc-editor 1.0.194 → 1.0.195-test0.0.1
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/constants/element-type.js +2 -1
- package/dist/basic-sdk/extension/constants/index.js +8 -2
- package/dist/basic-sdk/extension/constants/menus-config.js +5 -0
- package/dist/basic-sdk/extension/core/queries/index.js +5 -1
- package/dist/basic-sdk/extension/plugins/blockquote/plugin.js +17 -12
- package/dist/basic-sdk/extension/plugins/video/menu/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/whiteboard/helpers.js +61 -0
- package/dist/basic-sdk/extension/plugins/whiteboard/index.js +21 -0
- package/dist/basic-sdk/extension/plugins/whiteboard/menu/index.js +50 -0
- package/dist/basic-sdk/extension/plugins/whiteboard/plugin.js +28 -0
- package/dist/basic-sdk/extension/plugins/whiteboard/render-elem.js +19 -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/side-toolbar/event.js +3 -2
- package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +1 -1
- package/dist/basic-sdk/extension/toolbar/side-toolbar/index.js +12 -1
- package/dist/constants/index.js +1 -0
- package/package.json +1 -1
|
@@ -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 () {
|
|
@@ -534,7 +540,7 @@ const FILE_TYPE = exports.FILE_TYPE = {
|
|
|
534
540
|
[_elementType.FILE_LINK]: 'file',
|
|
535
541
|
[_elementType.SDOC_LINK]: 'sdoc'
|
|
536
542
|
};
|
|
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];
|
|
543
|
+
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
544
|
const MOUSE_ENTER_EVENT_DISABLED_MAP = exports.MOUSE_ENTER_EVENT_DISABLED_MAP = {
|
|
539
545
|
[_elementType.PARAGRAPH]: [_elementType.CALL_OUT],
|
|
540
546
|
[_elementType.TITLE]: [_elementType.CALL_OUT],
|
|
@@ -552,4 +558,4 @@ const MOUSE_ENTER_EVENT_DISABLED_MAP = exports.MOUSE_ENTER_EVENT_DISABLED_MAP =
|
|
|
552
558
|
[_elementType.HEADER6]: [_elementType.CALL_OUT],
|
|
553
559
|
[_elementType.CALL_OUT]: [_elementType.CALL_OUT]
|
|
554
560
|
};
|
|
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];
|
|
561
|
+
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
|
|
|
@@ -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.someNode = exports.isTopLevelListItem = exports.isTextNode = exports.isStartPoint = exports.isSelectionAtBlockStart = exports.isSelectionAtBlockEnd = exports.isRangeInSameBlock = exports.isRangeAcrossBlocks = exports.isMultiLevelList = exports.isLastNode = exports.isLastChild = exports.isHasImg = exports.isFirstChild = exports.isEndPoint = exports.isEmptyArticle = exports.isCurrentLineHasText = exports.isCurrentLineEmpty = exports.isContainsVoidElement = exports.isBlockTextEmptyAfterSelection = exports.isBlockAboveEmpty = exports.isAncestorEmpty = exports.getTopLevelBlockNode = exports.getStartPoint = exports.getSelectedNodeEntryByType = exports.getSelectedNodeByTypes = exports.getSelectedNodeByType = exports.getSelectedElems = exports.getQueryOptions = exports.getPreviousPath = exports.getPrevNode = exports.getPointBefore = exports.getParentNode = exports.getNodes = exports.getNodeType = exports.getNodeEntries = exports.getNodeById = exports.getNode = exports.getNextSiblingNodes = exports.getNextNode = exports.getLastChildPath = exports.getLastChild = exports.getEndPoint = exports.getEditorString = exports.getDeepInlineChildren = exports.getCurrentNode = exports.getCommonNode = exports.getChildren = exports.getAboveNode = exports.getAboveBlockNode = exports.findPath = exports.findNode = exports.findDescendant = void 0;
|
|
7
|
+
exports.someNode = exports.isTopLevelListItem = exports.isTextNode = exports.isStartPoint = exports.isSelectionAtBlockStart = exports.isSelectionAtBlockEnd = exports.isRangeInSameBlock = exports.isRangeAcrossBlocks = exports.isMultiLevelList = exports.isMiddlePoint = exports.isLastNode = exports.isLastChild = exports.isHasImg = exports.isFirstChild = exports.isEndPoint = exports.isEmptyArticle = exports.isCurrentLineHasText = exports.isCurrentLineEmpty = exports.isContainsVoidElement = exports.isBlockTextEmptyAfterSelection = exports.isBlockAboveEmpty = exports.isAncestorEmpty = exports.getTopLevelBlockNode = exports.getStartPoint = exports.getSelectedNodeEntryByType = exports.getSelectedNodeByTypes = exports.getSelectedNodeByType = exports.getSelectedElems = exports.getQueryOptions = exports.getPreviousPath = exports.getPrevNode = exports.getPointBefore = exports.getParentNode = exports.getNodes = exports.getNodeType = exports.getNodeEntries = exports.getNodeById = exports.getNode = exports.getNextSiblingNodes = exports.getNextNode = exports.getLastChildPath = exports.getLastChild = exports.getEndPoint = exports.getEditorString = exports.getDeepInlineChildren = exports.getCurrentNode = exports.getCommonNode = exports.getChildren = exports.getAboveNode = exports.getAboveBlockNode = exports.findPath = exports.findNode = exports.findDescendant = void 0;
|
|
8
8
|
var _slate = require("@seafile/slate");
|
|
9
9
|
var _slateReact = require("@seafile/slate-react");
|
|
10
10
|
var _utils = require("../utils");
|
|
@@ -390,6 +390,10 @@ const isEndPoint = (editor, point, at) => {
|
|
|
390
390
|
return !!point && _slate.Editor.isEnd(editor, point, at);
|
|
391
391
|
};
|
|
392
392
|
exports.isEndPoint = isEndPoint;
|
|
393
|
+
const isMiddlePoint = (editor, point, at) => {
|
|
394
|
+
return !isStartPoint(editor, point, at) && !isEndPoint(editor, point, at);
|
|
395
|
+
};
|
|
396
|
+
exports.isMiddlePoint = isMiddlePoint;
|
|
393
397
|
const isBlockTextEmptyAfterSelection = editor => {
|
|
394
398
|
if (!editor.selection) return false;
|
|
395
399
|
const blockAbove = _slate.Editor.above(editor, {
|
|
@@ -29,9 +29,10 @@ const withBlockquote = editor => {
|
|
|
29
29
|
match: n => _slate.Element.isElement(n) && [_constants.PARAGRAPH, _constants.HEADER1, _constants.HEADER2, _constants.HEADER3, _constants.HEADER4, _constants.HEADER5, _constants.HEADER6, _constants.TITLE, _constants.SUBTITLE].includes(n.type),
|
|
30
30
|
mode: 'lowest'
|
|
31
31
|
});
|
|
32
|
+
|
|
32
33
|
// Exit blockquote when current line is empty
|
|
33
|
-
const
|
|
34
|
-
if (
|
|
34
|
+
const isAtBlockquoteEnd = currentLineEntry[1].slice(-1)[0] === quoteBlockEntry[0].children.length - 1;
|
|
35
|
+
if (isAtBlockquoteEnd) {
|
|
35
36
|
const isEmptyLine = !(currentLineEntry && _slate.Editor.string(newEditor, currentLineEntry[1]).length) && !(0, _core.isContainsVoidElement)(currentLineEntry[0]);
|
|
36
37
|
if (isEmptyLine) {
|
|
37
38
|
const nextPath = _slate.Path.next(quoteBlockEntry[1]);
|
|
@@ -43,6 +44,15 @@ const withBlockquote = editor => {
|
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
46
|
|
|
47
|
+
// const isMiddleIn
|
|
48
|
+
if (_slate.Range.isCollapsed(selection)) {
|
|
49
|
+
const isMiddleIn = (0, _core.isMiddlePoint)(editor, selection.anchor, currentLineEntry[1]);
|
|
50
|
+
if (isMiddleIn) {
|
|
51
|
+
insertBreak();
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
46
56
|
// Insert new line
|
|
47
57
|
_slate.Transforms.insertNodes(editor, {
|
|
48
58
|
type: _constants.PARAGRAPH,
|
|
@@ -70,20 +80,15 @@ const withBlockquote = editor => {
|
|
|
70
80
|
const [, currentLinePath] = currentLineEntry;
|
|
71
81
|
const currentLineIndex = currentLinePath[blockQuotePath.length];
|
|
72
82
|
// Transforms to paragraph when Select at the beginning of the first line
|
|
73
|
-
if (currentLineIndex === 0
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
at: blockQuoteEntry[1]
|
|
77
|
-
});
|
|
78
|
-
_slate.Transforms.insertNodes(newEditor, emptyParagraph, {
|
|
79
|
-
at: blockQuoteEntry[1]
|
|
83
|
+
if (currentLineIndex === 0) {
|
|
84
|
+
_slate.Transforms.liftNodes(editor, {
|
|
85
|
+
at: currentLinePath
|
|
80
86
|
});
|
|
81
|
-
const focusPoint = _slate.Editor.end(newEditor, blockQuoteEntry[1]);
|
|
82
|
-
(0, _core.focusEditor)(newEditor, focusPoint);
|
|
83
87
|
return;
|
|
84
88
|
}
|
|
89
|
+
|
|
85
90
|
// Merge with previous line when Select at the beginning of the line
|
|
86
|
-
if ((0, _core.isSelectionAtBlockStart)(editor)) {
|
|
91
|
+
if (currentLineIndex !== 0 && (0, _core.isSelectionAtBlockStart)(editor)) {
|
|
87
92
|
const lineText = _slate.Node.string(currentLineEntry[0]);
|
|
88
93
|
const previousNodeEntry = _slate.Editor.previous(editor, {
|
|
89
94
|
at: currentLineEntry[1]
|
|
@@ -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,61 @@
|
|
|
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
|
+
|
|
50
|
+
const eventBus = _eventBus.default.getInstance();
|
|
51
|
+
const external_props = {
|
|
52
|
+
insertWhiteboard,
|
|
53
|
+
fileType: 'draw',
|
|
54
|
+
editor
|
|
55
|
+
};
|
|
56
|
+
console.log(2, external_props.insertWhiteboard);
|
|
57
|
+
eventBus.dispatch(_constants2.EXTERNAL_EVENT.CREATE_WHITEBOARD_FILE, {
|
|
58
|
+
...external_props
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
exports.onCreateWhiteboardFile = onCreateWhiteboardFile;
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
// import './index.css';
|
|
13
|
+
|
|
14
|
+
const WhiteboardPlugin = {
|
|
15
|
+
type: _constants.WHITEBOARD,
|
|
16
|
+
nodeType: 'element',
|
|
17
|
+
editorMenus: [_menu.default],
|
|
18
|
+
editorPlugin: _plugin.default,
|
|
19
|
+
renderElements: [_renderElem.renderWhiteboard]
|
|
20
|
+
};
|
|
21
|
+
var _default = exports.default = WhiteboardPlugin;
|
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
const WhiteboardMenu = _ref => {
|
|
16
|
+
let {
|
|
17
|
+
editor,
|
|
18
|
+
readonly
|
|
19
|
+
} = _ref;
|
|
20
|
+
const disabled = (0, _helpers.isInsertWhiteboardMenuDisabled)(editor, readonly);
|
|
21
|
+
const menuConfig = _constants.MENUS_CONFIG_MAP[_constants.WHITEBOARD];
|
|
22
|
+
const {
|
|
23
|
+
t
|
|
24
|
+
} = (0, _reactI18next.useTranslation)();
|
|
25
|
+
const onCreateFile = () => {
|
|
26
|
+
(0, _helpers.onCreateWhiteboardFile)(editor);
|
|
27
|
+
};
|
|
28
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
29
|
+
disabled: disabled,
|
|
30
|
+
menuConfig: menuConfig,
|
|
31
|
+
className: "pr-2"
|
|
32
|
+
}, !disabled && /*#__PURE__*/_react.default.createElement("i", {
|
|
33
|
+
className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
|
|
34
|
+
})), !disabled && /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
|
|
35
|
+
target: menuConfig.id,
|
|
36
|
+
trigger: "hover",
|
|
37
|
+
className: "sdoc-menu-popover sdoc-dropdown-menu sdoc-sub-dropdown-menu sdoc-insert-whiteboard-menu-popover",
|
|
38
|
+
placement: "right-start",
|
|
39
|
+
hideArrow: true,
|
|
40
|
+
fade: false
|
|
41
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
42
|
+
className: "sdoc-insert-whiteboard-menu-popover-container sdoc-dropdown-menu-container"
|
|
43
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
44
|
+
className: "sdoc-dropdown-menu-item"
|
|
45
|
+
}, t('Upload_local_whiteboard')), /*#__PURE__*/_react.default.createElement("div", {
|
|
46
|
+
className: "sdoc-dropdown-menu-item",
|
|
47
|
+
onClick: onCreateFile
|
|
48
|
+
}, t('Create_new_whiteboard')))));
|
|
49
|
+
};
|
|
50
|
+
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,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.renderWhiteboard = renderWhiteboard;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
const Whiteboard = _ref => {
|
|
10
|
+
let {
|
|
11
|
+
editor
|
|
12
|
+
} = _ref;
|
|
13
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
|
|
14
|
+
};
|
|
15
|
+
function renderWhiteboard(props, editor) {
|
|
16
|
+
return /*#__PURE__*/_react.default.createElement(Whiteboard, Object.assign({}, props, {
|
|
17
|
+
editor: editor
|
|
18
|
+
}));
|
|
19
|
+
}
|
|
@@ -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;
|
|
@@ -22,6 +22,7 @@ var _menu8 = _interopRequireDefault(require("../../../plugins/seatable-tables/me
|
|
|
22
22
|
var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
|
|
23
23
|
var _constants = require("../../../../constants");
|
|
24
24
|
require("./index.css");
|
|
25
|
+
var _menu9 = _interopRequireDefault(require("../../../plugins/whiteboard/menu"));
|
|
25
26
|
const InsertToolbar = _ref => {
|
|
26
27
|
let {
|
|
27
28
|
isRichEditor,
|
|
@@ -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
|
};
|
|
@@ -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.onMouseEnter = exports.onDrop = exports.onDragOver = exports.onDragLeave = void 0;
|
|
7
|
+
exports.onMouseEnter = exports.onDrop = exports.onDragOver = exports.onDragLeave = exports.DRAG_SDOC_EDITOR_ELEMENT = void 0;
|
|
8
8
|
var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
|
|
9
9
|
var _constants = require("../../../constants");
|
|
10
10
|
var _constants2 = require("../../constants");
|
|
@@ -36,4 +36,5 @@ const onDrop = event => {
|
|
|
36
36
|
const eventBus = _eventBus.default.getInstance();
|
|
37
37
|
eventBus.dispatch(_constants.INTERNAL_EVENT.ON_DRAG_DROP_BLOCK, event);
|
|
38
38
|
};
|
|
39
|
-
exports.onDrop = onDrop;
|
|
39
|
+
exports.onDrop = onDrop;
|
|
40
|
+
const DRAG_SDOC_EDITOR_ELEMENT = exports.DRAG_SDOC_EDITOR_ELEMENT = 'drag_sdoc_editor_element';
|
|
@@ -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;
|
|
@@ -19,6 +19,7 @@ var _helpers2 = require("../../plugins/image/helpers");
|
|
|
19
19
|
var _constants = require("../../../constants");
|
|
20
20
|
var _constants2 = require("../../constants");
|
|
21
21
|
var _helper = require("../../plugins/callout/helper");
|
|
22
|
+
var _event = require("./event");
|
|
22
23
|
require("./index.css");
|
|
23
24
|
let sourceElement = null;
|
|
24
25
|
let targetElement = null;
|
|
@@ -122,6 +123,7 @@ const SideToolbar = () => {
|
|
|
122
123
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
123
124
|
}, [editor, isShowSideMenu, scrollRef, sidePosition.top]);
|
|
124
125
|
const onMouseDown = (0, _react.useCallback)(e => {
|
|
126
|
+
e.stopPropagation();
|
|
125
127
|
const domSelection = window.getSelection();
|
|
126
128
|
if (domSelection.type !== 'Range' || !editor.selection || _slate.Path.equals(editor.selection.focus.path, editor.selection.anchor.path)) {
|
|
127
129
|
draggedPreviewContainer.current = null;
|
|
@@ -193,6 +195,7 @@ const SideToolbar = () => {
|
|
|
193
195
|
});
|
|
194
196
|
}, [editor, isShowSideMenu, slateNode]);
|
|
195
197
|
const dragStart = (0, _react.useCallback)(event => {
|
|
198
|
+
event.stopPropagation();
|
|
196
199
|
// Create the preview container when dragging more than one listNodes
|
|
197
200
|
const noDrag = _slate.Path.equals(editor.selection.focus.path, editor.selection.anchor.path);
|
|
198
201
|
if (showSelectedNodesRef.current && showSelectedNodesRef.current.length > 1 && !noDrag) {
|
|
@@ -207,6 +210,7 @@ const SideToolbar = () => {
|
|
|
207
210
|
draggedPreviewContainer.current.appendChild(clonedNode);
|
|
208
211
|
});
|
|
209
212
|
event.dataTransfer.setDragImage(draggedPreviewContainer.current, 0, 0);
|
|
213
|
+
event.dataTransfer.setData(_event.DRAG_SDOC_EDITOR_ELEMENT, true);
|
|
210
214
|
draggedSourcePaths.current = showSelectedNodesRef.current.map(_ref4 => {
|
|
211
215
|
let [, path] = _ref4;
|
|
212
216
|
return path;
|
|
@@ -228,8 +232,11 @@ const SideToolbar = () => {
|
|
|
228
232
|
sourceElement = _slateReact.ReactEditor.toDOMNode(editor, nodeEntry[0]);
|
|
229
233
|
}
|
|
230
234
|
event.dataTransfer.setDragImage(sourceElement, 0, 0);
|
|
235
|
+
event.dataTransfer.setData(_event.DRAG_SDOC_EDITOR_ELEMENT, true);
|
|
231
236
|
}, [editor, slateNode]);
|
|
232
237
|
const dragOver = (0, _react.useCallback)(event => {
|
|
238
|
+
const dragTypes = event.dataTransfer.types;
|
|
239
|
+
if (!dragTypes.includes(_event.DRAG_SDOC_EDITOR_ELEMENT)) return;
|
|
233
240
|
const overElement = event.currentTarget;
|
|
234
241
|
if (!overElement.classList.contains('sdoc-draging')) {
|
|
235
242
|
overElement.classList.add('sdoc-draging');
|
|
@@ -240,11 +247,14 @@ const SideToolbar = () => {
|
|
|
240
247
|
leaveElement.classList.remove('sdoc-draging');
|
|
241
248
|
}, []);
|
|
242
249
|
const drop = (0, _react.useCallback)(event => {
|
|
243
|
-
const dragTypes = event.dataTransfer.types;
|
|
244
250
|
targetElement = event.currentTarget;
|
|
245
251
|
targetElement.classList.remove('sdoc-draging');
|
|
252
|
+
const dragTypes = event.dataTransfer.types;
|
|
253
|
+
if (!dragTypes.includes(_event.DRAG_SDOC_EDITOR_ELEMENT)) return;
|
|
254
|
+
|
|
246
255
|
// Prevent dragging table data to the editor
|
|
247
256
|
if (dragTypes.includes(_constants2.TABLE_DRAG_KEY)) return;
|
|
257
|
+
|
|
248
258
|
// Drag local image files to sdoc
|
|
249
259
|
if (event.dataTransfer.files.length > 0) {
|
|
250
260
|
const [, targetPath] = (0, _helpers.getNodeEntry)(editor, targetElement);
|
|
@@ -302,6 +312,7 @@ const SideToolbar = () => {
|
|
|
302
312
|
draggedSourcePaths.current = null;
|
|
303
313
|
showSelectedNodesRef.current = null;
|
|
304
314
|
draggedPreviewContainer.current = null;
|
|
315
|
+
event.dataTransfer.clearData();
|
|
305
316
|
}
|
|
306
317
|
}
|
|
307
318
|
const [sourceNode, sourcePath] = (0, _helpers.getNodeEntry)(editor, sourceElement);
|
package/dist/constants/index.js
CHANGED
|
@@ -36,6 +36,7 @@ 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',
|
|
39
40
|
// wiki
|
|
40
41
|
INSERT_LINK: 'insert_link',
|
|
41
42
|
// document
|