@seafile/sdoc-editor 2.0.166 → 2.0.167

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.
@@ -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.setHeaderType = exports.isSelectionInHeader = exports.isNextChildIsImage = exports.isMenuDisabled = exports.getHeaderType = void 0;
7
+ exports.setHeaderType = exports.isSelectionInHeader = exports.isMenuDisabled = exports.isHasImage = exports.getHeaderType = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
9
9
  var _slate = require("@seafile/slate");
10
10
  var _constants = require("../../constants");
@@ -72,21 +72,9 @@ var setHeaderType = exports.setHeaderType = function setHeaderType(editor, type)
72
72
  type: type
73
73
  });
74
74
  };
75
- var isNextChildIsImage = exports.isNextChildIsImage = function isNextChildIsImage(editor, headerNode) {
76
- var selection = editor.selection;
77
- var children = headerNode.children;
78
- if (children.length === 1) return false;
79
- var _selection$anchor = selection.anchor,
80
- path = _selection$anchor.path,
81
- offset = _selection$anchor.offset;
82
- var _path$slice = path.slice(-1),
83
- _path$slice2 = (0, _slicedToArray2["default"])(_path$slice, 1),
84
- nodeIndex = _path$slice2[0];
85
- if (nodeIndex + 1 > children.length) return false;
86
- var beforeText = children[nodeIndex].text ? children[nodeIndex].text : '';
87
- if (beforeText.length === 0) return false;
88
- if (beforeText.length !== offset) return false;
89
- var nextNode = children[nodeIndex + 1];
90
- if (nextNode.type === 'image' && _slate.Node.string(headerNode).length === offset) return true;
91
- return false;
75
+ var isHasImage = exports.isHasImage = function isHasImage(node) {
76
+ return node.children.some(function (item) {
77
+ if (item.type === 'image') return true;
78
+ return false;
79
+ });
92
80
  };
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports["default"] = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
8
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
9
10
  var _slate = require("@seafile/slate");
10
11
  var _isHotkey = _interopRequireDefault(require("is-hotkey"));
@@ -24,7 +25,8 @@ var withHeader = function withHeader(editor) {
24
25
  var insertBreak = editor.insertBreak,
25
26
  insertFragment = editor.insertFragment,
26
27
  insertText = editor.insertText,
27
- deleteBackward = editor.deleteBackward;
28
+ deleteBackward = editor.deleteBackward,
29
+ normalizeNode = editor.normalizeNode;
28
30
  var newEditor = editor;
29
31
 
30
32
  // Utility function to check if selection is inside multi-column node
@@ -57,10 +59,10 @@ var withHeader = function withHeader(editor) {
57
59
  if ((0, _core.isCursorAtBlockStart)(newEditor)) {
58
60
  var _match = (0, _slicedToArray2["default"])(match, 2),
59
61
  currentNode = _match[0],
60
- _path = _match[1];
62
+ path = _match[1];
61
63
  var newNode = (0, _core.generateEmptyElement)(currentNode.type);
62
64
  _slate.Transforms.insertNodes(editor, newNode, {
63
- at: _path
65
+ at: path
64
66
  });
65
67
  return;
66
68
  }
@@ -68,25 +70,12 @@ var withHeader = function withHeader(editor) {
68
70
  var nextNode = _slate.Editor.next(editor, {
69
71
  at: match[1]
70
72
  });
71
- var _match2 = (0, _slicedToArray2["default"])(match, 2),
72
- headerNode = _match2[0],
73
- path = _match2[1];
74
- if ((0, _helpers2.isNextChildIsImage)(editor, headerNode)) {
75
- insertBreak();
76
- var nextPath = _slate.Path.next(path);
77
- _slate.Transforms.setNodes(editor, {
78
- type: _constants.PARAGRAPH
79
- }, {
80
- at: nextPath
81
- });
82
- return;
83
- }
84
73
  if (isAtLineEnd && nextNode && editor.children.length === 2) {
85
74
  var _nextNode = (0, _slicedToArray2["default"])(nextNode, 2),
86
75
  node = _nextNode[0],
87
- _path2 = _nextNode[1];
76
+ _path = _nextNode[1];
88
77
  if (node && node.children[0].text === '') {
89
- _slate.Transforms.select(editor, _path2);
78
+ _slate.Transforms.select(editor, _path);
90
79
  return;
91
80
  }
92
81
  }
@@ -151,6 +140,40 @@ var withHeader = function withHeader(editor) {
151
140
  (0, _helpers2.setHeaderType)(newEditor, headerType);
152
141
  return true;
153
142
  };
143
+ newEditor.normalizeNode = function (_ref) {
144
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
145
+ node = _ref2[0],
146
+ path = _ref2[1];
147
+ var type = (0, _core.getNodeType)(node);
148
+ if (_constants.HEADERS.includes(type) && (0, _helpers2.isHasImage)(node)) {
149
+ var imagePaths = [];
150
+ var imageNodes = [];
151
+ node.children.forEach(function (item, index) {
152
+ if (item.type === 'image') {
153
+ var imgPath = [].concat((0, _toConsumableArray2["default"])(path), [index]);
154
+ imagePaths.push(imgPath);
155
+ imageNodes.push(item);
156
+ }
157
+ });
158
+ if (imagePaths.length > 0) {
159
+ _slate.Editor.withoutNormalizing(editor, function () {
160
+ imagePaths.reverse().forEach(function (path) {
161
+ _slate.Transforms.removeNodes(editor, {
162
+ at: path
163
+ });
164
+ });
165
+ var p = (0, _core.generateDefaultParagraph)();
166
+ p.children = imageNodes;
167
+ var newPath = _slate.Path.next(path);
168
+ _slate.Transforms.insertNodes(editor, p, {
169
+ at: newPath
170
+ });
171
+ });
172
+ return;
173
+ }
174
+ }
175
+ return normalizeNode([node, path]);
176
+ };
154
177
  return newEditor;
155
178
  };
156
179
  var _default = exports["default"] = withHeader;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "2.0.166",
3
+ "version": "2.0.167",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -71,5 +71,5 @@
71
71
  "publishConfig": {
72
72
  "access": "public"
73
73
  },
74
- "gitHead": "6dc46fa6f9dd24cf662a49a9704ff1df8179bf17"
74
+ "gitHead": "3aeaf24f2dc672bc32a6dc6d962542adb53a6f73"
75
75
  }