@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.
Files changed (26) hide show
  1. package/dist/extension/constants/element-type.js +3 -2
  2. package/dist/extension/constants/index.js +16 -3
  3. package/dist/extension/constants/menus-config.js +5 -1
  4. package/dist/extension/core/queries/index.js +5 -1
  5. package/dist/extension/plugins/divider/helper.js +22 -0
  6. package/dist/extension/plugins/divider/index.js +17 -0
  7. package/dist/extension/plugins/divider/menu/index.js +31 -0
  8. package/dist/extension/plugins/divider/plugin.js +90 -0
  9. package/dist/extension/plugins/divider/render-elem/index.css +19 -0
  10. package/dist/extension/plugins/divider/render-elem/index.js +28 -0
  11. package/dist/extension/plugins/embed-link/constants.js +5 -2
  12. package/dist/extension/plugins/embed-link/helper.js +12 -1
  13. package/dist/extension/plugins/embed-link/index.css +6 -2
  14. package/dist/extension/plugins/embed-link/render-elem.js +97 -2
  15. package/dist/extension/plugins/html/rules/hr.js +21 -0
  16. package/dist/extension/plugins/html/rules/index.js +2 -1
  17. package/dist/extension/plugins/index.js +8 -1
  18. package/dist/extension/render/custom-element.js +6 -0
  19. package/dist/extension/toolbar/header-toolbar/insert-toolbar/index.js +12 -9
  20. package/dist/extension/toolbar/side-toolbar/helpers.js +3 -0
  21. package/dist/slate-convert/html-to-slate/constants.js +3 -2
  22. package/dist/slate-convert/html-to-slate/rules/hr.js +23 -0
  23. package/dist/slate-convert/html-to-slate/rules/index.js +2 -1
  24. package/dist/slate-convert/md-to-slate/transform.js +1 -1
  25. package/dist/slate-convert/slate-to-md/transform.js +7 -1
  26. 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
- exports.FILEEXT_TYPE_MAP = exports.FILEEXT_TYPE = exports.ELEMENT_TYPE = void 0;
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.removeEventListener('scroll', handleScroll);
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/file-link/menu"));
18
- var _menu3 = _interopRequireDefault(require("../../../plugins/formula/menu"));
19
- var _menu4 = _interopRequireDefault(require("../../../plugins/image/menu"));
20
- var _menu5 = _interopRequireDefault(require("../../../plugins/link/menu"));
21
- var _menu6 = _interopRequireDefault(require("../../../plugins/sdoc-link/menu"));
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 _menu7 = _interopRequireDefault(require("../../../plugins/video/menu"));
24
- var _menu8 = _interopRequireDefault(require("../../../plugins/whiteboard/menu"));
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(_menu4["default"], props), /*#__PURE__*/_react["default"].createElement(_tableMenu["default"], props), /*#__PURE__*/_react["default"].createElement(_menu7["default"], props), /*#__PURE__*/_react["default"].createElement(_menu8["default"], props), /*#__PURE__*/_react["default"].createElement(_menu5["default"], props), /*#__PURE__*/_react["default"].createElement(_menu["default"], props), /*#__PURE__*/_react["default"].createElement(_menu3["default"], props), /*#__PURE__*/_react["default"].createElement("div", {
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(_menu6["default"], props), /*#__PURE__*/_react["default"].createElement(_menu2["default"], props))));
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 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];
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: 'hr',
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.129",
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": "b4665182bf3f9933095999b4e893fc7ab68078e4"
75
+ "gitHead": "54650092847c7bca405447086d738b39d5f0c895"
76
76
  }