@seafile/sdoc-editor 3.0.129 → 3.0.131
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/extension/constants/element-type.js +3 -2
- package/dist/extension/constants/index.js +16 -3
- package/dist/extension/constants/menus-config.js +5 -1
- package/dist/extension/core/queries/index.js +5 -1
- package/dist/extension/plugins/divider/helper.js +22 -0
- package/dist/extension/plugins/divider/index.js +17 -0
- package/dist/extension/plugins/divider/menu/index.js +31 -0
- package/dist/extension/plugins/divider/plugin.js +90 -0
- package/dist/extension/plugins/divider/render-elem/index.css +19 -0
- package/dist/extension/plugins/divider/render-elem/index.js +28 -0
- package/dist/extension/plugins/embed-link/constants.js +5 -2
- package/dist/extension/plugins/embed-link/helper.js +12 -1
- package/dist/extension/plugins/embed-link/index.css +6 -2
- package/dist/extension/plugins/embed-link/render-elem.js +97 -2
- package/dist/extension/plugins/html/rules/hr.js +21 -0
- package/dist/extension/plugins/html/rules/index.js +2 -1
- package/dist/extension/plugins/index.js +8 -1
- package/dist/extension/render/custom-element.js +6 -0
- package/dist/extension/toolbar/header-toolbar/insert-toolbar/index.js +12 -9
- package/dist/extension/toolbar/side-toolbar/helpers.js +3 -0
- package/dist/slate-convert/html-to-slate/constants.js +3 -2
- package/dist/slate-convert/html-to-slate/rules/hr.js +23 -0
- package/dist/slate-convert/html-to-slate/rules/index.js +2 -1
- package/dist/slate-convert/md-to-slate/transform.js +1 -1
- package/dist/slate-convert/slate-to-md/transform.js +7 -1
- package/package.json +2 -2
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.WIKI_LINK = exports.WHITEBOARD = exports.VIDEO_LINK = exports.VIDEO = exports.UNORDERED_LIST = exports.TWO_COLUMN = exports.TOP_LEVEL_TYPES = exports.TOGGLE_HEADER3 = exports.TOGGLE_HEADER2 = exports.TOGGLE_HEADER1 = exports.TOGGLE_HEADER = exports.TOGGLE_CONTENT = exports.TITLE = exports.THREE_COLUMN = exports.TABLE_ROW = exports.TABLE_CELL = exports.TABLE = exports.SUBTITLE = 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.GROUP = exports.FOUR_COLUMN = exports.FORMULA = exports.FONT_SIZE_REDUCE = exports.FONT_SIZE_INCREASE = exports.FONT_SIZE = exports.FIVE_COLUMN = exports.FILE_VIEW = exports.FILE_LINK_INSET_INPUT_TEMP = exports.FILE_LINK = exports.EMBED_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_LINK = exports.VIDEO = exports.UNORDERED_LIST = exports.TWO_COLUMN = exports.TOP_LEVEL_TYPES = exports.TOGGLE_HEADER3 = exports.TOGGLE_HEADER2 = exports.TOGGLE_HEADER1 = exports.TOGGLE_HEADER = exports.TOGGLE_CONTENT = exports.TITLE = exports.THREE_COLUMN = exports.TABLE_ROW = exports.TABLE_CELL = exports.TABLE = exports.SUBTITLE = 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.GROUP = exports.FOUR_COLUMN = exports.FORMULA = exports.FONT_SIZE_REDUCE = exports.FONT_SIZE_INCREASE = exports.FONT_SIZE = exports.FIVE_COLUMN = exports.FILE_VIEW = exports.FILE_LINK_INSET_INPUT_TEMP = exports.FILE_LINK = exports.EMBED_LINK = exports.DIVIDER = exports.COLUMN = exports.CODE_LINE = exports.CODE_BLOCK = exports.CHECK_LIST_ITEM = exports.CALL_OUT = exports.BLOCKQUOTE = exports.ASK_AI = void 0;
|
|
7
7
|
var BLOCKQUOTE = exports.BLOCKQUOTE = 'blockquote';
|
|
8
8
|
var TITLE = exports.TITLE = 'title';
|
|
9
9
|
var SUBTITLE = exports.SUBTITLE = 'subtitle';
|
|
@@ -52,6 +52,7 @@ var TOGGLE_HEADER2 = exports.TOGGLE_HEADER2 = 'toggle_header2';
|
|
|
52
52
|
var TOGGLE_HEADER3 = exports.TOGGLE_HEADER3 = 'toggle_header3';
|
|
53
53
|
var TOGGLE_CONTENT = exports.TOGGLE_CONTENT = 'toggle_content';
|
|
54
54
|
var EMBED_LINK = exports.EMBED_LINK = 'embed_link';
|
|
55
|
+
var DIVIDER = exports.DIVIDER = 'divider';
|
|
55
56
|
var ASK_AI = exports.ASK_AI = 'ask_ai';
|
|
56
57
|
|
|
57
58
|
// font
|
|
@@ -61,5 +62,5 @@ var FONT_SIZE_REDUCE = exports.FONT_SIZE_REDUCE = 'font-size-reduce';
|
|
|
61
62
|
|
|
62
63
|
// group
|
|
63
64
|
var GROUP = exports.GROUP = 'group';
|
|
64
|
-
var TOP_LEVEL_TYPES = exports.TOP_LEVEL_TYPES = [BLOCKQUOTE, TITLE, SUBTITLE, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, ORDERED_LIST, UNORDERED_LIST, CHECK_LIST_ITEM, PARAGRAPH, CODE_BLOCK, TABLE, IMAGE_BLOCK, VIDEO, WHITEBOARD, TOGGLE_HEADER];
|
|
65
|
+
var TOP_LEVEL_TYPES = exports.TOP_LEVEL_TYPES = [BLOCKQUOTE, TITLE, SUBTITLE, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, ORDERED_LIST, UNORDERED_LIST, CHECK_LIST_ITEM, PARAGRAPH, CODE_BLOCK, TABLE, IMAGE_BLOCK, VIDEO, WHITEBOARD, TOGGLE_HEADER, EMBED_LINK, DIVIDER];
|
|
65
66
|
var INLINE_LEVEL_TYPES = exports.INLINE_LEVEL_TYPES = [IMAGE, LINK, MENTION, MENTION_TEMP];
|
|
@@ -115,7 +115,20 @@ Object.defineProperty(exports, "DIFF_TYPE", {
|
|
|
115
115
|
return _diffView.DIFF_TYPE;
|
|
116
116
|
}
|
|
117
117
|
});
|
|
118
|
-
|
|
118
|
+
Object.defineProperty(exports, "DIVIDER", {
|
|
119
|
+
enumerable: true,
|
|
120
|
+
get: function get() {
|
|
121
|
+
return _elementType.DIVIDER;
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
exports.ELEMENT_TYPE = void 0;
|
|
125
|
+
Object.defineProperty(exports, "EMBED_LINK", {
|
|
126
|
+
enumerable: true,
|
|
127
|
+
get: function get() {
|
|
128
|
+
return _elementType.EMBED_LINK;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
exports.FILEEXT_TYPE_MAP = exports.FILEEXT_TYPE = void 0;
|
|
119
132
|
Object.defineProperty(exports, "FILE_LINK", {
|
|
120
133
|
enumerable: true,
|
|
121
134
|
get: function get() {
|
|
@@ -588,6 +601,6 @@ var FILEEXT_TYPE_MAP = exports.FILEEXT_TYPE_MAP = {
|
|
|
588
601
|
EXCALIDRAW: 'draw',
|
|
589
602
|
DOCUMENT: 'word'
|
|
590
603
|
};
|
|
591
|
-
var 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.FORMULA, _elementType.TOGGLE_HEADER].concat(TOGGLE_TITLE_TYPES, [_elementType.FILE_VIEW]);
|
|
604
|
+
var 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.FORMULA, _elementType.TOGGLE_HEADER].concat(TOGGLE_TITLE_TYPES, [_elementType.FILE_VIEW, _elementType.EMBED_LINK, _elementType.DIVIDER]);
|
|
592
605
|
var MOUSE_ENTER_EVENT_DISABLED_MAP = exports.MOUSE_ENTER_EVENT_DISABLED_MAP = (_MOUSE_ENTER_EVENT_DI = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_MOUSE_ENTER_EVENT_DI, _elementType.PARAGRAPH, [_elementType.CALL_OUT]), _elementType.TITLE, [_elementType.CALL_OUT]), _elementType.SUBTITLE, [_elementType.CALL_OUT]), _elementType.CHECK_LIST_ITEM, [_elementType.CALL_OUT]), _elementType.ORDERED_LIST, [_elementType.CALL_OUT]), _elementType.UNORDERED_LIST, [_elementType.CALL_OUT]), _elementType.LIST_ITEM, [_elementType.CALL_OUT]), _elementType.BLOCKQUOTE, [_elementType.CALL_OUT]), _elementType.HEADER1, [_elementType.CALL_OUT]), _elementType.HEADER2, [_elementType.CALL_OUT]), (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_MOUSE_ENTER_EVENT_DI, _elementType.HEADER3, [_elementType.CALL_OUT]), _elementType.HEADER4, [_elementType.CALL_OUT]), _elementType.HEADER5, [_elementType.CALL_OUT]), _elementType.HEADER6, [_elementType.CALL_OUT]), _elementType.CALL_OUT, [_elementType.CALL_OUT]));
|
|
593
|
-
var 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.WHITEBOARD, _elementType.FORMULA, _elementType.MULTI_COLUMN, _elementType.TOGGLE_HEADER, _elementType.FILE_VIEW];
|
|
606
|
+
var 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.WHITEBOARD, _elementType.FORMULA, _elementType.MULTI_COLUMN, _elementType.TOGGLE_HEADER, _elementType.FILE_VIEW, _elementType.EMBED_LINK, _elementType.DIVIDER];
|
|
@@ -205,10 +205,14 @@ var MENUS_CONFIG_MAP = exports.MENUS_CONFIG_MAP = (_MENUS_CONFIG_MAP = {}, (0, _
|
|
|
205
205
|
id: "sdoc_".concat(_elementType.CALL_OUT),
|
|
206
206
|
iconClass: 'sdocfont sdoc-callout',
|
|
207
207
|
text: 'Callout'
|
|
208
|
-
}), (0, _defineProperty2["default"])(_MENUS_CONFIG_MAP, SEARCH_REPLACE, {
|
|
208
|
+
}), (0, _defineProperty2["default"])((0, _defineProperty2["default"])(_MENUS_CONFIG_MAP, SEARCH_REPLACE, {
|
|
209
209
|
id: "sdoc_".concat(SEARCH_REPLACE),
|
|
210
210
|
iconClass: 'sdocfont sdoc-find-replace',
|
|
211
211
|
text: 'Search_and_replace'
|
|
212
|
+
}), _elementType.DIVIDER, {
|
|
213
|
+
id: "sdoc_".concat(_elementType.DIVIDER),
|
|
214
|
+
iconClass: 'sdocfont sdoc-divider',
|
|
215
|
+
text: 'Divider'
|
|
212
216
|
}));
|
|
213
217
|
|
|
214
218
|
// Side transform menu config
|
|
@@ -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.isMiddlePoint = exports.isLastNode = exports.isLastChild = exports.isHasImg = exports.isFirstChild = exports.isEndPoint = exports.isEmptyArticle = exports.isCursorAtBlockStart = 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.getNearestBlockNode = 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.isFirstNode = exports.isFirstChild = exports.isEndPoint = exports.isEmptyArticle = exports.isCursorAtBlockStart = 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.getNearestBlockNode = 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 _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectWithoutProperties"));
|
|
9
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
10
10
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
@@ -584,6 +584,10 @@ var isLastNode = exports.isLastNode = function isLastNode(editor, node) {
|
|
|
584
584
|
var editorChildrenLength = editorChildren.length;
|
|
585
585
|
return editorChildren[editorChildrenLength - 1] === node;
|
|
586
586
|
};
|
|
587
|
+
var isFirstNode = exports.isFirstNode = function isFirstNode(editor, node) {
|
|
588
|
+
var editorChildren = editor.children || [];
|
|
589
|
+
return editorChildren[0] === node;
|
|
590
|
+
};
|
|
587
591
|
var isHasImg = exports.isHasImg = function isHasImg(editor) {
|
|
588
592
|
var hasImg = false;
|
|
589
593
|
var _iterator5 = (0, _createForOfIteratorHelper2["default"])(_slate.Editor.nodes(editor, {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.transformToDivider = exports.insertDivider = void 0;
|
|
7
|
+
var _slate = require("@seafile/slate");
|
|
8
|
+
var _constants = require("../../constants");
|
|
9
|
+
var _core = require("../../core");
|
|
10
|
+
var transformToDivider = exports.transformToDivider = function transformToDivider(editor) {
|
|
11
|
+
if (!editor.selection) return;
|
|
12
|
+
_slate.Transforms.setNodes(editor, {
|
|
13
|
+
type: _constants.DIVIDER
|
|
14
|
+
});
|
|
15
|
+
(0, _core.focusEditor)(editor);
|
|
16
|
+
};
|
|
17
|
+
var insertDivider = exports.insertDivider = function insertDivider(editor) {
|
|
18
|
+
if (!editor.selection) return;
|
|
19
|
+
var dividerNode = (0, _core.generateEmptyElement)(_constants.DIVIDER);
|
|
20
|
+
_slate.Transforms.insertNodes(editor, dividerNode);
|
|
21
|
+
(0, _core.focusEditor)(editor);
|
|
22
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
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 _renderElem = _interopRequireDefault(require("./render-elem"));
|
|
11
|
+
var DividerPlugin = {
|
|
12
|
+
type: _constants.DIVIDER,
|
|
13
|
+
nodeType: 'element',
|
|
14
|
+
editorPlugin: _plugin["default"],
|
|
15
|
+
renderElements: [_renderElem["default"]]
|
|
16
|
+
};
|
|
17
|
+
var _default = exports["default"] = DividerPlugin;
|
|
@@ -0,0 +1,31 @@
|
|
|
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 _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
|
|
11
|
+
var _constants = require("../../../constants");
|
|
12
|
+
var _helper = require("../helper");
|
|
13
|
+
var menuConfig = _constants.MENUS_CONFIG_MAP[_constants.DIVIDER];
|
|
14
|
+
var DividerMenu = function DividerMenu(_ref) {
|
|
15
|
+
var readonly = _ref.readonly,
|
|
16
|
+
editor = _ref.editor,
|
|
17
|
+
toggle = _ref.toggle;
|
|
18
|
+
var onMousedown = (0, _react.useCallback)(function (e) {
|
|
19
|
+
e.preventDefault();
|
|
20
|
+
(0, _helper.insertDivider)(editor);
|
|
21
|
+
toggle && toggle();
|
|
22
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
23
|
+
}, []);
|
|
24
|
+
return /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
|
|
25
|
+
disabled: readonly,
|
|
26
|
+
menuConfig: menuConfig,
|
|
27
|
+
className: "pr-2",
|
|
28
|
+
onClick: onMousedown
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
var _default = exports["default"] = DividerMenu;
|
|
@@ -0,0 +1,90 @@
|
|
|
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 _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
9
|
+
var _slate = require("@seafile/slate");
|
|
10
|
+
var _constants = require("../../constants");
|
|
11
|
+
var _core = require("../../core");
|
|
12
|
+
var HR_PATTERNS = ['---', '***', '___'];
|
|
13
|
+
var withDivider = function withDivider(editor) {
|
|
14
|
+
var isVoid = editor.isVoid,
|
|
15
|
+
insertText = editor.insertText,
|
|
16
|
+
normalizeNode = editor.normalizeNode;
|
|
17
|
+
var newEditor = editor;
|
|
18
|
+
newEditor.isVoid = function (element) {
|
|
19
|
+
var type = element.type;
|
|
20
|
+
if (type === _constants.DIVIDER) return true;
|
|
21
|
+
return isVoid(element);
|
|
22
|
+
};
|
|
23
|
+
newEditor.insertText = function (text) {
|
|
24
|
+
var selection = newEditor.selection;
|
|
25
|
+
if (!selection || !_slate.Range.isCollapsed(selection)) {
|
|
26
|
+
insertText(text);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
var _Editor$nodes = _slate.Editor.nodes(newEditor, {
|
|
30
|
+
at: selection,
|
|
31
|
+
match: function match(n) {
|
|
32
|
+
return _slate.Element.isElement(n) && n.type === _constants.PARAGRAPH;
|
|
33
|
+
}
|
|
34
|
+
}),
|
|
35
|
+
_Editor$nodes2 = (0, _slicedToArray2["default"])(_Editor$nodes, 1),
|
|
36
|
+
blockEntry = _Editor$nodes2[0];
|
|
37
|
+
if (!blockEntry) {
|
|
38
|
+
insertText(text);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
var _blockEntry = (0, _slicedToArray2["default"])(blockEntry, 2),
|
|
42
|
+
blockNode = _blockEntry[0],
|
|
43
|
+
blockPath = _blockEntry[1];
|
|
44
|
+
var blockText = _slate.Node.string(blockNode);
|
|
45
|
+
var nextText = blockText + text;
|
|
46
|
+
if (HR_PATTERNS.includes(nextText)) {
|
|
47
|
+
_slate.Editor.withoutNormalizing(newEditor, function () {
|
|
48
|
+
_slate.Transforms.removeNodes(newEditor, {
|
|
49
|
+
at: blockPath
|
|
50
|
+
});
|
|
51
|
+
_slate.Transforms.insertNodes(newEditor, (0, _core.generateEmptyElement)(_constants.DIVIDER), {
|
|
52
|
+
at: blockPath
|
|
53
|
+
});
|
|
54
|
+
var nextPath = _slate.Path.next(blockPath);
|
|
55
|
+
_slate.Transforms.insertNodes(newEditor, (0, _core.generateEmptyElement)(_constants.PARAGRAPH), {
|
|
56
|
+
at: nextPath
|
|
57
|
+
});
|
|
58
|
+
_slate.Transforms.select(newEditor, _slate.Editor.start(newEditor, nextPath));
|
|
59
|
+
});
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
return insertText(text);
|
|
63
|
+
};
|
|
64
|
+
newEditor.normalizeNode = function (_ref) {
|
|
65
|
+
var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
|
|
66
|
+
node = _ref2[0],
|
|
67
|
+
path = _ref2[1];
|
|
68
|
+
if (node.type === _constants.DIVIDER) {
|
|
69
|
+
var isLast = (0, _core.isLastNode)(newEditor, node);
|
|
70
|
+
if (isLast) {
|
|
71
|
+
var paragraph = (0, _core.generateEmptyElement)(_constants.PARAGRAPH);
|
|
72
|
+
_slate.Transforms.insertNodes(newEditor, paragraph, {
|
|
73
|
+
at: [path[0] + 1]
|
|
74
|
+
});
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
var isFirst = (0, _core.isFirstNode)(newEditor, node);
|
|
78
|
+
if (isFirst) {
|
|
79
|
+
var _paragraph = (0, _core.generateEmptyElement)(_constants.PARAGRAPH);
|
|
80
|
+
_slate.Transforms.insertNodes(newEditor, _paragraph, {
|
|
81
|
+
at: [path[0]]
|
|
82
|
+
});
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return normalizeNode([node, path]);
|
|
87
|
+
};
|
|
88
|
+
return newEditor;
|
|
89
|
+
};
|
|
90
|
+
var _default = exports["default"] = withDivider;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
.sdoc-divider-container {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
cursor: pointer;
|
|
5
|
+
height: 13px;
|
|
6
|
+
width: 100%;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.sdoc-divider-container.is-selected {
|
|
10
|
+
border-radius: 4px;
|
|
11
|
+
background-color: Highlight;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.sdoc-divider-element {
|
|
15
|
+
border-top: 1px solid #cccccc;
|
|
16
|
+
width: 100%;
|
|
17
|
+
height: 0;
|
|
18
|
+
margin: 5px 0;
|
|
19
|
+
}
|
|
@@ -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 _slateReact = require("@seafile/slate-react");
|
|
10
|
+
require("./index.css");
|
|
11
|
+
/* eslint-disable react-hooks/rules-of-hooks */
|
|
12
|
+
|
|
13
|
+
var renderDivider = function renderDivider(_ref) {
|
|
14
|
+
var attributes = _ref.attributes,
|
|
15
|
+
children = _ref.children,
|
|
16
|
+
element = _ref.element;
|
|
17
|
+
var isSelected = (0, _slateReact.useSelected)();
|
|
18
|
+
return /*#__PURE__*/_react["default"].createElement("div", Object.assign({
|
|
19
|
+
"data-id": element.id
|
|
20
|
+
}, attributes, {
|
|
21
|
+
contentEditable: "false",
|
|
22
|
+
suppressContentEditableWarning: true,
|
|
23
|
+
className: "sdoc-divider-container ".concat(isSelected ? 'is-selected' : '')
|
|
24
|
+
}), children, /*#__PURE__*/_react["default"].createElement("div", {
|
|
25
|
+
className: "sdoc-divider-element"
|
|
26
|
+
}));
|
|
27
|
+
};
|
|
28
|
+
var _default = exports["default"] = renderDivider;
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.EMBED_LINK_SOURCE = void 0;
|
|
6
|
+
exports.MIN_EMBED_LINK_HEIGHT = exports.MAX_EMBED_LINK_HEIGHT = exports.EMBED_LINK_SOURCE = exports.DEFAULT_EMBED_LINK_HEIGHT = void 0;
|
|
7
7
|
var EMBED_LINK_SOURCE = exports.EMBED_LINK_SOURCE = {
|
|
8
8
|
SEATABLE: 'seatable',
|
|
9
9
|
FIGMA: 'figma'
|
|
10
|
-
};
|
|
10
|
+
};
|
|
11
|
+
var DEFAULT_EMBED_LINK_HEIGHT = exports.DEFAULT_EMBED_LINK_HEIGHT = 300;
|
|
12
|
+
var MIN_EMBED_LINK_HEIGHT = exports.MIN_EMBED_LINK_HEIGHT = 300;
|
|
13
|
+
var MAX_EMBED_LINK_HEIGHT = exports.MAX_EMBED_LINK_HEIGHT = 550;
|
|
@@ -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.normalizeFigmaEmbedLink = exports.isInsertEmbedLinkDisabled = exports.insertEmbedLink = exports.getEmbedLinkType = exports.generateEmbedLinkNode = void 0;
|
|
7
|
+
exports.updateEmbedLink = exports.normalizeFigmaEmbedLink = exports.isInsertEmbedLinkDisabled = exports.insertEmbedLink = exports.getEmbedLinkType = exports.generateEmbedLinkNode = void 0;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
9
9
|
var _slate = require("@seafile/slate");
|
|
10
10
|
var _slateReact = require("@seafile/slate-react");
|
|
@@ -131,4 +131,15 @@ var insertEmbedLink = exports.insertEmbedLink = function insertEmbedLink(editor,
|
|
|
131
131
|
(0, _core.focusEditor)(editor, range);
|
|
132
132
|
return;
|
|
133
133
|
}
|
|
134
|
+
};
|
|
135
|
+
var updateEmbedLink = exports.updateEmbedLink = function updateEmbedLink(editor, data) {
|
|
136
|
+
_slate.Transforms.setNodes(editor, {
|
|
137
|
+
data: data
|
|
138
|
+
}, {
|
|
139
|
+
match: function match(n) {
|
|
140
|
+
return (0, _core.getNodeType)(n) === _elementType.EMBED_LINK;
|
|
141
|
+
},
|
|
142
|
+
at: editor.selection,
|
|
143
|
+
voids: true
|
|
144
|
+
});
|
|
134
145
|
};
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
.sdoc-embed-link-container {
|
|
2
2
|
position: relative;
|
|
3
|
-
width: 100%;
|
|
4
|
-
height: 300px;
|
|
5
3
|
border: 1px solid #ccc;
|
|
6
4
|
margin: 5px 0;
|
|
5
|
+
width: 100%;
|
|
7
6
|
}
|
|
8
7
|
|
|
9
8
|
.sdoc-embed-link-container.isSelected {
|
|
@@ -40,6 +39,11 @@
|
|
|
40
39
|
z-index: 1;
|
|
41
40
|
}
|
|
42
41
|
|
|
42
|
+
.sdoc-embed-link-container.isSelected .image-resizer {
|
|
43
|
+
z-index: 1;
|
|
44
|
+
cursor: ns-resize;
|
|
45
|
+
}
|
|
46
|
+
|
|
43
47
|
.embed-link-zoom-out-container {
|
|
44
48
|
position: fixed;
|
|
45
49
|
inset: 0;
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.renderEmbedLink = renderEmbedLink;
|
|
9
9
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
10
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
11
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
13
|
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
@@ -23,13 +24,18 @@ var _helper = require("./helper");
|
|
|
23
24
|
var _hoverMenu = _interopRequireDefault(require("./hover-menu"));
|
|
24
25
|
require("./index.css");
|
|
25
26
|
var EmbedLink = function EmbedLink(_ref) {
|
|
27
|
+
var _element$data2;
|
|
26
28
|
var editor = _ref.editor,
|
|
27
29
|
element = _ref.element;
|
|
28
30
|
var EmbedLinkRef = (0, _react.useRef)();
|
|
31
|
+
var embedLinkContainerRef = (0, _react.useRef)(null);
|
|
29
32
|
var fullscreenRef = (0, _react.useRef)();
|
|
30
33
|
var scrollRef = (0, _useScrollContext.useScrollContext)();
|
|
31
34
|
var isSelected = (0, _slateReact.useSelected)();
|
|
32
35
|
var readOnly = (0, _slateReact.useReadOnly)();
|
|
36
|
+
var resizerRef = (0, _react.useRef)(null);
|
|
37
|
+
var resizeStartYRef = (0, _react.useRef)(0);
|
|
38
|
+
var resizeStartHeightRef = (0, _react.useRef)(0);
|
|
33
39
|
var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
|
|
34
40
|
t = _useTranslation.t;
|
|
35
41
|
var _useState = (0, _react.useState)({
|
|
@@ -43,6 +49,14 @@ var EmbedLink = function EmbedLink(_ref) {
|
|
|
43
49
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
44
50
|
isShowZoomOut = _useState4[0],
|
|
45
51
|
setIsShowZoomOut = _useState4[1];
|
|
52
|
+
var _useState5 = (0, _react.useState)(null),
|
|
53
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
54
|
+
movingHeight = _useState6[0],
|
|
55
|
+
setMovingHeight = _useState6[1];
|
|
56
|
+
var _useState7 = (0, _react.useState)(false),
|
|
57
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
58
|
+
isResizing = _useState8[0],
|
|
59
|
+
setIsResizing = _useState8[1];
|
|
46
60
|
var originalLink = element.link,
|
|
47
61
|
link_type = element.link_type;
|
|
48
62
|
var link = originalLink;
|
|
@@ -52,6 +66,76 @@ var EmbedLink = function EmbedLink(_ref) {
|
|
|
52
66
|
var isValidUrl = (0, _react.useMemo)(function () {
|
|
53
67
|
return (0, _isUrl["default"])(link);
|
|
54
68
|
}, [link]);
|
|
69
|
+
var registerEvent = (0, _react.useCallback)(function (eventList) {
|
|
70
|
+
eventList.forEach(function (element) {
|
|
71
|
+
document.addEventListener(element.eventName, element.event);
|
|
72
|
+
});
|
|
73
|
+
}, []);
|
|
74
|
+
var getEmbedLinkHeight = (0, _react.useCallback)(function () {
|
|
75
|
+
var _element$data;
|
|
76
|
+
var height = movingHeight !== null && movingHeight !== void 0 ? movingHeight : element === null || element === void 0 ? void 0 : (_element$data = element.data) === null || _element$data === void 0 ? void 0 : _element$data.height;
|
|
77
|
+
var parsedHeight = Number(height);
|
|
78
|
+
if (parsedHeight > 0) {
|
|
79
|
+
return Math.min(Math.max(parsedHeight, _constants.MIN_EMBED_LINK_HEIGHT), _constants.MAX_EMBED_LINK_HEIGHT);
|
|
80
|
+
}
|
|
81
|
+
return _constants.DEFAULT_EMBED_LINK_HEIGHT;
|
|
82
|
+
}, [element === null || element === void 0 ? void 0 : (_element$data2 = element.data) === null || _element$data2 === void 0 ? void 0 : _element$data2.height, movingHeight]);
|
|
83
|
+
var onMouseMove = (0, _react.useCallback)(function (event) {
|
|
84
|
+
event.preventDefault();
|
|
85
|
+
event.stopPropagation();
|
|
86
|
+
var changeY = event.clientY - resizeStartYRef.current;
|
|
87
|
+
var embedLinkHeight = resizeStartHeightRef.current + changeY;
|
|
88
|
+
embedLinkHeight = Math.min(Math.max(embedLinkHeight, _constants.MIN_EMBED_LINK_HEIGHT), _constants.MAX_EMBED_LINK_HEIGHT);
|
|
89
|
+
if (embedLinkContainerRef.current) {
|
|
90
|
+
embedLinkContainerRef.current.style.height = "".concat(embedLinkHeight, "px");
|
|
91
|
+
}
|
|
92
|
+
setMovingHeight(embedLinkHeight);
|
|
93
|
+
}, []);
|
|
94
|
+
var onResizeEnd = (0, _react.useCallback)(function (event) {
|
|
95
|
+
var _ref2, _embedLinkContainerRe;
|
|
96
|
+
event.preventDefault();
|
|
97
|
+
event.stopPropagation();
|
|
98
|
+
unregisterEvent([{
|
|
99
|
+
'eventName': 'mousemove',
|
|
100
|
+
'event': onMouseMove
|
|
101
|
+
}, {
|
|
102
|
+
'eventName': 'mouseup',
|
|
103
|
+
'event': onResizeEnd
|
|
104
|
+
}]);
|
|
105
|
+
var resolvedHeight = (_ref2 = movingHeight !== null && movingHeight !== void 0 ? movingHeight : (_embedLinkContainerRe = embedLinkContainerRef.current) === null || _embedLinkContainerRe === void 0 ? void 0 : _embedLinkContainerRe.getBoundingClientRect().height) !== null && _ref2 !== void 0 ? _ref2 : getEmbedLinkHeight();
|
|
106
|
+
var finalHeight = Math.min(Math.max(Number(resolvedHeight) || _constants.DEFAULT_EMBED_LINK_HEIGHT, _constants.MIN_EMBED_LINK_HEIGHT), _constants.MAX_EMBED_LINK_HEIGHT);
|
|
107
|
+
var newData = (0, _objectSpread2["default"])({}, element.data || {});
|
|
108
|
+
delete newData.width;
|
|
109
|
+
newData.height = finalHeight;
|
|
110
|
+
(0, _helper.updateEmbedLink)(editor, newData);
|
|
111
|
+
|
|
112
|
+
// Reset hover menu position
|
|
113
|
+
setTimeout(function () {
|
|
114
|
+
setIsResizing(false);
|
|
115
|
+
}, 100);
|
|
116
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
117
|
+
}, [editor, element.data, getEmbedLinkHeight, movingHeight, onMouseMove]);
|
|
118
|
+
var unregisterEvent = (0, _react.useCallback)(function (eventList) {
|
|
119
|
+
eventList.forEach(function (element) {
|
|
120
|
+
document.removeEventListener(element.eventName, element.event);
|
|
121
|
+
});
|
|
122
|
+
}, []);
|
|
123
|
+
var onResizeStart = (0, _react.useCallback)(function (event) {
|
|
124
|
+
var _embedLinkContainerRe2;
|
|
125
|
+
event.preventDefault();
|
|
126
|
+
event.stopPropagation();
|
|
127
|
+
setIsResizing(true);
|
|
128
|
+
resizeStartYRef.current = event.clientY;
|
|
129
|
+
var currentHeight = ((_embedLinkContainerRe2 = embedLinkContainerRef.current) === null || _embedLinkContainerRe2 === void 0 ? void 0 : _embedLinkContainerRe2.getBoundingClientRect().height) || getEmbedLinkHeight();
|
|
130
|
+
resizeStartHeightRef.current = currentHeight;
|
|
131
|
+
registerEvent([{
|
|
132
|
+
'eventName': 'mousemove',
|
|
133
|
+
'event': onMouseMove
|
|
134
|
+
}, {
|
|
135
|
+
'eventName': 'mouseup',
|
|
136
|
+
'event': onResizeEnd
|
|
137
|
+
}]);
|
|
138
|
+
}, [getEmbedLinkHeight, onMouseMove, onResizeEnd, registerEvent]);
|
|
55
139
|
var onDeleteEmbedLink = (0, _react.useCallback)(function () {
|
|
56
140
|
var path = _slateReact.ReactEditor.findPath(editor, element);
|
|
57
141
|
_slate.Transforms.removeNodes(editor, {
|
|
@@ -99,7 +183,9 @@ var EmbedLink = function EmbedLink(_ref) {
|
|
|
99
183
|
resizeObserver.observe(scrollRef.current);
|
|
100
184
|
}
|
|
101
185
|
return function () {
|
|
102
|
-
observerRefValue
|
|
186
|
+
if (observerRefValue) {
|
|
187
|
+
observerRefValue.removeEventListener('scroll', handleScroll);
|
|
188
|
+
}
|
|
103
189
|
if (resizeObserver) {
|
|
104
190
|
resizeObserver.disconnect();
|
|
105
191
|
}
|
|
@@ -130,9 +216,14 @@ var EmbedLink = function EmbedLink(_ref) {
|
|
|
130
216
|
};
|
|
131
217
|
}, [isShowZoomOut, setIsShowZoomOut]);
|
|
132
218
|
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
219
|
+
ref: embedLinkContainerRef,
|
|
133
220
|
className: (0, _classnames["default"])('sdoc-embed-link-container', {
|
|
134
221
|
'isSelected': isSelected
|
|
135
222
|
}),
|
|
223
|
+
style: {
|
|
224
|
+
height: getEmbedLinkHeight(),
|
|
225
|
+
maxHeight: _constants.MAX_EMBED_LINK_HEIGHT
|
|
226
|
+
},
|
|
136
227
|
onDoubleClick: handleDoubleClick,
|
|
137
228
|
scrolling: "no"
|
|
138
229
|
}, isValidUrl && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("iframe", {
|
|
@@ -144,10 +235,14 @@ var EmbedLink = function EmbedLink(_ref) {
|
|
|
144
235
|
className: "iframe-overlay",
|
|
145
236
|
onDoubleClick: handleDoubleClick,
|
|
146
237
|
onClick: handleOnClick
|
|
238
|
+
}), !readOnly && isSelected && /*#__PURE__*/_react["default"].createElement("span", {
|
|
239
|
+
className: "image-resizer",
|
|
240
|
+
ref: resizerRef,
|
|
241
|
+
onMouseDown: onResizeStart
|
|
147
242
|
})), !isValidUrl && /*#__PURE__*/_react["default"].createElement("div", {
|
|
148
243
|
ref: EmbedLinkRef,
|
|
149
244
|
className: "sdoc-embed-link-tip"
|
|
150
|
-
}, t('Embed_link_invalid_tip'))), isSelected && !readOnly && !isShowZoomOut && /*#__PURE__*/_react["default"].createElement(_hoverMenu["default"], {
|
|
245
|
+
}, t('Embed_link_invalid_tip'))), isSelected && !readOnly && !isShowZoomOut && !isResizing && /*#__PURE__*/_react["default"].createElement(_hoverMenu["default"], {
|
|
151
246
|
isValidUrl: isValidUrl,
|
|
152
247
|
menuPosition: menuPosition,
|
|
153
248
|
onOpen: handleDoubleClick,
|
|
@@ -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 _slugid = _interopRequireDefault(require("slugid"));
|
|
9
|
+
var _constants = require("../../../constants");
|
|
10
|
+
var hrRule = function hrRule(element) {
|
|
11
|
+
if (element.nodeName !== 'HR') return;
|
|
12
|
+
return {
|
|
13
|
+
id: _slugid["default"].nice(),
|
|
14
|
+
type: _constants.DIVIDER,
|
|
15
|
+
children: [{
|
|
16
|
+
id: _slugid["default"].nice(),
|
|
17
|
+
text: ''
|
|
18
|
+
}]
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
var _default = exports["default"] = hrRule;
|
|
@@ -8,11 +8,12 @@ exports["default"] = void 0;
|
|
|
8
8
|
var _blockquote = _interopRequireDefault(require("./blockquote"));
|
|
9
9
|
var _codeBlock = _interopRequireDefault(require("./code-block"));
|
|
10
10
|
var _header = _interopRequireDefault(require("./header"));
|
|
11
|
+
var _hr = _interopRequireDefault(require("./hr"));
|
|
11
12
|
var _image = _interopRequireDefault(require("./image"));
|
|
12
13
|
var _link = _interopRequireDefault(require("./link"));
|
|
13
14
|
var _list = _interopRequireDefault(require("./list"));
|
|
14
15
|
var _paragraph = _interopRequireDefault(require("./paragraph"));
|
|
15
16
|
var _table = _interopRequireDefault(require("./table"));
|
|
16
17
|
var _text = _interopRequireDefault(require("./text"));
|
|
17
|
-
var rules = [_blockquote["default"], _codeBlock["default"], _header["default"], _image["default"], _link["default"], _list["default"], _table["default"], _paragraph["default"], _text["default"]];
|
|
18
|
+
var rules = [_blockquote["default"], _codeBlock["default"], _header["default"], _image["default"], _link["default"], _list["default"], _table["default"], _hr["default"], _paragraph["default"], _text["default"]];
|
|
18
19
|
var _default = exports["default"] = rules;
|
|
@@ -29,6 +29,12 @@ Object.defineProperty(exports, "CodeBlockPlugin", {
|
|
|
29
29
|
}
|
|
30
30
|
});
|
|
31
31
|
exports.CommentPlugins = void 0;
|
|
32
|
+
Object.defineProperty(exports, "DividerPlugin", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function get() {
|
|
35
|
+
return _divider["default"];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
32
38
|
Object.defineProperty(exports, "EmbedLinkPlugin", {
|
|
33
39
|
enumerable: true,
|
|
34
40
|
get: function get() {
|
|
@@ -184,6 +190,7 @@ var _blockquote = _interopRequireDefault(require("./blockquote"));
|
|
|
184
190
|
var _callout = _interopRequireDefault(require("./callout"));
|
|
185
191
|
var _checkList = _interopRequireDefault(require("./check-list"));
|
|
186
192
|
var _codeBlock = _interopRequireDefault(require("./code-block"));
|
|
193
|
+
var _divider = _interopRequireDefault(require("./divider"));
|
|
187
194
|
var _embedLink = _interopRequireDefault(require("./embed-link"));
|
|
188
195
|
var _fileLink = _interopRequireDefault(require("./file-link"));
|
|
189
196
|
var _fileView = _interopRequireDefault(require("./file-view"));
|
|
@@ -209,7 +216,7 @@ var _toggleHeader = _interopRequireDefault(require("./toggle-header"));
|
|
|
209
216
|
var _video = _interopRequireDefault(require("./video"));
|
|
210
217
|
var _whiteboard = _interopRequireDefault(require("./whiteboard"));
|
|
211
218
|
var _wikiLink = _interopRequireDefault(require("./wiki-link"));
|
|
212
|
-
var Plugins = [_markdown["default"], _html["default"], _header["default"], _link["default"], _blockquote["default"], _list["default"], _checkList["default"], _codeBlock["default"], _image["default"], _video["default"], _table["default"], _multiColumn["default"], _textStyle["default"], _textAlign["default"], _font["default"], _sdocLink["default"], _paragraph["default"], _fileLink["default"], _callout["default"], _searchReplace["default"], _quickInsert["default"], _group["default"], _whiteboard["default"], _fileView["default"], _formula["default"], _toggleHeader["default"], _embedLink["default"]];
|
|
219
|
+
var Plugins = [_markdown["default"], _html["default"], _header["default"], _link["default"], _blockquote["default"], _list["default"], _checkList["default"], _codeBlock["default"], _image["default"], _video["default"], _table["default"], _multiColumn["default"], _textStyle["default"], _textAlign["default"], _font["default"], _sdocLink["default"], _paragraph["default"], _fileLink["default"], _callout["default"], _searchReplace["default"], _quickInsert["default"], _group["default"], _whiteboard["default"], _fileView["default"], _formula["default"], _toggleHeader["default"], _embedLink["default"], _divider["default"]];
|
|
213
220
|
var WikiPlugins = exports.WikiPlugins = [].concat(Plugins, [_wikiLink["default"], _fileView["default"]]);
|
|
214
221
|
var CommentPlugins = exports.CommentPlugins = [_markdown["default"], _html["default"], _paragraph["default"], _textStyle["default"], _list["default"], _image["default"], _link["default"], _mention["default"], _blockquote["default"]];
|
|
215
222
|
var _default = exports["default"] = Plugins;
|
|
@@ -278,6 +278,12 @@ var CustomRenderElement = function CustomRenderElement(props) {
|
|
|
278
278
|
renderFormula = _FormulaPlugin$render[0];
|
|
279
279
|
return renderFormula((0, _objectSpread2["default"])({}, props), editor);
|
|
280
280
|
}
|
|
281
|
+
case _elementType.DIVIDER:
|
|
282
|
+
{
|
|
283
|
+
var _DividerPlugin$render = (0, _slicedToArray2["default"])(_plugins.DividerPlugin.renderElements, 1),
|
|
284
|
+
renderDivider = _DividerPlugin$render[0];
|
|
285
|
+
return renderDivider(props, editor);
|
|
286
|
+
}
|
|
281
287
|
default:
|
|
282
288
|
{
|
|
283
289
|
var _ParagraphPlugin$rend3 = (0, _slicedToArray2["default"])(_plugins.ParagraphPlugin.renderElements, 1),
|
|
@@ -14,14 +14,15 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
14
14
|
var _tooltip = _interopRequireDefault(require("../../../../components/tooltip"));
|
|
15
15
|
var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
|
|
16
16
|
var _menu = _interopRequireDefault(require("../../../plugins/code-block/menu"));
|
|
17
|
-
var _menu2 = _interopRequireDefault(require("../../../plugins/
|
|
18
|
-
var _menu3 = _interopRequireDefault(require("../../../plugins/
|
|
19
|
-
var _menu4 = _interopRequireDefault(require("../../../plugins/
|
|
20
|
-
var _menu5 = _interopRequireDefault(require("../../../plugins/
|
|
21
|
-
var _menu6 = _interopRequireDefault(require("../../../plugins/
|
|
17
|
+
var _menu2 = _interopRequireDefault(require("../../../plugins/divider/menu"));
|
|
18
|
+
var _menu3 = _interopRequireDefault(require("../../../plugins/file-link/menu"));
|
|
19
|
+
var _menu4 = _interopRequireDefault(require("../../../plugins/formula/menu"));
|
|
20
|
+
var _menu5 = _interopRequireDefault(require("../../../plugins/image/menu"));
|
|
21
|
+
var _menu6 = _interopRequireDefault(require("../../../plugins/link/menu"));
|
|
22
|
+
var _menu7 = _interopRequireDefault(require("../../../plugins/sdoc-link/menu"));
|
|
22
23
|
var _tableMenu = _interopRequireDefault(require("../../../plugins/table/menu/table-menu"));
|
|
23
|
-
var
|
|
24
|
-
var
|
|
24
|
+
var _menu8 = _interopRequireDefault(require("../../../plugins/video/menu"));
|
|
25
|
+
var _menu9 = _interopRequireDefault(require("../../../plugins/whiteboard/menu"));
|
|
25
26
|
require("./index.css");
|
|
26
27
|
var InsertToolbar = function InsertToolbar(_ref) {
|
|
27
28
|
var _ref$isRichEditor = _ref.isRichEditor,
|
|
@@ -103,8 +104,10 @@ var InsertToolbar = function InsertToolbar(_ref) {
|
|
|
103
104
|
style: {
|
|
104
105
|
maxHeight: window.innerHeight - bottom - 100
|
|
105
106
|
}
|
|
106
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
107
|
+
}, /*#__PURE__*/_react["default"].createElement(_menu5["default"], props), /*#__PURE__*/_react["default"].createElement(_tableMenu["default"], props), /*#__PURE__*/_react["default"].createElement(_menu8["default"], props), /*#__PURE__*/_react["default"].createElement(_menu9["default"], props), /*#__PURE__*/_react["default"].createElement(_menu6["default"], props), /*#__PURE__*/_react["default"].createElement(_menu["default"], props), /*#__PURE__*/_react["default"].createElement(_menu4["default"], props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
107
108
|
className: "sdoc-dropdown-menu-divider"
|
|
108
|
-
}), /*#__PURE__*/_react["default"].createElement(
|
|
109
|
+
}), /*#__PURE__*/_react["default"].createElement(_menu2["default"], props), /*#__PURE__*/_react["default"].createElement("div", {
|
|
110
|
+
className: "sdoc-dropdown-menu-divider"
|
|
111
|
+
}), /*#__PURE__*/_react["default"].createElement(_menu7["default"], props), /*#__PURE__*/_react["default"].createElement(_menu3["default"], props))));
|
|
109
112
|
};
|
|
110
113
|
var _default = exports["default"] = InsertToolbar;
|
|
@@ -349,6 +349,9 @@ var getTopValue = exports.getTopValue = function getTopValue(editor, dom, contai
|
|
|
349
349
|
paddingTop = slateNode.type === _constants2.CHECK_LIST_ITEM ? 5 : paddingTop;
|
|
350
350
|
offsetY = lineHeight / 2 + paddingTop - disToolBarHeight / 2;
|
|
351
351
|
}
|
|
352
|
+
if (slateNode.type === _constants2.DIVIDER) {
|
|
353
|
+
offsetY = currentRect.height / 2 - disToolBarHeight / 2;
|
|
354
|
+
}
|
|
352
355
|
return top + offsetY - headerHeight;
|
|
353
356
|
};
|
|
354
357
|
var isNotSupportTransform = exports.isNotSupportTransform = function isNotSupportTransform(node) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.UNORDERED_LIST = exports.TOP_LEVEL_TYPES = exports.TABLE_ROW = exports.TABLE_CELL = exports.TABLE = exports.PARAGRAPH = exports.ORDERED_LIST = exports.LIST_ITEM = exports.LINK = exports.INLINE_LEVEL_TYPES = exports.IMAGE = exports.HEADER_TYPE_MAP = exports.HEADER_LIST = exports.HEADER6 = exports.HEADER5 = exports.HEADER4 = exports.HEADER3 = exports.HEADER2 = exports.HEADER1 = exports.HEADER = exports.FORMULA = exports.CODE_LINE = exports.CODE_BLOCK = exports.CHECK_LIST_ITEM = exports.BLOCKQUOTE = void 0;
|
|
6
|
+
exports.UNORDERED_LIST = exports.TOP_LEVEL_TYPES = exports.TABLE_ROW = exports.TABLE_CELL = exports.TABLE = exports.PARAGRAPH = exports.ORDERED_LIST = exports.LIST_ITEM = exports.LINK = exports.INLINE_LEVEL_TYPES = exports.IMAGE = exports.HEADER_TYPE_MAP = exports.HEADER_LIST = exports.HEADER6 = exports.HEADER5 = exports.HEADER4 = exports.HEADER3 = exports.HEADER2 = exports.HEADER1 = exports.HEADER = exports.FORMULA = exports.DIVIDER = exports.CODE_LINE = exports.CODE_BLOCK = exports.CHECK_LIST_ITEM = exports.BLOCKQUOTE = void 0;
|
|
7
7
|
var BLOCKQUOTE = exports.BLOCKQUOTE = 'blockquote';
|
|
8
8
|
var HEADER = exports.HEADER = 'header';
|
|
9
9
|
// each header type should be start with HEADER, all of justices should based on HEADER
|
|
@@ -26,7 +26,8 @@ var TABLE_CELL = exports.TABLE_CELL = 'table_cell';
|
|
|
26
26
|
var IMAGE = exports.IMAGE = 'image';
|
|
27
27
|
var LINK = exports.LINK = 'link';
|
|
28
28
|
var FORMULA = exports.FORMULA = 'formula';
|
|
29
|
-
var
|
|
29
|
+
var DIVIDER = exports.DIVIDER = 'divider';
|
|
30
|
+
var TOP_LEVEL_TYPES = exports.TOP_LEVEL_TYPES = [BLOCKQUOTE, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, ORDERED_LIST, UNORDERED_LIST, CHECK_LIST_ITEM, PARAGRAPH, CODE_BLOCK, TABLE, DIVIDER];
|
|
30
31
|
var INLINE_LEVEL_TYPES = exports.INLINE_LEVEL_TYPES = [IMAGE, LINK];
|
|
31
32
|
var HEADER_LIST = exports.HEADER_LIST = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];
|
|
32
33
|
var HEADER_TYPE_MAP = exports.HEADER_TYPE_MAP = {
|
|
@@ -0,0 +1,23 @@
|
|
|
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 _slugid = _interopRequireDefault(require("slugid"));
|
|
9
|
+
var _constants = require("../../../extension/constants");
|
|
10
|
+
var hrRule = function hrRule(element) {
|
|
11
|
+
if (element.nodeName === 'HR') {
|
|
12
|
+
return {
|
|
13
|
+
id: _slugid["default"].nice(),
|
|
14
|
+
type: _constants.DIVIDER,
|
|
15
|
+
children: [{
|
|
16
|
+
id: _slugid["default"].nice(),
|
|
17
|
+
text: ''
|
|
18
|
+
}]
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return;
|
|
22
|
+
};
|
|
23
|
+
var _default = exports["default"] = hrRule;
|
|
@@ -8,11 +8,12 @@ exports["default"] = void 0;
|
|
|
8
8
|
var _blockquote = _interopRequireDefault(require("./blockquote"));
|
|
9
9
|
var _codeBlock = _interopRequireDefault(require("./code-block"));
|
|
10
10
|
var _header = _interopRequireDefault(require("./header"));
|
|
11
|
+
var _hr = _interopRequireDefault(require("./hr"));
|
|
11
12
|
var _image = _interopRequireDefault(require("./image"));
|
|
12
13
|
var _link = _interopRequireDefault(require("./link"));
|
|
13
14
|
var _list = _interopRequireDefault(require("./list"));
|
|
14
15
|
var _paragraph = _interopRequireDefault(require("./paragraph"));
|
|
15
16
|
var _table = _interopRequireDefault(require("./table"));
|
|
16
17
|
var _text = _interopRequireDefault(require("./text"));
|
|
17
|
-
var rules = [_blockquote["default"], _codeBlock["default"], _header["default"], _image["default"], _link["default"], _list["default"], _table["default"], _paragraph["default"], _text["default"]];
|
|
18
|
+
var rules = [_blockquote["default"], _codeBlock["default"], _header["default"], _image["default"], _link["default"], _list["default"], _hr["default"], _table["default"], _paragraph["default"], _text["default"]];
|
|
18
19
|
var _default = exports["default"] = rules;
|
|
@@ -299,7 +299,7 @@ var transformCodeBlock = exports.transformCodeBlock = function transformCodeBloc
|
|
|
299
299
|
var transformHr = exports.transformHr = function transformHr(node) {
|
|
300
300
|
return {
|
|
301
301
|
id: _slugid["default"].nice(),
|
|
302
|
-
type:
|
|
302
|
+
type: _elementType.DIVIDER,
|
|
303
303
|
children: [(0, _core.generateDefaultText)()]
|
|
304
304
|
};
|
|
305
305
|
};
|
|
@@ -318,6 +318,11 @@ var transformImageBlock = function transformImageBlock(node) {
|
|
|
318
318
|
children: transformNodeWithInlineChildren(node)
|
|
319
319
|
};
|
|
320
320
|
};
|
|
321
|
+
var transformDivider = function transformDivider() {
|
|
322
|
+
return {
|
|
323
|
+
type: 'thematicBreak'
|
|
324
|
+
};
|
|
325
|
+
};
|
|
321
326
|
var elementHandlers = {
|
|
322
327
|
'paragraph': transformParagraph,
|
|
323
328
|
'header1': transformHeader,
|
|
@@ -334,7 +339,8 @@ var elementHandlers = {
|
|
|
334
339
|
'code_block': transformCodeBlock,
|
|
335
340
|
'formula': transformFormula,
|
|
336
341
|
'mention': transformMention,
|
|
337
|
-
'image_block': transformImageBlock
|
|
342
|
+
'image_block': transformImageBlock,
|
|
343
|
+
'divider': transformDivider
|
|
338
344
|
};
|
|
339
345
|
var formatSlateToMd = exports.formatSlateToMd = function formatSlateToMd(children) {
|
|
340
346
|
var validChildren = children.filter(function (child) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/sdoc-editor",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.131",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "jest",
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"publishConfig": {
|
|
73
73
|
"access": "public"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "54650092847c7bca405447086d738b39d5f0c895"
|
|
76
76
|
}
|