@seafile/seafile-editor 0.4.2 → 0.4.3

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 (30) hide show
  1. package/dist/assets/css/new-editor-toolbar.css +52 -0
  2. package/dist/assets/css/new-editor.css +33 -3
  3. package/dist/new-editors/editor.js +7 -11
  4. package/dist/slate-extension/constants/index.js +13 -2
  5. package/dist/slate-extension/menu/index.js +1 -0
  6. package/dist/slate-extension/menu/menu-group.js +3 -0
  7. package/dist/slate-extension/menu/menu-item.js +1 -1
  8. package/dist/slate-extension/menu/menu.css +34 -0
  9. package/dist/slate-extension/plugins/blockquote/helpers.js +49 -0
  10. package/dist/slate-extension/plugins/blockquote/menu/index.js +7 -36
  11. package/dist/slate-extension/plugins/blockquote/plugin.js +1 -1
  12. package/dist/slate-extension/plugins/check-list/helpers.js +44 -0
  13. package/dist/slate-extension/plugins/check-list/menu/index.js +56 -0
  14. package/dist/slate-extension/plugins/check-list/model.js +12 -0
  15. package/dist/slate-extension/plugins/check-list/plugin.js +27 -3
  16. package/dist/slate-extension/plugins/check-list/render-elem.js +2 -4
  17. package/dist/slate-extension/plugins/header/helpers.js +40 -0
  18. package/dist/slate-extension/plugins/header/menu/index.js +115 -0
  19. package/dist/slate-extension/plugins/header/render-elem.js +3 -1
  20. package/dist/slate-extension/plugins/list/helpers.js +43 -0
  21. package/dist/slate-extension/plugins/list/index.js +1 -1
  22. package/dist/slate-extension/plugins/list/menu/index.js +5 -40
  23. package/dist/slate-extension/plugins/list/{with-list.js → plugin/index.js} +3 -3
  24. package/dist/slate-extension/plugins/list/transforms/index.js +2 -1
  25. package/dist/slate-extension/plugins/list/{plugin → transforms}/toggle-list.js +1 -1
  26. package/dist/slate-extension/render/render-element.js +9 -2
  27. package/dist/slate-extension/toolbar/index.js +11 -6
  28. package/package.json +1 -1
  29. package/public/media/seafile-ui.css +6 -11166
  30. package/dist/slate-extension/plugins/check-list/helper.js +0 -8
@@ -0,0 +1,52 @@
1
+ .header-menu {
2
+ display: flex;
3
+ height: 30px;
4
+ width: 140px;
5
+ padding: 5px;
6
+ box-sizing: border-box;
7
+ border-right: 1px solid #e5e5e5;
8
+ border-left: 1px solid #e5e5e5;
9
+ position: relative;
10
+ }
11
+
12
+ .header-menu .header-toggle {
13
+ flex: 1;
14
+ display: flex;
15
+ justify-content: space-between;
16
+ align-items: center;
17
+ }
18
+
19
+ .header-menu .header-toggle .iconfont {
20
+ width: 30px;
21
+ height: 30px;
22
+ display: inline-flex;
23
+ justify-content: center;
24
+ align-items: center;
25
+ font-size: 13px;
26
+ transform: scale(.8);
27
+ cursor: pointer;
28
+ }
29
+
30
+ .header-menu .header-popover {
31
+ position: absolute;
32
+ top: 32px;
33
+ left: 5px;
34
+ padding: 8px 0;
35
+ display: flex;
36
+ flex-direction: column;
37
+ align-items: flex-start;
38
+ z-index: 10;
39
+ background-color: #fff;
40
+ }
41
+
42
+ .header-menu .header-popover .header-menu-item {
43
+ cursor: pointer;
44
+ height: 30px;
45
+ width: 100%;
46
+ padding: 4px 24px;
47
+ user-select: none;
48
+ }
49
+
50
+ .header-menu .header-popover .header-menu-item:hover {
51
+ background-color: rgb(245, 245, 245);
52
+ }
@@ -3,7 +3,37 @@
3
3
  padding-inline-start: 24px;
4
4
  }
5
5
 
6
- .editor-container div[data-slate-editor='true'] {
7
- min-width: 980px;
6
+ .sf-editor-container {
7
+ flex: 1;
8
+ display: flex;
9
+ flex-direction: column;
8
10
  background: #f0f0f0;
9
- }
11
+ min-height: 0;
12
+ }
13
+
14
+ .sf-editor-container .sf-editor-toolbar {
15
+ display: flex;
16
+ justify-content: center;
17
+ height: 39px;
18
+ align-items: center;
19
+ padding: 0 10px;
20
+ background-color: #fcfcfc;
21
+ user-select: none;
22
+ border-bottom: 1px solid #e5e5e5;
23
+ box-shadow: 0 3px 2px -2px rgb(200 200 200 / 15%)
24
+ }
25
+
26
+ .sf-editor-container .sf-editor-content {
27
+ flex: 1;
28
+ height: 100%;
29
+ overflow: auto;
30
+ }
31
+
32
+ .sf-editor-container .sf-editor-content .editor-article {
33
+ max-width: 950px;
34
+ min-height: calc(100% - 40px);
35
+ margin: 20px auto;
36
+ padding: 40px 60px;
37
+ background-color: #fff;
38
+ border: 1px solid rgb(230,230,221);
39
+ }
@@ -21,13 +21,6 @@ var NewEditor = /*#__PURE__*/function (_React$Component) {
21
21
  });
22
22
  onValueChanged && onValueChanged(slateValue);
23
23
  };
24
- _this.getStyle = function () {
25
- return {
26
- with: 980,
27
- height: '100%',
28
- margin: '0 auto'
29
- };
30
- };
31
24
  _this.state = {
32
25
  slateValue: props.value,
33
26
  isLoading: true
@@ -51,14 +44,17 @@ var NewEditor = /*#__PURE__*/function (_React$Component) {
51
44
  var _this2 = this;
52
45
  var slateValue = this.state.slateValue;
53
46
  return /*#__PURE__*/React.createElement("div", {
54
- className: "editor-container",
55
- style: this.getStyle()
47
+ className: "sf-editor-container"
56
48
  }, /*#__PURE__*/React.createElement(Toolbar, {
57
49
  editor: this.editor
58
- }), /*#__PURE__*/React.createElement(Slate, {
50
+ }), /*#__PURE__*/React.createElement("div", {
51
+ className: "sf-editor-content"
52
+ }, /*#__PURE__*/React.createElement(Slate, {
59
53
  editor: this.editor,
60
54
  value: slateValue,
61
55
  onChange: this.onChange
56
+ }, /*#__PURE__*/React.createElement("div", {
57
+ className: "editor-article"
62
58
  }, /*#__PURE__*/React.createElement(Editable, {
63
59
  placeholder: "Enter some text...",
64
60
  renderElement: function renderElement(props) {
@@ -73,7 +69,7 @@ var NewEditor = /*#__PURE__*/function (_React$Component) {
73
69
  editor.handleTab && editor.handleTab(event);
74
70
  }
75
71
  }
76
- })));
72
+ })))));
77
73
  }
78
74
  }]);
79
75
  return NewEditor;
@@ -1,9 +1,15 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- var _MENUS_CONFIG_MAP;
2
+ var _MENUS_CONFIG_MAP, _HEADER_TITLE_MAP;
3
3
  // extension plugin
4
4
  export var BLOCKQUOTE = 'blockquote';
5
5
  export var BLOB = 'blob';
6
6
  export var HEADER = 'header';
7
+ export var HEADER1 = 'header1';
8
+ export var HEADER2 = 'header2';
9
+ export var HEADER3 = 'header3';
10
+ export var HEADER4 = 'header4';
11
+ export var HEADER5 = 'header5';
12
+ export var HEADER6 = 'header6';
7
13
  export var ORDERED_LIST = 'ordered_list';
8
14
  export var UNORDERED_LIST = 'unordered_list'; // unordered_list can not work
9
15
  export var LIST_ITEM = 'list-item';
@@ -35,4 +41,9 @@ export var MENUS_CONFIG_MAP = (_MENUS_CONFIG_MAP = {}, _defineProperty(_MENUS_CO
35
41
  id: UNORDERED_LIST,
36
42
  iconClass: 'iconfont icon-list-ul',
37
43
  text: 'unordered_list'
38
- }), _MENUS_CONFIG_MAP);
44
+ }), _defineProperty(_MENUS_CONFIG_MAP, CHECK_LIST, {
45
+ id: CHECK_LIST,
46
+ iconClass: 'iconfont icon-check-square',
47
+ text: 'check_list_item'
48
+ }), _MENUS_CONFIG_MAP);
49
+ export var HEADER_TITLE_MAP = (_HEADER_TITLE_MAP = {}, _defineProperty(_HEADER_TITLE_MAP, HEADER1, 'header_1'), _defineProperty(_HEADER_TITLE_MAP, HEADER2, 'header_2'), _defineProperty(_HEADER_TITLE_MAP, HEADER3, 'header_3'), _defineProperty(_HEADER_TITLE_MAP, HEADER4, 'header_4'), _defineProperty(_HEADER_TITLE_MAP, HEADER5, 'header_5'), _defineProperty(_HEADER_TITLE_MAP, HEADER6, 'header_6'), _defineProperty(_HEADER_TITLE_MAP, PARAGRAPH, 'pargraph'), _HEADER_TITLE_MAP);
@@ -1,3 +1,4 @@
1
1
  import MenuGroup from './menu-group';
2
2
  import MenuItem from './menu-item';
3
+ import './menu.css';
3
4
  export { MenuGroup, MenuItem };
@@ -21,4 +21,7 @@ var MenuGroup = /*#__PURE__*/function (_React$PureComponent) {
21
21
  }]);
22
22
  return MenuGroup;
23
23
  }(React.PureComponent);
24
+ MenuGroup.defaultProps = {
25
+ className: 'menu-group'
26
+ };
24
27
  export default MenuGroup;
@@ -76,6 +76,6 @@ var MenuItem = /*#__PURE__*/function (_React$Component) {
76
76
  }(React.Component);
77
77
  MenuItem.defaultProps = {
78
78
  isRichEditor: true,
79
- className: ''
79
+ className: 'menu-group-item'
80
80
  };
81
81
  export default MenuItem;
@@ -0,0 +1,34 @@
1
+ .menu-group {
2
+ height: 100%;
3
+ padding: 5px 0 5px 5px;
4
+ font-size: 0.75rem;
5
+ border-right: 1px solid #e5e5e5;
6
+ color: #555555;
7
+ }
8
+
9
+ .menu-group .menu-group-item {
10
+ width: 30px;
11
+ height: 100%;
12
+ margin-right: 10px;
13
+ border: 1px solid transparent;
14
+ line-height: 30px;
15
+ color: #555555;
16
+ background-color: #fcfcfc;
17
+ }
18
+
19
+ .menu-group .menu-group-item:disabled {
20
+ color: #999;
21
+ }
22
+
23
+ .menu-group .menu-group-item:hover {
24
+ background-color: #e5e5e5;
25
+ border-radius: 2px;
26
+ }
27
+
28
+ .menu-group .menu-group-item[data-active='true'] {
29
+ color: #eb8205;
30
+ }
31
+
32
+ .menu-group .menu-group-item .iconfont {
33
+ font-size: 13px;
34
+ }
@@ -0,0 +1,49 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import { Editor, Transforms } from "slate";
3
+ import { BLOCKQUOTE } from "../../constants";
4
+ import { getNodeType } from "../../core";
5
+ export var isMenuDisabled = function isMenuDisabled(editor) {
6
+ if (editor.selection == null) return true;
7
+ var _Editor$nodes = Editor.nodes(editor, {
8
+ match: function match(n) {
9
+ var type = getNodeType(n);
10
+
11
+ // 只可用于 p 和 blockquote
12
+ if (type === 'paragraph') return true;
13
+ if (type === 'blockquote') return true;
14
+ return false;
15
+ },
16
+ universal: true,
17
+ mode: 'highest' // 匹配最高层级
18
+ }),
19
+ _Editor$nodes2 = _slicedToArray(_Editor$nodes, 1),
20
+ nodeEntry = _Editor$nodes2[0];
21
+
22
+ // 匹配到 p blockquote ,不禁用
23
+ if (nodeEntry) {
24
+ return false;
25
+ }
26
+ // 未匹配到,则禁用
27
+ return true;
28
+ };
29
+ export var getBlockQuoteType = function getBlockQuoteType(editor) {
30
+ var _Editor$nodes3 = Editor.nodes(editor, {
31
+ match: function match(n) {
32
+ return getNodeType(n) === BLOCKQUOTE;
33
+ },
34
+ universal: true
35
+ }),
36
+ _Editor$nodes4 = _slicedToArray(_Editor$nodes3, 1),
37
+ match = _Editor$nodes4[0];
38
+ if (!match) return 'paragraph';
39
+ var _match = _slicedToArray(match, 1),
40
+ n = _match[0];
41
+ return getNodeType(n);
42
+ };
43
+ export var setBlockQuoteType = function setBlockQuoteType(editor, type) {
44
+ Transforms.setNodes(editor, {
45
+ type: type
46
+ }, {
47
+ mode: 'highest'
48
+ });
49
+ };
@@ -1,14 +1,12 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
2
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
4
3
  import _createClass from "@babel/runtime/helpers/esm/createClass";
5
4
  import _inherits from "@babel/runtime/helpers/esm/inherits";
6
5
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
7
6
  import React from 'react';
8
- import { Editor, Transforms } from 'slate';
9
- import { BLOCKQUOTE, MENUS_CONFIG_MAP } from '../../../constants';
10
- import { getNodeType, getSelectedNodeByType } from '../../../core';
7
+ import { BLOCKQUOTE, MENUS_CONFIG_MAP, PARAGRAPH } from '../../../constants';
11
8
  import { MenuItem } from '../../../menu/';
9
+ import { getBlockQuoteType, isMenuDisabled, setBlockQuoteType } from '../helpers';
12
10
  var QuoteMenu = /*#__PURE__*/function (_React$Component) {
13
11
  _inherits(QuoteMenu, _React$Component);
14
12
  var _super = _createSuper(QuoteMenu);
@@ -21,45 +19,18 @@ var QuoteMenu = /*#__PURE__*/function (_React$Component) {
21
19
  _this = _super.call.apply(_super, [this].concat(args));
22
20
  _this.isActive = function () {
23
21
  var editor = _this.props.editor;
24
- var node = getSelectedNodeByType(editor, BLOCKQUOTE);
25
- return !!node;
22
+ return getBlockQuoteType(editor) === BLOCKQUOTE;
26
23
  };
27
24
  _this.isDisabled = function () {
28
25
  var editor = _this.props.editor;
29
- if (editor.selection == null) return true;
30
- var _Editor$nodes = Editor.nodes(editor, {
31
- match: function match(n) {
32
- var type = getNodeType(n);
33
-
34
- // 只可用于 p 和 blockquote
35
- if (type === 'paragraph') return true;
36
- if (type === 'blockquote') return true;
37
- return false;
38
- },
39
- universal: true,
40
- mode: 'highest' // 匹配最高层级
41
- }),
42
- _Editor$nodes2 = _slicedToArray(_Editor$nodes, 1),
43
- nodeEntry = _Editor$nodes2[0];
44
-
45
- // 匹配到 p blockquote ,不禁用
46
- if (nodeEntry) {
47
- return false;
48
- }
49
- // 未匹配到,则禁用
50
- return true;
26
+ return isMenuDisabled(editor);
51
27
  };
52
28
  _this.onMouseDown = function () {
53
29
  var editor = _this.props.editor;
54
30
  var active = _this.isActive(editor);
55
- var newType = active ? 'paragraph' : 'blockquote';
56
-
57
- // 执行命令
58
- Transforms.setNodes(editor, {
59
- type: newType
60
- }, {
61
- mode: 'highest'
62
- });
31
+ var newType = active ? PARAGRAPH : BLOCKQUOTE;
32
+ console.log(newType);
33
+ setBlockQuoteType(editor, newType);
63
34
  };
64
35
  return _this;
65
36
  }
@@ -1,5 +1,5 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
- import { Editor, Element, Point, Transforms } from 'slate';
2
+ import { Editor, Element, Point, Transforms, Node } from 'slate';
3
3
  import { ReactEditor } from 'slate-react';
4
4
  import { BLOCKQUOTE } from '../../constants';
5
5
  var withBlockquote = function withBlockquote(editor) {
@@ -0,0 +1,44 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
3
+ import { Transforms, Editor, Element } from 'slate';
4
+ import { CHECK_LIST_ITEM, PARAGRAPH } from '../../constants';
5
+ import { getSelectedNodeByType } from '../../core';
6
+ export var isMenuDisabled = function isMenuDisabled(editor) {
7
+ if (editor.selection == null) return true;
8
+ var selectedElements = [];
9
+ var nodeEntries = Editor.nodes(editor, {
10
+ universal: true
11
+ });
12
+ var _iterator = _createForOfIteratorHelper(nodeEntries),
13
+ _step;
14
+ try {
15
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
16
+ var nodeEntry = _step.value;
17
+ var _nodeEntry = _slicedToArray(nodeEntry, 1),
18
+ node = _nodeEntry[0];
19
+ if (Element.isElement(node)) selectedElements.push(node);
20
+ }
21
+ } catch (err) {
22
+ _iterator.e(err);
23
+ } finally {
24
+ _iterator.f();
25
+ }
26
+ var notMatch = selectedElements.some(function (element) {
27
+ if (Editor.isVoid(editor, element) && Editor.isBlock(editor, element)) return true;
28
+ var type = element.type;
29
+ if (['pre', 'code', 'list-item'].includes(type)) return true;
30
+ return false;
31
+ });
32
+ if (notMatch) return true;
33
+ return false;
34
+ };
35
+ export var getCheckListItemType = function getCheckListItemType(editor) {
36
+ var node = getSelectedNodeByType(editor, CHECK_LIST_ITEM);
37
+ if (!node) return PARAGRAPH;
38
+ return node.type;
39
+ };
40
+ export var setCheckListItemType = function setCheckListItemType(editor, newType) {
41
+ Transforms.setNodes(editor, {
42
+ type: newType
43
+ });
44
+ };
@@ -0,0 +1,56 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
5
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
6
+ import React from 'react';
7
+ import { CHECK_LIST, CHECK_LIST_ITEM, MENUS_CONFIG_MAP, PARAGRAPH } from '../../../constants';
8
+ import { MenuItem } from '../../../menu';
9
+ import { isMenuDisabled, setCheckListItemType, getCheckListItemType } from '../helpers';
10
+ var CheckListMenu = /*#__PURE__*/function (_React$Component) {
11
+ _inherits(CheckListMenu, _React$Component);
12
+ var _super = _createSuper(CheckListMenu);
13
+ function CheckListMenu() {
14
+ var _this;
15
+ _classCallCheck(this, CheckListMenu);
16
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
17
+ args[_key] = arguments[_key];
18
+ }
19
+ _this = _super.call.apply(_super, [this].concat(args));
20
+ _this.isActive = function () {
21
+ var editor = _this.props.editor;
22
+ return getCheckListItemType(editor) === CHECK_LIST_ITEM;
23
+ };
24
+ _this.isDisabled = function () {
25
+ var editor = _this.props.editor;
26
+ return isMenuDisabled(editor);
27
+ };
28
+ _this.onMouseDown = function () {
29
+ var editor = _this.props.editor;
30
+ var active = _this.isActive(editor);
31
+ var newType = active ? PARAGRAPH : CHECK_LIST_ITEM;
32
+ setCheckListItemType(editor, newType);
33
+ };
34
+ return _this;
35
+ }
36
+ _createClass(CheckListMenu, [{
37
+ key: "render",
38
+ value: function render() {
39
+ var _this$props = this.props,
40
+ isRichEditor = _this$props.isRichEditor,
41
+ className = _this$props.className;
42
+ var menuConfig = MENUS_CONFIG_MAP[CHECK_LIST];
43
+ var props = _objectSpread(_objectSpread({
44
+ isRichEditor: isRichEditor,
45
+ className: className
46
+ }, menuConfig), {}, {
47
+ disabled: this.isDisabled(),
48
+ isActive: this.isActive(),
49
+ onMouseDown: this.onMouseDown
50
+ });
51
+ return /*#__PURE__*/React.createElement(MenuItem, props);
52
+ }
53
+ }]);
54
+ return CheckListMenu;
55
+ }(React.Component);
56
+ export default CheckListMenu;
@@ -0,0 +1,12 @@
1
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import { CHECK_LIST_ITEM } from '../../constants';
4
+ var CheckListItem = /*#__PURE__*/_createClass(function CheckListItem(options) {
5
+ _classCallCheck(this, CheckListItem);
6
+ this.type = options.type || CHECK_LIST_ITEM;
7
+ this.checked = options.checked || false;
8
+ this.children = options.children || [{
9
+ text: ''
10
+ }];
11
+ });
12
+ export default CheckListItem;
@@ -1,17 +1,41 @@
1
1
  import { Node, Range, Transforms } from 'slate';
2
+ import { CHECK_LIST_ITEM, PARAGRAPH } from '../../constants';
2
3
  import { getSelectedNodeByType } from '../../core';
3
4
  var withCheckList = function withCheckList(editor) {
4
- var deleteBackWord = editor.deleteBackWord;
5
+ var insertBreak = editor.insertBreak,
6
+ deleteBackWord = editor.deleteBackWord;
5
7
  var newEditor = editor;
8
+ newEditor.insertBreak = function () {
9
+ var selection = newEditor.selection;
10
+ if (!selection) {
11
+ insertBreak();
12
+ return;
13
+ }
14
+ var node = getSelectedNodeByType(editor, CHECK_LIST_ITEM);
15
+ if (!node) {
16
+ insertBreak();
17
+ return;
18
+ }
19
+ if (Node.string(node).length === 0) {
20
+ Transforms.setNodes(editor, {
21
+ type: PARAGRAPH
22
+ }, {
23
+ mode: 'highest'
24
+ });
25
+ return;
26
+ }
27
+ insertBreak();
28
+ return;
29
+ };
6
30
  newEditor.deleteBackWord = function (unit) {
7
31
  var selection = newEditor.selection;
8
32
  if (selection && Range.isCollapsed(selection)) {
9
- var selectedTodo = getSelectedNodeByType(editor, 'check-list');
33
+ var selectedTodo = getSelectedNodeByType(editor, CHECK_LIST_ITEM);
10
34
  if (selectedTodo) {
11
35
  // 当前 todo 已经没有文字,则转换为 paragraph
12
36
  if (Node.string(selectedTodo).length === 0) {
13
37
  Transforms.setNodes(editor, {
14
- type: 'paragraph'
38
+ type: PARAGRAPH
15
39
  }, {
16
40
  mode: 'highest'
17
41
  });
@@ -30,9 +30,7 @@ var CheckListItem = /*#__PURE__*/function (_React$PureComponent) {
30
30
  element = _this$props.element;
31
31
  var path = ReactEditor.findPath(editor, element);
32
32
  Transforms.setNodes(editor, {
33
- data: {
34
- checked: checked
35
- }
33
+ checked: checked
36
34
  }, {
37
35
  at: path
38
36
  });
@@ -47,7 +45,7 @@ var CheckListItem = /*#__PURE__*/function (_React$PureComponent) {
47
45
  children = _this$props2.children,
48
46
  style = _this$props2.style,
49
47
  node = _this$props2.element;
50
- var _ref = (node === null || node === void 0 ? void 0 : node.data) || {},
48
+ var _ref = node || {},
51
49
  _ref$checked = _ref.checked,
52
50
  checked = _ref$checked === void 0 ? false : _ref$checked;
53
51
  return /*#__PURE__*/React.createElement("div", Object.assign({}, attributes, {
@@ -0,0 +1,40 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import { Editor, Transforms } from "slate";
3
+ import { getNodeType } from "../../core";
4
+ export var isMenuDisabled = function isMenuDisabled(editor) {
5
+ if (!editor.selection) return true;
6
+ var _Editor$nodes = Editor.nodes(editor, {
7
+ match: function match(n) {
8
+ var type = getNodeType(n);
9
+ if (type === 'paragraph') return true;
10
+ if (type.startsWith('header')) return true;
11
+ return false;
12
+ },
13
+ universal: true,
14
+ mode: 'highest'
15
+ }),
16
+ _Editor$nodes2 = _slicedToArray(_Editor$nodes, 1),
17
+ nodeEntry = _Editor$nodes2[0];
18
+ if (nodeEntry) return false;
19
+ return true;
20
+ };
21
+ export var getHeaderType = function getHeaderType(editor) {
22
+ var _Editor$nodes3 = Editor.nodes(editor, {
23
+ match: function match(n) {
24
+ return getNodeType(n).includes('header');
25
+ },
26
+ universal: true
27
+ }),
28
+ _Editor$nodes4 = _slicedToArray(_Editor$nodes3, 1),
29
+ match = _Editor$nodes4[0];
30
+ if (!match) return 'paragraph';
31
+ var _match = _slicedToArray(match, 1),
32
+ n = _match[0];
33
+ return getNodeType(n);
34
+ };
35
+ export var setHeaderType = function setHeaderType(editor, type) {
36
+ if (!type) return;
37
+ Transforms.setNodes(editor, {
38
+ type: type
39
+ });
40
+ };